Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
分组密码仍然是对称密码学的主力军,ISO/IEC 29192-2应对了设计与标准化能在极低硬件资源消耗下实现、同时保持足够安全余量的分组密码的挑战。该标准目前指定了三种轻量级分组密码:PRESENT、CLEFIA以及后来加入的SIMON和SPECK家族。每种算法反映了不同的设计理念,适用于不同的应用约束条件。
PRESENT是一种代换-置换网络(SPN),块大小为64位,有两个密钥长度变体:PRESENT-80(80位密钥)和PRESENT-128(128位密钥)。它使用31轮,每轮包括轮密钥异或、并行应用于所有16个半字节的4×4 S盒,以及按位置换P层。S盒经过精心选择以最小化门数——在最紧凑形式中仅需4个输入与非门——同时提供强大的差分和线性密码分析抵抗力。
CLEFIA使用广义Feistel网络,块大小为128位,支持128、192和256位密钥。它采用两个不同的S盒(S0和S1)以及一个基于GF(2⁸)上4×4最大距离可分(MDS)矩阵的扩散矩阵。这使得CLEFIA在比纯SPN设计更少的轮数内实现强扩散特性。CLEFIA在硬件中约需3 000 GE,适用于第2类和第3类设备。
| 算法 | 块大小 | 密钥长度 | 轮数 | 结构 | 门数 (GE) | 吞吐量 (Mbps @100kHz) |
|---|---|---|---|---|---|---|
| PRESENT-80 | 64 | 80 | 31 | SPN | 1 570 | 12.9 |
| PRESENT-128 | 64 | 128 | 31 | SPN | 1 886 | 12.9 |
| CLEFIA-128 | 128 | 128 | 18 | Feistel (GFN) | ~3 000 | 17.8 |
| SIMON 64/128 | 64 | 128 | 44 | Feistel (ARX) | ~1 200 | 27.3 |
| SPECK 64/128 | 64 | 128 | 27 | ARX | ~1 050 | 35.6 |
该标准讨论了几种实现技术。串行化架构在多个时钟周期内复用单轮数据路径,以吞吐量为代价大幅减少面积。对于PRESENT,完全展开实现使用约7 000 GE但每时钟周期处理一个块;串行化版本可降至1 000 GE以下。选择取决于应用是需要高带宽流的实时加密还是短消息的偶尔认证。
ISO/IEC 29192-2建议轻量级分组密码实现包括一阶掩码以抵御差分功耗分析(DPA)。对于PRESENT,掩盖S盒并非易事,因为4位S盒不能干净地分解为更小的函数。阈值实现(TI)将每个敏感变量分割为多个份额,是推荐的方法,通常会使门数增加40–60%。
在芯片设计层面,布局布线也会影响密码模块的安全性。标准建议在设计评审中增加安全验证环节,通过DPA仿真工具评估实际功耗轨迹的信息泄露情况。对于量产芯片,建议随机抽样进行侧信道测试,以确保每颗芯片的安全性能一致性。此外,针对故障注入攻击(如时钟毛刺和电压毛刺),标准推荐采用冗余计算和故障检测机制——在加密完成后重新加密一次并比较结果,虽然吞吐量降低50%,但能有效抵御绝大部分故障攻击。
选择分组密码时还需考虑操作模式的影响。29192-2标准推荐使用CCM(Counter with CBC-MAC)和GCM(Galois/Counter Mode)等认证加密模式,这些模式在提供机密性的同时还能保证数据的完整性和真实性。对于内存极度受限的设备(RAM小于1 KB),CCM模式因其较低的内存需求而成为首选。而对于需要并行处理的高速应用,GCM模式可以利用硬件并行性实现更高的吞吐量。设计者应在协议设计阶段就明确操作模式的选择,避免后期因模式切换导致额外的开发和测试成本。此外,如果应用场景只需要机密性而不需要认证(如某些传感器数据广播场景),可考虑使用CTR模式以进一步降低计算开销,但必须搭配独立的MAC机制以防止数据被篡改。