ISO/IEC 29192-3:轻量级密码学 — 第3部分:流密码

Trivium、Enocoro以及面向受限平台的轻量级密钥流生成技术

流密码在轻量级密码学中占有特殊地位,因为其内部状态机自然地映射到小型、快速的数字电路。与必须按固定大小块处理数据的分组密码不同,流密码生成连续的密钥流,可与任意长度的明文进行异或——这一特性在具有可变长度数据包的协议中尤为有价值。ISO/IEC 29192-3标准化了在实现极紧凑硬件占地的同时提供至少80位安全性的轻量级流密码。

轻量级流密码的决定性优势在于加密和解密数据路径完全相同(与密钥流异或)。与分组密码相比,这使硬件验证负担减半——分组密码的加密和解密通常使用不同的电路路径。

Trivium——面向硬件的密钥流生成器

设计与结构

Trivium使用288位内部状态,组织为三个非线性反馈移位寄存器(NLFSR),长度分别为93、84和111位。在每个时钟节拍,通过提取特定位位置、通过AND和XOR门馈送并循环寄存器来更新状态。该设计的卓越之处在于其简洁性:整个密码可以用不到20行C代码描述,硬件实现包含密钥和IV设置逻辑仅需约2 600 GE。每个时钟周期产生一个密钥流比特,吞吐量为每周期1比特。

Trivium的密钥和IV设置需要1 152个初始时钟周期才能准备好密钥流。在设备频繁更换密钥(如每包一密钥)的应用中,必须将此设置延迟计入吞吐量计算。对于10 MHz下100字节的数据包,这大约造成14%的吞吐量损失。

Enocoro——另一种NLFSR设计

与Trivium的比较

Enocoro是标准中纳入的轻量级流密码家族。Enocoro-128v2使用320位内部状态,每时钟周期产生64位密钥流,以适度的面积增加(~3 500 GE)为代价提供比Trivium更高的吞吐量。Enocoro的设计特别注重抵抗时间-内存-数据权衡攻击,当IV长度较短时,这可能是Trivium的一个顾虑。

参数 Trivium Enocoro-128v2 Grain-128a
内部状态(位) 288 320 256
密钥长度(位) 80 128 128
每周期密钥流 1 位 64 位 1 位
门数 (GE) ~2 600 ~3 500 ~2 900
设置周期数 1 152 640 256
目标安全强度 80 位 128 位 128 位

工程设计洞见

操作模式考量

流密码默认在同步模式下运行——密钥流仅取决于密钥和IV,而与明文或密文无关。这使得它们天然可并行化,适用于流水线硬件。然而,这也意味着传输中的比特错误以1:1比例传播(无错误扩展),这在嘈杂无线信道中是有利的。缺点是没有内置认证。工程师必须将流密码与单独的MAC(如ISO/IEC 29192-6中的那些)结合使用以提供认证加密。

侧信道和故障攻击对策

该标准要求实现记录对简单功耗分析(SPA)和故障注入的抵抗能力。对于Trivium,线性反馈结构使得某些故障注入攻击在状态可被冻结时是可行的。推荐的对策包括双轨逻辑、时间冗余和状态掩码技术,这些技术会增加约15–30%的面积成本。

值得注意的是,流密码的同步特性决定了发送端和接收端必须保持精确的状态同步。在实际无线通信中,数据包丢失是常见现象,因此协议设计必须在每个数据包中携带足够的状态信息(如帧序号或IV),以便接收端在检测到不同步时能够重新同步。ISO/IEC 29192-3建议在每个数据包头部显式携带同步信息,而非依赖于隐式计数,这可以显著降低同步丢失导致的系统故障率。

对于短数据包无线协议(如蓝牙低功耗广播信道或IEEE 802.15.4信标帧),Trivium的每包低设置开销和极小的门数使其成为当今最高效的加密原语之一。
切勿重复使用相同的(密钥,IV)对流密码。由于密钥流是确定性的,重复使用相同的密钥和IV会产生相同的密钥流,对两个密文进行异或会抵消密钥流,从而暴露明文的异或值。这是流密码最常见的实现错误。

流密码在物联网中的应用不仅限于数据加密。在LoRaWAN等远程低功耗网络中,Trivium可用于生成伪随机跳频序列,提高抗干扰能力。在蓝牙低功耗(BLE)的广播模式中,流密码可以保护广播数据包的隐私性,防止攻击者通过被动监听获知设备类型和状态。此外,某些专有物联网协议将Trivium作为物理层加扰方案,使信号在频谱分析仪上呈现为类噪声特性,从而提供一定程度的隐蔽通信能力。这些多样化的应用场景充分体现了流密码在轻量级安全解决方案中的核心地位。

常见问题

问1:Trivium能否在8位MCU上高效实现?
尽管Trivium为硬件设计,其小状态(288位)可舒适地容纳在大多数8位MCU的寄存器文件中。逐位软件实现可以达到每字节约4–8周期,这对许多低数据速率传感器应用是可接受的。
问2:一个密钥/IV对能安全加密的最大数据量是多少?
该标准建议Trivium在单个密钥/IV组合下的限制为2⁴⁰位(约128 GB)。超过此值,内部状态碰撞的概率变得不可忽视。
问3:Trivium与AES-CTR模式在轻量级使用中相比如何?
AES-CTR是建立在分组密码之上的流密码模式。紧凑型AES-128实现需要约3 400 GE,而Trivium仅需约2 600 GE。对于限制在3 000 GE以下的应用,Trivium是首选。
问4:Trivium是否有任何专利或许可限制?
Trivium提交给eSTREAM项目并明确置于公共领域。无任何许可限制。Enocoro也作为开放规范发布。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注