1. 项目概述Loong——为物联网安全而生的对合型轻量级分组密码在物联网设备爆炸式增长的时代我们面临着一个核心矛盾日益增长的安全需求与设备本身极其有限的资源如计算能力、存储空间和功耗预算之间的冲突。传统的安全算法如AES虽然安全强度高但其硬件实现面积和功耗对于一枚微型的RFID标签或一颗纽扣电池供电的传感器来说往往过于“沉重”。这正是轻量级密码学Lightweight Cryptography诞生的土壤——它旨在为资源受限环境设计安全、高效的密码原语。今天要深入剖析的正是这个领域里一个颇具匠心的设计Loong密码家族。它不是一个简单的“简化版AES”而是一次从结构层面对SPN代换-置换网络的重新思考。其最引人注目的特性是“对合”Involutional结构这使得它的加密和解密过程完全一致仅需在轮常数使用顺序上做简单反转。这意味着在芯片上同一套电路既能加密也能解密在软件中同一段代码可以双向工作。对于空间和代码尺寸都捉襟见肘的嵌入式设备而言这种“一体两用”的特性无疑是巨大的优势。我接触过不少轻量级密码方案从经典的PRESENT、Piccolo到后来的GIFT、SKINNY。很多设计为了追求面积最小化在安全冗余或性能上做出了妥协或者在加/解密上需要两套不同的逻辑。Loong的设计思路让我眼前一亮它试图在结构创新、安全强度和硬件效率三者之间找到一个精妙的平衡点。接下来我将结合论文中的技术细节和我自己在硬件密码实现方面的经验带你彻底拆解Loong的设计哲学、实现要点以及在实际应用中需要关注的细节。2. Loong的核心设计思路与结构创新2.1 传统SPN结构的瓶颈与对合思想的引入经典的SPN结构以AES为代表通过多轮的S盒SubBytes非线性代换和线性扩散层ShiftRows, MixColumns的交替作用提供了强大的混淆与扩散能力。但其加解密过程是不对称的解密是加密的逆过程需要分别实现逆S盒和逆扩散矩阵。在硬件上这通常意味着需要两套不同的查找表或电路逻辑在软件上则需要维护两套不同的代码或预计算表。虽然可以通过一些数学技巧如利用AES加密表实现解密来部分复用但始终存在额外的开销。Loong的设计目标非常明确构建一个加密和解密完全相同的SPN结构。这听起来像是一个Feistel网络才有的特性如DES但Loong希望保留SPN更优的扩散效率。其解决方案是精心选择所有轮函数组件使它们都是“对合”的。一个对合函数满足f(f(x)) x即函数自身的逆就是它自己。如果S盒和扩散矩阵都是对合的那么整个轮函数在忽略轮密钥加的情况下也可能具备对合性质。注意这里有一个关键点容易被误解。一个完全由对合组件构成的轮函数其整体并不自动成为对合函数因为组件的顺序会影响结果。Loong的巧妙之处在于其特殊的组件排列和设计使得整个轮变换在结构上形成了对合。2.2 Loong算法规格详解Loong是一个分组长度为64位的分组密码家族根据密钥长度不同分为三个变体Loong-64: 64位密钥16轮迭代。Loong-80: 80位密钥20轮迭代。Loong-128: 128位密钥32轮迭代。其加密和解密过程可以概括为以下伪代码清晰展示了其简洁性state plaintext AddRoundKey(state, RoundKey, RoundConstant[0]) for i 1 to TotalRounds do SubCells(state) MixRows(state) MixColumns(state) SubCells(state) AddRoundKey(state, RoundKey, RoundConstant[i]) end for ciphertext state解密过程与加密完全一致唯一的区别是轮常数Round Constant的使用顺序是反的。如果加密时按RC0, RC1, ..., RCn的顺序使用解密时则按RCn, ..., RC1, RC0的顺序使用。密钥扩展极其简单对于64位版本轮密钥就是主密钥本身对于80位和128位版本轮密钥由主密钥的两个不同部分交替使用。这种极简的密钥调度虽然可能对抵抗某些相关密钥攻击带来挑战论文中也做了分析但其核心目的是最大化地节省硬件资源这是轻量级密码设计的典型取舍。2.3 核心组件的设计奥秘1. S盒SubCellsLoong采用一个4位输入/4位输出的S盒。这个S盒并非凭空创造而是基于Midori密码中的Sb0 S盒进行的改良。原版Sb0以其极小的门延迟0.24 ns和面积13.3 GE著称但它有一个“不动点”Fixed Point数量为4即有4个输入值经过S盒变换后输出等于自身。过多的不动点可能在某些攻击中成为弱点。 Loong的设计者修改了Sb0的布尔函数得到了一个新的对合S盒其不动点数量降为2同时在代数次数、差分均匀性、线性逼近概率等密码学指标上保持了与Sb0相当的水平最大差分概率和最大线性偏差均为2^{-2}。其布尔表达式在论文中给出通过NAND、NOR、AND、OR等基本门电路实现总计约22.65 GE门等效面积在面积和安全性之间取得了良好平衡。2. 扩散层MixRows 与 MixColumns这是Loong结构创新的精髓所在。它没有使用单一的线性层而是使用了两个不同的4x4 MDS最大距离可分矩阵M用于行混合MixRowsM用于列混合MixColumns。关键之处在于M和M互为逆矩阵M × M I其中I是置换矩阵且它们本身都是对合矩阵吗不完全是但它们通过一个巧妙的排列操作P联系在一起。具体操作如下MixRows: 将64位状态视为4x4的4比特字节矩阵对每一行左乘矩阵M。M的元素取自GF(2^4)域不可约多项式为x^4 x 1。MixColumns: 对每一列左乘矩阵M。论文中揭示了一个关键等价关系MixColumns(state)等价于先对状态矩阵进行转置P置换然后进行MixRows再进行一次转置。即M × state P( MixRows( P(state) ) )。这里的P置换是一个简单的4比特块重排操作在硬件上实现是零成本的仅仅是连线。这个等价关系是实现加解密一致性的核心。它意味着在硬件实现时我们实际上只需要实现一个MixRows逻辑和一个零成本的P置换就可以同时完成加密所需的MixRows和MixColumns。解密时流程完全一样因为组件都是对合的顺序也相同。3. 轮常数Round Constants轮常数由一个6位的仿射线性反馈移位寄存器LFSR生成其作用是消除算法的自相似性防止滑动攻击等。它将不同的轮次和不同的列区分开来。由于其值很小在硬件中通过简单的异或门加入开销极低。3. 硬件实现从理论估算到实际综合轻量级密码的优劣最终要在硅片上见真章。Loong论文提供了非常详细的理论面积估算和实际综合结果这对于评估其实际应用价值至关重要。3.1 理论性能估算门级拆解论文对Loong-64一轮操作所需的门电路进行了细致的统计这是评估硬件友好性的基础轮密钥加AddRoundKey64比特的异或操作。每个异或门等效为2.67 GE因此每比特状态成本为 1 * 2.67 2.67 GE这里需要仔细看64比特异或需要64个异或门总成本170.88 GE分摊到64比特状态每比特为2.67 GE。但论文中计算每比特成本时似乎将轮密钥加和后续操作合并考虑了。S盒层SubCells共16个相同的4比特S盒。每个S盒需要11个NAND、5个NOR、2个AND、3个OR门。换算后每比特状态需要4个NAND4 GE和1.25个AND1.25 * 1.33 ≈ 1.66 GE。行混合MixRows实现矩阵M乘法需要72个异或门24个用于系数乘法48个用于元素加法。更新64位状态每比特成本为 72/64 * 2.67 ≈ 3.00 GE论文计算结果是1.125 XOR/比特即约3.00 GE/比特。列混合MixColumns根据之前的等价关系在优化实现中MixColumns被P置换 MixRows P置换替代。由于P置换零成本且MixRows已计算因此列混合没有额外的门成本。这是Loong在硬件优化上的一个关键优势。第二轮S盒与第一轮相同。将以上所有每比特成本相加注意论文中一轮函数包含两次S盒和一次MixRows并考虑门等效换算NAND1 GE, AND/OR1.33 GE, XOR2.67 GE得到每比特内部状态的理论面积成本约为11.33625 GE。这个数字低于PRESENT、Piccolo等同时代许多轻量级密码显示了其理论上的面积优势。3.2 两种硬件架构的实现与对比论文实现了两种典型的硬件架构轮迭代架构和串行化架构。这是轻量级密码硬件设计的经典权衡面积 vs. 速度/吞吐量。1. 轮迭代架构Round-based Architecture这是性能优先的设计。每一轮操作在一个时钟周期内完成。数据通路包含完整的64位异或单元、16个并行的S盒、MixRows模块、控制逻辑和计数器等。实现结果使用UMC 0.18μm工艺库在100KHz时钟频率下综合。面积分解64位数据寄存器384 GE64位密钥寄存器Loong-64298.88 GE16个S盒16 * 22.65 362.4 GE轮密钥加64位异或 轮常数异或170.88 42 212.88 GEMixRows模块192.24 GE控制逻辑等17 GELoong-64总面积1467.4 GELoong-8080位密钥寄存器1542.12 GELoong-128128位密钥寄存器1766.28 GE这个面积是什么概念作为对比论文中列出PRESENT-80的轮迭代架构支持加解密面积约为2330 GEPiccolo-80约为2026 GE。Loong-64在更小的密钥长度下面积优势明显。更重要的是由于对合结构这个面积同时支持了加密和解密而传统SPN密码若需支持解密面积通常要增加30%-50%。2. 串行化架构Serialized Architecture这是面积优先的极致优化。数据通路被缩减到4位宽即一次处理一个半字节。整个芯片只实例化1个S盒和1个MixRows计算单元通过多个时钟周期循环使用来完成一轮甚至多轮的计算。面积大幅节省S盒从16个减少到1个节省 (16-1)*22.65 ≈ 339.75 GE。MixRows模块大幅简化因为每次只计算4比特的矩阵乘法。控制逻辑变得更复杂需要状态机控制多路复用和数据流但总面积仍显著下降。实现结果Loong-64总面积835.87 GELoong-80总面积922.67 GELoong-128总面积1146.83 GE串行化架构的面积达到了非常极致的水平低于900 GE的Loong-64非常适合对成本极其敏感的RFID标签或传感器节点。当然代价是吞吐量急剧下降加密一个64位分组需要更多的时钟周期。实操心得在选择架构时必须明确应用场景。如果是用于小额支付卡或门禁卡每次交易数据量小但对响应时间不敏感串行化架构是绝佳选择。如果用于传感器网络中周期性上报的加密数据帧可能有几十字节则需要计算在目标时钟频率下串行化架构加密整个数据帧的时间是否在允许的延迟范围内。通常轮迭代架构提供了更好的吞吐率与面积比。4. 安全性分析如何抵御主流密码攻击一个密码算法再轻量如果安全性不过关一切归零。Loong论文对其抵抗各种密码分析的能力进行了系统的评估。4.1 差分与线性密码分析DC LC这是评估分组密码安全性的黄金标准。核心思想是分析“活动S盒”的最小数量。因为S盒是非线性的源头差分特征概率或线性逼近概率的上界由活动S盒的数量决定。方法作者使用混合整数线性规划MILP自动化工具搜索Loong在差分和线性分析下的最小活动S盒数量下界。结果如表4所示Loong每4轮平均有32个活动S盒高于AES的25个。对于Loong-6416轮其差分概率上界为2^{-256}线性概率偏差上界为2^{-129}远低于通常认为的安全阈值如2^{-64}因此能够有效抵抗差分和线性攻击。4.2 相关密钥攻击Related-Key Attack由于Loong的密钥调度非常简单尤其是64位版本轮密钥就是主密钥相关密钥攻击是需要重点考察的方面。攻击者利用不同密钥之间的数学关系来恢复密钥。分析论文借鉴了LED密码的分析方法。对于Loong-64在相关密钥差分路径中至少每2轮有1轮是活动的因此16轮至少有64个活动S盒差分概率上界为2^{-128}。对于80位和128位版本由于使用了两个轮密钥数组交替分析显示其相关密钥差分概率上界分别为2^{-160}和2^{-256}。这些数值表明Loong在相关密钥模型下也具有足够的安全冗余。4.3 代数攻击与XSL攻击这类攻击试图将密码算法表示为大型多元方程组然后求解方程组来恢复密钥。代数复杂度Loong的S盒可以表示为8个变量上的21个二次方程。对于Loong-6416轮加密共涉及512个S盒整个系统可以描述为涉及4096个变量的10752个二次方程。这个方程的规模和复杂度使得直接求解在计算上不可行。XSL攻击复杂度论文计算了XSL攻击对Loong的估计复杂度WFLoong-64约为2^{152}远高于穷举密钥的2^{64}。因此Loong也能抵抗此类代数攻击。4.4 中间相遇攻击Meet-in-the-Middle Attack这种攻击通过将密码算法分成两部分分别从明文和密文向中间计算寻找匹配的中间状态来减少密钥搜索空间。Loong的防御得益于其快速的扩散效应两轮操作即可实现64位数据的完全扩散用于部分匹配Partial Matching的轮数上界被限制为3轮。结合“分割与剪接”技术在最坏情况下中间相遇攻击最多只能分析7轮。而Loong-64有16轮因此该攻击是无效的。注意事项密码分析是一个不断发展的领域。论文中的安全性评估是基于发表时的主流分析方法。任何新密码算法都需要经过密码学界的长期公开评估和挑战。虽然Loong的设计看起来是稳健的但在将其用于高安全等级的应用前关注后续是否有新的分析结果出现是至关重要的。5. 软件实现考量与性能对比虽然Loong主要为硬件优化设计但其对合和对称性在软件实现上也有好处。代码复用加解密使用同一套代码只需反转轮常数数组。这减少了代码体积对于Flash空间有限的微控制器MCU有益。基于4比特的操作Loong的状态操作以4比特半字节为单位这与许多8位、32位CPU的字节/字操作并非完美对齐可能会在软件实现中引入一些位掩码和移位操作影响一些速度。论文中未优化的C代码在2.3GHz的i5 CPU上Loong-64的加密速度约为18.4万周期/分组。作为参考一个高度优化的AES-128软件实现可能只需要几十个周期/字节一个分组16字节速度要快得多。这提醒我们硬件友好的密码在通用CPU上不一定快反之亦然。适用场景Loong的软件实现更适合本身已集成硬件加速单元如针对位操作优化的指令集的微控制器或者对代码尺寸极度敏感而对纯软件速度要求不高的场景。6. 总结与工程实践建议Loong密码家族代表了一种在轻量级密码设计上的清晰思路通过结构创新对合SPN来从根本上降低加解密双功能实现的成本同时在组件层面S盒、MDS矩阵进行精心优化确保在极小面积下仍保有可证明的安全强度。在实际工程中考虑采用Loong时建议遵循以下步骤需求明确首先确认你的设备是否真的属于“资源极度受限”范畴。如果主频有几十MHz内存有几KB可能传统的AES尤其是带有硬件加速的MCU是更标准、更受审计的选择。Loong的用武之地是那些逻辑门数量需要精确到个位、静态功耗必须极低的场景。架构选型轮迭代架构适用于对延迟或吞吐率有一定要求的场景如需要快速完成单次认证的智能卡。串行化架构适用于对成本极度敏感、数据吞吐要求极低的场景如被动式RFID标签、一次性传感器等。安全参数选择根据所需的安全级别选择变体。Loong-6464位密钥适用于短期或低价值数据保护对于需要长期安全性的应用应考虑Loong-80或Loong-128。记住密钥长度也直接影响硬件面积更大的密钥寄存器。实现与验证使用标准单元库按照论文的方法使用目标工艺的标准单元库进行综合、布局布线获取精确的面积、时序和功耗报告。严格测试必须使用附录中提供的测试向量进行完整的功能验证确保加解密正确性。此外应进行随机向量测试和故障注入测试如果适用。侧信道分析评估对于许多IoT设备物理安全性至关重要。需要评估实现是否容易受到功耗分析SPA/DPA或电磁分析攻击。可能需要引入掩码、隐藏等防护技术但这会增加面积开销需要重新权衡。关注后续分析密码学是动态的。在将Loong投入产品前应检索是否有新的密码分析论文发表评估其安全性结论是否仍然成立。Loong的设计展示了密码工程师如何在严格的约束下进行创造性思考。它可能不是所有场景下的最优解但对于那些面积、功耗就是硬性天花板的特定物联网应用而言它提供了一个兼具优雅结构、可证明安全性和卓越硬件效率的值得认真考虑的选项。正如其名“龙”所寓意的那样在轻量级密码的天地里它虽身形小巧却力图在安全与效率的平衡中展现出强大的力量。