Keccak提供了一种非常有用的<>XOFs。
发布于 2019-03-07 18:29:59
基于海绵结构的散列函数可以作为可扩展的输出函数吗?
是。
选择任何排列\pi\colon \{0,1\}^n \to \{0,1\}^n和容量c < n。例如,您可以选择Keccak-p,比如SHA-3用途,使用状态大小n = 1600和容量c = 2\lambda作为\lambda-bit安全级别--也就是说,SHAKE128使用c = 256来抵抗128位冲突(当然,输出至少是256位)。让r = n - c作为利率。
x_0 = 0^n开始,即n零位的字符串。将填充的输入消息m分解为r-bit块m_1 \mathbin\| m_2 \mathbin\| \cdots \mathbin\| m_\ell。m_i,更新状态x_i = \pi(x_{i-1} \oplus (m_i \mathbin\| 0^c));也就是说,用c = n - r零填充r-bit块m_i,然后将其转换为状态,并更改状态。x_\ell的第一个D26比特、\pi(x_\ell)的第一个r比特、\pi^2(x_\ell)的第一个r比特、\pi^3(x_\ell)的第一个r比特等等,直到生成所需的输出比特数为止。是否有任何用于硬件或软件实现的轻量级XOF?
现在有很多基于排列的设计。
Keccak有很多种大小: SHA-3使用Keccak-p的参数部分出于偏执,部分出于政治原因,但KangarooTwelve使用Keccak-p,即SHA-3回合数的一半,以及更高的r率,并且对最好的碰撞攻击仍有很好的安全裕度。您甚至可以调优Keccak参数,如果碰撞电阻对您的应用程序不重要的话,那么Keccak参数就会更小,而且还可以为更小的字大小提供其他选项。
NORX是一种512位或1024位的排列,它的设计类似于ARX网络,但采用了近似a + b \approx a \oplus b \oplus ((a \wedge b) \mathbin\ll 1),以使硬件设计更加便宜,因为整数加法对进位传播有很高的成本;金利是一种更新的设计,具有384bit的置换,改进了NORX。凯撒胜利者阿斯康使用另一个320位排列.
https://crypto.stackexchange.com/questions/67648
复制相似问题