ISO/IEC 29167-13 — RFID 安全 Grain-128A 流密码套件

信息技术 — 自动识别与数据采集技术 — 第13部分:安全服务 Grain-128A 密码套件

一、Grain-128A:面向 RFID 的流密码

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 应用来说是天作之合。

Grain-128A 在 0.18 µm 工艺中的硬件占用约为 2,130 个等效门——小于 AES-128(3,400 GE)但大于 PRESENT-80(1,570 GE)。然而,其流密码特性意味着零填充开销:3 字节的 Read 命令仅需要 3 字节的密钥流,没有块填充浪费。

该密码基于两个移位寄存器构建:一个 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. 数据异或 加密/解密载荷 双向 —(组合逻辑)
Grain-128A 的一个关键工程优势在于密钥流生成可以在所有数据接收完成之前开始。初始化阶段一完成,标签就可以预计算密钥流字节并将其存储在小 FIFO 缓冲区中。这种超前生成实现了零延迟加密:加密数据在最末明文位到达后的一个时钟周期内即可使用,而 AES-128 块加密需要 240 个以上的时钟周期。

消息认证模式采用密文反馈方法。加密消息后,标签通过将密文反馈回密码状态额外 64 个时钟周期来计算认证标签。生成的 64 位 MAC 附加到加密消息后。读写器执行相同的计算来验证 MAC。这种集成的认证加密方案消除了对独立 MAC 引擎的需求,相比分别实现加密和认证可减少约 15% 的总门数。

三、安全考量与硬件实现

Grain-128A 针对暴力密钥搜索提供 128 位安全性。该密码自推出以来已受到广泛分析,截至 2026 年,最佳已知攻击仅针对减轮变体。完整的 256 时钟初始化提供了对相关密钥攻击和时间-内存-数据权衡攻击的强大抵抗力。128 位内部状态大小将密钥流长度限制在 LFSR 状态重复前的 2^64 位,这远远超过任何实际 RFID 使用场景。

Grain-128A 与所有流密码一样,有一个关键安全要求:绝不能使用相同的(密钥,IV)对来加密两个不同的消息。如果密钥流被重用,攻击者可以对两个密文进行异或以抵消密钥流,从而获得明文的异或结果。该标准强制要求读写器管理所有事务中的 IV 唯一性,通常通过使用单调递增计数器作为 IV 的一部分来实现。标签应拒绝重复的 IV 值。

在 RFID 标签上的 Grain-128A 硬件实现相对简单。两个 128 位移位寄存器需要 256 个触发器,非线性反馈和输出函数需要约 800 门组合逻辑。总面积为 2,130 GE,使其成为超紧凑型 PRESENT-80 和功能更强的 AES-128 之间的一个有吸引力的中间选择。在 100 kHz 下功耗约为 2.5 µW(0.18 µm 工艺),完全在标签的功率预算内。对于初始化,标签需要连续取电 2.56 毫秒——读写器可以通过在计算期间维持连续载波来支持这一持续时间。

Grain-128A 实现中的一个特定漏洞来自重新同步机制。如果标签和读写器失去同步(例如由于标签掉电),密码状态将出现分歧,所有后续解密将失败。该标准定义了需要新 IV 交换的重新同步过程。然而,在重新同步窗口期间,标签可能通过错误消息泄露其状态。实现应限制重新同步尝试次数并实施指数退避,以防止暴力状态恢复攻击。

四、常见问题

问:在 RFID 设计中何时应选择 Grain-128A 而非 AES-128?
当(1)消息大小较小且可变(避免块填充浪费),(2)标签具有中等面积限制(2,130 GE 对比 3,400 GE),以及(3)需要零延迟加密时,Grain-128A 更优。当需要经过充分验证的 FIPS 批准密码作为合规要求时,它不太适合。
问:Grain-128A 如何处理消息完整性?
通过标准中定义的密文反馈模式。MAC 在加密消息上计算,确保使用单个密码核心同时实现机密性和完整性。这种组合 AE 模式在标准的附录 B 中规定。
问:Grain-128A 能否用于随机数生成?
可以。当加载随机密钥和已知 IV 时,输出的密钥流可用作符合 NIST SP 800-90A 的确定性随机位生成器(DRBG)。这种双重用途允许同一硬件同时服务于加密和随机数生成功能。
问:如果在密钥流生成期间标签断电会发生什么?
密码状态丢失,与读写器的同步被破坏。标签必须使用新的 IV 交换重新初始化。这在无源 RFID 中很常见,这就是为什么 Grain-128A 的快速重新初始化(2.56 毫秒)相比可能需要重新传输整个数据块的分组密码是一个实际优势。

发表回复

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