基于ARX结构(模加运算&循环移位&异或运算)的密码杂凑算法Lemon512
黄金龙
QQ1435271638
密码杂凑算法
密码杂凑算法也称作“散列算法”或“哈希算法”,现在的密码行业标准统称其为密码杂凑算法,简称“杂凑算法”或“杂凑函数”。密码杂凑算法对任意长度的消息进行压缩,输出定长的消息摘要或杂凑值,可用于数字签名、完整性保护、安全认证、口令保护等。用于完整性保护时,杂凑算法常常与密钥一同使用,生成的杂凑值称为MAC,这样的杂凑算法称为带密钥的杂凑算法(Keyed-hash Message Authentication Code,HMAC)。目前比较常见的密码杂凑算法有MD5、HAVAL、RIPEMD、SHA-0、SHA-1、SHA-2、SHA-3和SM3等。
ARX结构型密码算法
采用ARX结构的密码算法仅使用模加运算&循环移位&异或运算,它的代数结构非常简单,非常易于软硬件实现。模加运算作为唯一的非线性运算,它提高了算法的非线性复杂度。循环移位从字层面为ARX密码提供了扩散能力,而异或操作从比特层面为ARX密码提供了混淆能力,模加运算提高了对 ARX 型密码算法的分析的困难程度。ARX类型算法具有良好的扩散和混淆性质,传统的差分攻击、线性攻击和代数攻击等密码分析方法针对该类算法的攻击效果通常并不理想。由于在效率、安全性和易实现性等方面的优势,ARX 型密码得到了广泛应用,多个国际对称密码标准都采用了ARX型设计。
Lemon512算法简介
Lemon512为基于ARX结构设计的密码杂凑算法,消息分组长度为512,杂凑值长度为512位,Lemon512的输入为长度不大于2^64的消息值,输出为512位的摘要值。
其中iv为链接变量初始值,hi-1为当前链接变量,mi-1为当前消息块,cf为压缩函数。
Lemon512算法使用ARX结构作为压缩函数的基本部件,因为仅仅使用了模加运算&循环移位&异或运算,这使得Lemon512算法在提高效率的同时安全性也得到了保证。Lemon512算法交替使用模加运算和异或运算,这比单纯使用模加运算或者异或运算更加复杂和更加能抵抗各种分析。
Lemon512算法的亮点
(1)压缩函数的每一轮状态更新都使用到了全部的16个32位消息字,这使得算法的抗碰撞性大大增强,这使得模减差分分析和比特追踪法对本算法均难以奏效。
(2)压缩函数中的轮函数使用ARX结构作为混淆扩散组件,这使得压缩函数轮函数的扩散性好,同时使用ARX结构很容易构造满足双射特性的轮函数。
(3)典型密码杂凑算法的将每一块消息输入压缩函数,而本算法将前i轮的消息累加和输入压缩函数,这使得算法的扩散性更强,雪崩效应更好。
(4)由于步函数H3=H3⊞FFFF1(H0,H1,H2,M3)⊞M3(y=f(M)+M),步函数中含有两个消息字,故步函数无法表示成消息字的显示形式(M=f(x)),在差分分析时增加了消息修改的困难性。该算法有效地增加了运用消息修改技术的困难,并且得到良好的差分扩散特性。
Lemon512密码杂凑算法描述