SHA256算法魔改版GMN256算法设计原理详解
SHA256算法为美国第二代哈希算法标准,关于该算法的介绍和设计细节详见美国第2代哈希散列算法之SHA-256。为防止SHA256算法不能抵抗未知的攻击方法(未来有可能会出现新的攻击方法),本文提出了SHA256算法的改进版本GMN256。在不改变SHA256算法的整体结构和其它参数的情况下,通过对其消息扩展算法和压缩函数进行相应修改。相比较于SHA256算法,GMN256算法的安全性得到较大提升,同时两者的运算效率相差无几。
GMN256算法的优缺点:
(1)把压缩函数中的常量K放到了消息扩展算法中,这加强了消息M与常量K之间的复杂依赖关系和加快了雪崩效应。
(2)在压缩函数中使用相同的消息字来更新2个不同寄存器的值,而且使用两个线性扩散函数LLL0和LLL1作用于这两个消息字,这不但加快了算法的雪崩效应,同时提高了GMN256抵抗碰撞攻击和原像攻击的能力。
以下我将给出GMN256的算法流程及其设计细节,红色高亮显示部分为GMN256与SHA256两者之间的不同之处。
GMN256算法的杂凑值计算过程可以表示为:
GMN256算法中的常量有:
(1)8个移位寄存器的初始值为:
(2)常数K:轮常数K0,...,K63取自前64个素数立方根小数部分的前32比特。
(3)8个混淆和扩散函数为:
GMN256杂凑函数的三大操作:消息填充算法、消息扩展算法、消息压缩算法。
- 消息填充算法Pad:
对输入的消息进行填充,使其长度变为512的倍数。填充方法是在原始消息末尾添加一个1位,然后添加一定数量的0位,最后再添加64位的消息长度,使得填充后的消息长度为512的整数倍。然后将填充后的消息以512位为单位进行分组。如(M0||…||Mn-1=Pad(M))
(2)消息扩展算法MsgExtend(将16个32位消息字扩展成64个)
(其中Mj(i)为第i个512bit消息块的第j个32位字)
(3)消息压缩算法CF
总结:
GMN256算法完全继承了SHA256的优点和改进了一些问题,以期待能够抵抗未知的攻击方法。虽然两者的整体结构都为MD结构,天然存在一些固定的弱点,但是不可否认地是,GMN256的安全强度要高于SHA256。大家有什么不同的想法,欢迎在评论区中一起讨论,毕竟众人拾柴火焰高。