ISO/IEC 29192-5:轻量级密码学 — 第5部分:哈希函数

PHOTON、SPONGENT以及受限设备上的轻量级哈希技术

密码学哈希函数是数据完整性、数字签名、随机数生成和许多认证协议的基础构建块。在受限设备上,传统哈希函数如SHA-256需要大量计算资源和内存。ISO/IEC 29192-5标准化了主要基于海绵结构的轻量级哈希函数,在显著降低硬件占地的同时实现相同安全特性,使其适用于RFID标签、传感器节点和嵌入式控制器。

29192-5中所有算法使用的海绵结构通过固定宽度的内部置换吸收输入数据并挤出输出。这种统一结构意味着相同的核心硬件既可以用于哈希,也可以(经过小幅修改)用于认证加密——这是一个显著的 design reuse 优势。

PHOTON——基于海绵的轻量级哈希家族

算法家族概览

PHOTON是一个包含五种哈希函数的家族,输出范围从80到256位:PHOTON-80/20/16、PHOTON-128/16/16、PHOTON-160/36/36、PHOTON-224/32/32和PHOTON-256/32/32。每种使用内部类AES的置换(Pₙ),具有4×4或5×5字节状态,运行12轮。置换采用字节替代(使用轻量级4位S盒)、行移位、列混合和加常数。最小的成员PHOTON-80/20/16在硬件中仅需约1 700 GE,同时为短消息提供80位抗原像安全性和40位抗碰撞安全性。

PHOTON的最小变体的抗碰撞安全性仅为40–56位,对于需要强碰撞保证的应用(如证书透明性日志)不足。对于大多数物联网完整性检查用例(固件哈希、消息认证),抗原像性是更相关的属性,PHOTON在此提供80–128位安全性。

SPONGENT——可并行的轻量级哈希

设计与性能

SPONGENT使用类似的海绵框架,但基于PRESENT型S盒的更小内部置换,使其在同等安全级别上比PHOTON更加紧凑。SPONGENT-88/80/8在约1 050 GE中提供80位抗原像安全性——这是有史以来标准化最小的哈希实现之一。代价是较低的吞吐量:SPONGENT每时钟周期仅产生1或4位,而PHOTON每周期产生16–32位。

算法 输出(位) 抗原像安全性 抗碰撞安全性 门数(GE) 吞吐量(位/周期)
PHOTON-80/20/16 80 80 40 1 700 16
PHOTON-128/16/16 128 128 64 2 100 16
PHOTON-256/32/32 256 256 128 4 600 32
SPONGENT-88/80/8 88 80 40 1 050 1
SPONGENT-128/128/8 128 128 64 1 760 1
SHA-256(紧凑版) 256 256 128 ~5 000 32+

工程设计洞见

哈希函数选择标准

该标准指导实现者根据四个参数进行选择:所需抗原像安全级别、最大消息长度、可用门预算和吞吐量要求。对于认证16字节挑战的RFID标签,PHOTON-80/20/16是最优选择。对于需哈希数千字节数据日志的传感器网络,PHOTON-256/32/32的吞吐量可能证明其较大面积是合理的。当绝对最小面积是最重要考量时,SPONGENT表现出色。

与其他29192部分集成

第5部分的哈希函数设计为与第4部分的数字签名方案(先哈希后签名范式)以及第2和3部分所涉及的密钥派生用例自然配对。一个值得注意的应用是基于哈希的消息认证码(HMAC)结构,它可以建立在任何29192-5哈希函数之上以提供消息认证——尽管第6部分也为这一目的定义了专用轻量级MAC算法。

从工程实现角度来看,海绵结构的一个突出优势是其灵活的输入输出长度支持。开发者可以根据实际应用需求动态调整哈希输出长度,而无需更换算法核心。例如,在固件验证场景中,使用PHOTON-256计算完整固件的哈希值;而在随机数生成场景中,相同的外围电路可以产生任意长度的伪随机序列。这种多功能性使得海绵结构成为轻量级密码实现中性价比最高的选择之一,一颗芯片即可覆盖哈希、随机数生成和认证加密等多种安全功能。

在实际产品开发中,哈希函数的功耗和延迟特性同样需要纳入考量。对于电池供电的传感器设备,PHOTON-80/20/16的单次哈希运算能耗仅为SHA-256的约三分之一,这意味着在相同电池容量下可多进行数百万次认证操作。SPONGENT由于每周期仅输出1位,其延迟较长但峰值功耗更低,更适合能量收集型设备(如太阳能或振动供电的传感器)。设计者应在功耗模拟器中导入候选哈希函数的功耗模型,结合目标应用的数据量和认证频率,进行系统级的能源预算分析,从而在安全性与续航之间找到最佳平衡点。

在为物联网设备实施空中固件更新(FOTA)机制时,使用PHOTON-256对签名的更新镜像进行完整性验证,可在安全性和计算开销之间提供平衡的权衡。在48 MHz的典型ARM Cortex-M0上,100 kB固件镜像的哈希计算只需不到200 ms。
不要为了提高吞吐量而截断轻量级哈希函数的输出,而不理解对碰撞抵抗力的影响。例如,将PHOTON-80截断为40位会使抗原像安全性减半。始终使用输出大小与安全需求相匹配的变体。

常见问题

问1:我可以在区块链或分布式账本节点中使用PHOTON或SPONGENT替代SHA-256吗?
对于轻量级物联网区块链节点(如IOTA或类似基于DAG的账本),较小的哈希函数可以工作。对于比特币/以太坊风格的工作量证明,SHA-256仍然是标准。PHOTON-256以更小的硬件成本提供与SHA-256相似的安全性,可用于嵌入式节点上的交易哈希。
问2:这些哈希函数适用于密码哈希和存储吗?
不——轻量级哈希函数设计追求快速和小面积,这使得它们不适合密码存储,因为密码存储需要慢速、内存密集型函数(如Argon2)来抵抗暴力破解攻击。
问3:实现海绵结构时如何处理比率和容量参数?
该标准为每个变体明确定义了这些参数。比率(r)决定吞吐量,容量(c)决定安全性。常见规则:抗碰撞安全性 = c/2,抗原像安全性 = c。
问4:PHOTON支持的最大消息长度是多少?
该标准未施加明确限制,但海绵结构在安全保证降低之前最多可吸收2^(c/2)个块。对于c = 256的PHOTON-256/32/32,此限制为2¹²⁸个块——对于任何实际物联网应用而言实际上是无限的。

发表回复

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