密码杂凑算法Banana512原理详解
黄金龙
QQ1435271638
Banana512属于杂凑函数,与美国的SHA256(安全哈希算法)类似,都属于信息摘要算法,又被称为Hash算法,Hash算法主要用于完整性校验和提高数字签名的有效性。
Hash算法的输入为任意长度的消息,输出为固定长度的Hash值,该输出就是散列值。通过给定的消息正向计算Hash值是简单的,但是通过Hash值逆向计算对应的消息是困难的。
Banana512算法的亮点
(1)压缩函数的每一轮状态更新都使用到了全部的16个32位消息字,这使得算法的抗碰撞性大大增强,加上本算法使用S盒作为非线性部件,这使得模减差分分析和比特追踪法对本算法均已不再奏效。
(2)压缩函数中的轮函数使用Lai-Massey结构作为混淆扩散组件,这使得轮函数的扩散性好,同时使用Lai-Massey结构很容易构造满足双射特性的轮函数。
Banana512算法采用了与SHA256相同的MD结构,Banana512的消息填充规则与SHA256一致,只是寄存器的个数变为16个,同时没有消息扩展算法,压缩函数也不太一样。Banana512压缩函数的每一轮更新全部16个寄存器的值,更新过程使用了全部的512Bit消息,也就是16个32位消息字。Banana512密码杂凑算法的消息分组长度为512bit,摘要长度为512bit。压缩函数状态大小为512bit,共64步,每步更新全部16个寄存器,这加强了算法的雪崩效应。压缩函数采用了分组密码中的Lai-Massey结构,同时压缩函数寄存器的状态更新算法混合使用了模加运算和异或运算,这比单纯的使用模加运算或者异或运算更加复杂和安全。压缩函数为双射,这是为了保证输出杂凑值各比特的平衡性。
Banana512密码杂凑算法的初始值IV共512bit,由16个32bit字(IV0∽IV15)串联而成,具体值如下:
Banana512密码杂凑算法的常量
Banana512密码杂凑算法的常量为64个32bit字(CN0∽CN63),具体值如下:
Banana512密码杂凑算法的消息填充
对长度为l(l<2^64)比特的消息m,Banana512密码杂凑算法首先将比特“1”添加到消息的末尾,再添加k个“0”,k是满足(l+k+1)=448Mod512的最小非负整数。然后再添加一个64位比特串,该比特串是消息长度的二进制表示。填充后的消息m`的长度是512 的倍数。
Banana512密码杂凑算法的迭代压缩过程
将填充后的消息m`按512bit进行分组:m`=B(0)B(1)…B(n-1),其中n=(l+k+65)/512。对m`按如下方式迭代:
FOR i=0 TO (n-1)
V(i+</