Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 29167-13 规定了 Grain-128A 流密码作为 RFID 安全服务的密码套件。Grain-128A 是 eSTREAM 项目决赛入围算法 Grain v1 的演进版本,由 Hell、Johansson 和 Meier 设计。它是一种轻量级流密码,使用 128 位密钥和 96 位初始化向量(IV)生成密钥流用于数据加密。与对固定大小数据块操作的 AES-128 和 PRESENT-80 等分组密码不同,Grain-128A 生成连续的密钥流,可以与任意长度的数据进行异或——这对于消息大小从几个字节(认证令牌)到数百个字节(用户数据读取)不等的 RFID 应用来说是天作之合。
该密码基于两个移位寄存器构建:一个 128 位线性反馈移位寄存器(LFSR)和一个 128 位非线性反馈移位寄存器(NFSR)。LFSR 确保长周期和良好的统计特性,而 NFSR 引入非线性以抵抗代数和相关攻击。输出函数通过非线性布尔函数组合两个寄存器的位来生成密钥流位。在初始化阶段,密钥和 IV 被加载到寄存器中,密码被时钟驱动 256 次而不产生输出,使状态充分混合。
该标准定义了 Grain-128A 在 SMP 框架内的两种主要功能操作:(1)使用生成的密钥流进行加密数据传输,以及(2)使用密文反馈模式进行消息认证。对于加密,读写器和标签首先通过 Authenticate 命令交换 IV 来同步其密码状态。一旦同步,双方生成相同的密钥流并用于加密和解密后续消息。
| 阶段 | 操作 | 数据流 | 所需时钟周期 |
|---|---|---|---|
| 1. IV 交换 | 读写器发送 96 位 IV | 读写器 → 标签 | —(空中传输) |
| 2. 初始化 | 加载密钥 + IV,256 个时钟 | 内部(标签) | 256 @ 100 kHz = 2.56 毫秒 |
| 3. 密钥流生成 | 生成 N 位 | 内部(双方) | N @ 1 位/时钟 |
| 4. 数据异或 | 加密/解密载荷 | 双向 | —(组合逻辑) |
消息认证模式采用密文反馈方法。加密消息后,标签通过将密文反馈回密码状态额外 64 个时钟周期来计算认证标签。生成的 64 位 MAC 附加到加密消息后。读写器执行相同的计算来验证 MAC。这种集成的认证加密方案消除了对独立 MAC 引擎的需求,相比分别实现加密和认证可减少约 15% 的总门数。
Grain-128A 针对暴力密钥搜索提供 128 位安全性。该密码自推出以来已受到广泛分析,截至 2026 年,最佳已知攻击仅针对减轮变体。完整的 256 时钟初始化提供了对相关密钥攻击和时间-内存-数据权衡攻击的强大抵抗力。128 位内部状态大小将密钥流长度限制在 LFSR 状态重复前的 2^64 位,这远远超过任何实际 RFID 使用场景。
在 RFID 标签上的 Grain-128A 硬件实现相对简单。两个 128 位移位寄存器需要 256 个触发器,非线性反馈和输出函数需要约 800 门组合逻辑。总面积为 2,130 GE,使其成为超紧凑型 PRESENT-80 和功能更强的 AES-128 之间的一个有吸引力的中间选择。在 100 kHz 下功耗约为 2.5 µW(0.18 µm 工艺),完全在标签的功率预算内。对于初始化,标签需要连续取电 2.56 毫秒——读写器可以通过在计算期间维持连续载波来支持这一持续时间。