哈希函数RIPEMD-160[1]基于Markle-Damgard[2-3]结构, 是RIPEMD家族中的重要算法, 同时也是ISO/IEC国际标准之一。RIPEMD家族的压缩函数采用双分支操作, 由于RIPEMD算法2个分支操作很相似, 因此降低了攻击难度。其中, RIPEMD-160的2个分支操作使用了不同的常数、移位值、消息字顺序和布尔函数, 增强了安全性, 其在文件校验、数字签名中被广泛应用。
目前对于RIPEMD-160算法的碰撞攻击、原像攻击和区分攻击研究有:文献[4]提出一种对36步RIPEMD-160算法(从第2轮开始)的半自由起始碰撞攻击方案; 文献[5]提出一种自动搜索RIPEMD-160差分路线的改进方案, 建立了48步(从第2轮开始)和36步算法(从第1轮开始)的差分路线, 并在此基础上分别给出42步和36步RIPEMD-160算法的半自由起始碰撞攻击方案; 文献[6]给出保证RIPEMD-160算法差分路线的模减差分成立的充分条件, 通过消息修改技术使模减差分成立的概率为1, 同时给出了针对前30步RIPEMD-160算法的碰撞攻击, 并改进前36步RIPEMD-160算法的半自由起始碰撞攻击结果; 文献[7]给出一种48步RIPEMD-160算法的半自由起始碰撞攻击方案; 文献[8]给出一种31步RIPEMD-160的原像攻击方案; 文献[9]给出了RIPEMD-160的31步~34步的原像攻击方案(从第1轮开始)和35步的原像攻击(从第2轮开始); 文献[10]给出一种51步RIPEMD-160算法的区分攻击方案。
文献[11]提出对分组密码算法的boomerang攻击方法。在此基础上, 文献[12-13]将这个方法应用到哈希函数的区分攻击中, 文献[10]利用基于boomerang区分器的2-dimension sums方法, 给出51步RIPEMD-160算法的区分攻击方法, 复杂度为2158, 通过构建RIPEMD-160压缩函数左右操作的差分路线, 并使用消息修改技术使左右操作差分路线的前半部分(左操作的17步~25步, 右操作的17步~22步)以1的概率成立。然而由于RIPEMD-160的步操作不是一个标准的T函数(第i位输出只依赖于前i位的输入), 并且文献[10]在使用消息修改技术时没有考虑模减差分对差分路线的影响, 因此不能保证在消息修改之后左右操作前半部分成立的概率为1, 由此可知文献[10]中得到的区分攻击复杂度是有误的。
针对上述问题, 本文给出保证RIPEMD-160算法差分路线模减差分成立的充分条件, 通过消息修改技术使差分路线前半部分成立的概率为1, 以降低区分攻击的复杂度, 同时在评估差分路线后半部分的概率时考虑差分路线的模减差分, 通过实验测试得到后半部分差分路线成立的概率。
1 预备知识 1.1 基本符号说明本文用到的符号说明如下:
1) M=(m0, m1, …, m15)和M′=(m′0, m′1, …, m′15)分别代表512 bit的消息字。
2) Xi和X′i分别代表左分支压缩函数处理消息字M和M′在第i(1≤i≤80)步产生的输出值, 其中Xi和X′i都为32 bit。
3) Yi和Y′i分别代表右分支压缩函数处理消息字M和M′在第i(1≤i≤80)步产生的输出值, 其中Yi和Y′i都为32 bit。
4) +和-分别表示模232加运算和模232减运算。
5) x<<<s表示x向左循环移动s位, x>>>s表示x向右循环移动s位。
6) Δxi=x′i-xi表示x′i和xi之间的模减差分。
7) Δxi=[j]表示xi, j=0, x′i, j=1, xi, k=x′i, k, 0≤k≤31, k≠j。
8) Δxi=[-j]表示xi, j=1, x′i, j=0, xi, k=x′i, k, 0≤k≤31, k≠j。
9) C(i~j)表示C的第i位到第j位的值0≤j≤i≤31。
1.2 RIPEMD-160算法哈希函数RIPEMD-160将任意长度的消息(小于264)压缩为160 bit的哈希值。首先将填充之后的消息分块, 每个消息块的长度为512 bit, 然后压缩函数将每一个512 bit的消息块压缩成160 bit的输出。RIPEMD-160的压缩函数包含2个分支, 分别记为左分支和右分支, 每个分支包含5轮运算, 每轮包含16步操作, 具体描述如下:
将160 bit的输入链变量cv记为5个字cvi(i=0, 1, 2, 3, 4), 其中cvi的长度是32 bit。首先对左右分支的160 bit的内部状态进行初始化:
$ \begin{align} & {{X}_{-4}}={{Y}_{-4}}=c{{v}_{0}}>>>10, {{X}_{-3}}={{Y}_{-3}}=c{{v}_{4}}>>>10 \\ & {{X}_{-2}}={{Y}_{-2}}=c{{v}_{3}}>>>10, {{X}_{-1}}={{Y}_{-1}}=c{{v}_{2}}, {{X}_{0}}={{Y}_{0}}=c{{v}_{1}} \\ \end{align} $ |
在第j轮(1≤j≤5), 左右操作的链接变量Xi和Yi(1≤i≤80)的更新操作分别为:
$ \begin{array}{*{35}{l}} {{X}_{i}}=\left( {{X}_{i-4}}<<<10 \right)+\left( \left( {{X}_{i-5}}<<<10 \right)+{{F}_{j}}\left( {{X}_{i-1}}, \\{{X}_{i-2}}, \left( {{X}_{i-3}}<<<10 \right) \right)+{{m}_{{{\pi }^{l}}(i)}}+{{k}_{j}^{l}} \right)<<<{{s}_{i}^{l}} \\ {{Y}_{i}}=\left( {{Y}_{i-4}}<<<10 \right)+\left( \left( {{Y}_{i-5}}<<<10 \right)+{{G}_{j}}\left( {{Y}_{i-1}}, \\{{Y}_{i-2}}, \left( {{Y}_{i-3}}<<<10 \right) \right)+{{m}_{{{\pi }^{r}}(i)}}+{{k}_{j}^{r}} \right)<<<{{s}_{i}^{r}} \\ \end{array} $ |
其中, 布尔函数Fj和Gj、轮常数kjl和kjr都依赖于轮数j(1≤j≤5)和左右分支, 布尔函数Fj和Gj参照表 1, 轮常数kjl和kjr的取值参照表 2, 消息字mπl(i)和mπr(i)的顺序以及对应的移位值sil和sir参照表 3。
![]() |
下载CSV 表 1 双分支的布尔函数 |
![]() |
下载CSV 表 2 轮常数取值 |
![]() |
下载CSV 表 3 消息字的顺序和对应的移位值 |
对于已知差分路线的RIPEMD-128算法, 容易推导出保证差分路线成立的充分条件, 并利用消息修改技术使得差分路线成立。由于RIPEMD-160的步操作不是标准的T函数, 在计算差分路线的概率时不能忽略模减差分的影响, 因此在计算差分路线中任意一步成立的概率时, 既要考虑比特条件成立的概率, 也要考虑模减差分成立的概率。文献[6]推导得到保证RIPEMD-160算法差分路线的模减差分成立的充分条件, 通过消息修改技术[14]使模减差分成立的概率为1, 同时给出前30步RIPEMD-160算法的碰撞攻击, 并优化前36步RIPEMD-160算法的半自由起始碰撞攻击结果。下文介绍模减差分修改中用到的表达式以及修改方法。
令Δ=X′i-Xi, Δi-5=(X′i-5<<<10)-(Xi-5<<<10), Δi-4=(X′i-4<<<10)-(Xi-4<<<10), ΔF=φjr(Xi-1r, X′i-2, X′i-3<<<10)-φjr(Xi-1, Xi-2, Xi-3<<<10), 则根据计算Xi步操作的表达式可知模减差分成立的概率为Pr(v)=Pr[Δ=Δi-4+(Δi-5+ΔF+Δmπ(i)+T)<<<si-(T<<<si)], 其中, T=(Xi-5<<<10)+Fi(Xi-1, Xi-2, (Xi-3<<<10))+mπl(i)+kjl。
令:C0=Δi-5+ΔF+Δmπ(i), C1=Δ-Δi-4, 则模减差分成立的概率转换为:Pr(v)=Pr[(T+C0)<<<si=(T<<<si)+C1]。因为对于给定的差分路线, C0和C1的值是确定的, 所以可以通过在T上添加条件来保证Pr(v)=1。又根据Xi的表达式知, T=(Xi-(Xi-4<<<10))>>>si, 因此, 在T上的条件可以转化为在Xi和Xi-4上的条件, 即通过在Xi和Xi-4上添加条件, 可以使得Xi和X′i模减差分成立的概率为1。具体添加条件的过程参见文献[6]。
2 文献[10]对RIPEMD-160的区分攻击分析本节介绍文献[10]中3种构建RIPEMD-160区分器的方法, 重点研究本文讨论的2-dimension sums方法, 并分析其原理和实现方式。文献[10]提出的3种区分器, 分别为4-sum、2-dimension sums和n-dimension sums。
4-sum属性是4个不同的输入(I0, I1, I2, I3)对应输出的异或和为0, 即CF(I0)⊕CF(I1)⊕CF(I2)⊕CF(I3)=0, 其中, CF为RIPEMD-160的压缩函数。构建4-sum区分器的一般复杂度为2n/3, 其中n为哈希值的长度。
通过对4-sum属性的输入∇添加约束, 扩展出2-dimension sums属性, 目的是寻找4个不同的输入(I0, I1, I2, I3)满足I1=I0⊕Δ, I2=I0⊕∇, I3=I0⊕Δ⊕∇, 并且输出满足CF(I0)⊕CF(I1)⊕CF(I2)⊕CF(I3)=0(Δ和∇分别代表RIPEMD-160左右分支的输入差分)。构建2-dimension sums区分器的一般复杂度是2n, 此方法适合用于构造双分支结构哈希函数的区分器。
n-dimension sums区分器是2-dimension sums区分器的扩展, 适用于构造n分支结构哈希函数的区分器。下文详细介绍2-dimension sums区分器。
如图 1所示, 文献[10]首先构建RIPEMD-160算法左右分支操作的差分路线, 然后寻找输入链接变量H和消息M, 使得(M, H)和(M+ΔM, H+ΔH)之间以及(M+∇M, H+∇H)和(M+ΔM+∇M, H+ΔH+∇H)之间遵循左分支操作的差分路线, 并且(M, H)和(M+∇M, H+∇H)之间以及(M+ΔM, H+ΔH)和(M+ΔM+∇M, H+ΔH+∇H)之间遵循右分支操作的差分路线。对于这样的(M, H), 可以保证以下的关系式成立:
$ \begin{align} & F\left( M+{{\mathit{\Delta} }_{M}}+{{\mathit{\nabla} }_{M}}, H+{{\mathit{\Delta} }_{H}}+{{\mathit{\nabla} }_{H}} \right)=CF\left( M, H \right)+\text{ } \\ & \ \ \ \ \ \ \ \ \ \ \ CCF\left( M+{{\mathit{\Delta} }_{M}}, H+{{\mathit{\Delta} }_{H}} \right)+CF(M+{{\mathit{\nabla} }_{M}}, H+{{\mathit{\nabla} }_{H}}) \\ \end{align} $ |
![]() |
Download:
|
图 1 2-dimension sums模型 |
本节给出保证差分路线中模减差分成立的充分条件, 并使用消息修改技术使左右操作差分路线的前半部分成立的概率为1, 改进了文献[10]中区分攻击的复杂度。本节修改了文献[10]中差分路线的错误, 并通过实验测试给出差分路线后半部分的概率, 最终给出51步RIPEMD-160区分攻击的正确复杂度。
3.1 差分路线中模减差分成立的充分条件下文将通过一个实例说明如何在T上添加条件, 使得在消息修改[14-16]后, 该步的模减差分成立的概率为1。本节使用的差分路线如表 4和表 5所示, 其中*表示取正号或负号均可。可以看出, 从第2轮开始, 差分路线与文献[10]略有不同, 左分支第56步、59步、60步和63步为控制差分扩散进行了修改, 第67步则修改了差分值。
![]() |
下载CSV 表 4 差分路线(左分支) |
![]() |
下载CSV 表 5 差分路线(右分支) |
本例考虑右分支的第17步操作(Y17), 根据2.3节结论可知, Y17和Y′17的模减差分以1的概率成立, 当且仅当(T+C0)<<<si=(T<<<si)+C1成立。根据C0和C1的计算公式可得C0=0xfc200000, C1=0x3ffffff8, 同时从表 2可知s17r=9。C0和C1的二进制表示如表 6和表 7所示, 其中ti表示T的第i(0≤i≤31)位的值。
![]() |
下载CSV 表 6 C0的二进制表示 |
![]() |
下载CSV 表 7 C1的二进制表示 |
由表 6和表 7可知, C0(31~23)=C1(8~0), C0(22~0)=C1(31~9)+1。
为使(T+C0)<<<9=(T<<<9)+C1成立, 需要在T上添加条件, 过程如下:
首先, 考虑(T<<<9)+C1的第0位, 为使t23+C0, 23+进位=t23+C1, 0成立, 即为了让t23+0+进位=t23+0成立, 需要在计算(T+C0)时, 第22位向第23位不能有进位。又根据C0, 22=0可知, 添加条件t22=0后, 就可保证在计算(T+C0)时第22位向第23位没有进位。
其次, 考虑(T<<<9)+C1的第9位, 为使t0+C0, 0=t0+C1, 9+进位成立, 即为使t0+0=t0+1+进位成立, 需要在计算(T<<<9)+C1时, 第8位向第9位有进位。又根据C1, 8=1知, 添加条件t31=1, 就可保证在计算(T<<<9)+C1时第8位向第9位有进位。
由RIPEMD-160算法可知:T=(Y17-(Y13<<<10))>>>9, 因此, 添加在t22和t31上的条件可转化为添加在Y17和Y13上。此时, 需要结合Y17和Y13现有的比特条件(推导差分路线时添加的), 在剩下没有条件的位置上加条件, 如果出现了与已有条件矛盾的情况, 还可以对公式T=(Y12<<<10)+Fi(Y16, Y15, (Y14<<<10))+mπr(i)+kjr中的Y12、Y16、Y15、Y14中的任意一个链接变量加条件, 使得T上的条件满足。所以, 本例添加的条件是:Y17, 31=0, Y17, 30=0, Y17, 8=1, Y17, 7=1, Y13, 30=0, Y13, 29=0。再使用消息修改技术, 让这些条件满足, 从而可以保证右分支第17步的模减差分以1的概率成立。程序测试结果表明添加条件后的该步模减差分成立的概率始终为1。
3.2 与文献[10]分析结果的对比本文通过对左右差分路线前面部分的每一步都采用3.1节方法添加条件, 且在消息修改后保证每一步的模减差分成立的概率都为1。文献[10]中的消息修改没有保证差分路线的模减差分以1的概率成立, 表 8和表 9分别比较了本文方法和文献[10]方法左右分支的差分路线前半部分模减差分成立的概率以及相应需要添加的条件, 这部分成立的概率会增加区分攻击的复杂度。由于文献[10]在评估复杂度时对此没有考虑, 因此其给出的复杂度比实际正确的复杂度要低。
![]() |
下载CSV 表 8 模减差分成立概率比较(左分支) |
![]() |
下载CSV 表 9 模减差分成立概率比较(右分支) |
文献[10]中使用2-dimension sums的方法计算出51步的RIPEMD-160区分攻击的复杂度为2158, 但忽略了差分路线前面部分的模减差分的影响, 认为消息修改之后的差分路线前面部分成立的概率为1, 然而表 8和表 9的实验结果表明, 左右分支的差分路线前半部分成立的概率为2-7.717。另一方面, 文献[10]通过统计比特条件的数量, 计算出差分路线后面部分的复杂度为2158, 按照其计算方法, 51步RIPEMD-160区分攻击的复杂度应为2158×215.434=2173.434, 该结果超出2160, 因此, 该文给出的51步RIPEMD-160的区分攻击不成立。
本文考虑差分路线前面部分的模减差分, 添加了保证模减差分成立的充分条件, 并通过消息修改技术让这些条件成立, 从而保证差分路线前面部分成立的概率为1, 所以, 在计算区分攻击的复杂度时, 前半部分的复杂度可以忽略。同时本文也考虑了差分路线后面部分的模减差分, 通过程序测试出差分路线后面部分成立的概率。实验结果表明, 51步RIPEMD-160区分攻击的复杂度为2152.672; 52步RIPEMD-160区分攻击的复杂度为2161.995, 该结果大于2160。因此, 对51步RIPEMD-160算法的2-dimension sums最优的区分攻击复杂度为2152.672。
4 结束语本文考虑RIPEMD-160算法差分路线的模减差分, 通过在链接变量上添加条件并使用消息修改技术, 使差分路线中模减差分成立的概率为1, 从而降低51步RIPEMD-160区分攻击的复杂度。分析结果表明, 对51步RIPEMD-160区分攻击的复杂度为2152.672, 该结果为正确计算RIPEMD-160算法其他区分攻击的复杂度提供了参考。下一步将对左右分支消息字的选择进行比较, 通过推理和编程找到最合适的消息字, 再借助于模减差分技术得到更好的攻击方法。
[1] |
DOBBERTIN H, BOSSELAERS A, PRENEEL B.RIPEMD-160: a strengthened version of RIPEMD[C]//Proceedings of International Workshop on Fast Software Encryption.Cambridge, UK: [s.n.], 1996: 71-82.
( ![]() |
[2] |
DAMGÅRD I B.A design principle for Hash functions[C]//Proceedings of Conference on the Theory and Application of Cryptology.Santa Barbara, USA: [s.n.], 1989: 416-427.
( ![]() |
[3] |
MERKLE R C.One way Hash functions and DES[C]//Proceedings of Conference on the Theory and Application of Cryptology.Santa Barbara, USA: [s.n.], 1989: 428-446.
( ![]() |
[4] |
MENDEL F, NAD T, SCHERZ S, et al.Differential attacks on reduced RIPEMD-160[C]//Proceedings of International Conference on Information Security.Seoul, Korea: [s.n.], 2012: 23-38.
( ![]() |
[5] |
MENDEL F, PEYRIN T, SCHLÄFFER M, et al.Improved cryptanalysis of reduced RIPEMD-160[C]//Proceedings of International Conference on the Theory and Application of Cryptology and Information Security.Bengaluru, India: [s.n.], 2013: 484-503.
( ![]() |
[6] |
LIU Fukang, MENDEL F, WANG Gaoli.Collisions and semi-free-start collisions for round-reduced RIPEMD-160[C]//Proceedings of International Conference on the Theory and Application of Cryptology and Information Security.Paris, France: [s.n.], 2017: 158-186.
( ![]() |
[7] |
WANG Gaoli, SHEN Yanzhao, LIU Fukang. Cryptanalysis of 48-step RIPEMD-160[J]. IACR Transactions on Symmetric Cryptology, 2017(2): 177-202. ( ![]() |
[8] |
OHTAHARA C, SASAKI Y, SHIMOYAMA T.Preimage attacks on step-reduced RIPEMD-128 and RIPEMD-160[C]//Proceedings of International Conference on Information Security and Cryptology.Singapore: [s.n.], 2010: 169-186.
( ![]() |
[9] |
申延召.约减轮Hash函数HAS-160、RIPEMD-160和SM3的原像攻击[D].济南: 山东大学, 2018. http://d.old.wanfangdata.com.cn/Thesis/Y3411163
( ![]() |
[10] |
SASAKI Y, WANG L. Distinguishers beyond three rounds of the RIPEMD-128/-160 compression functions[J]. Lecture Notes in Computer Science, 2012, 7341: 275-292. ( ![]() |
[11] |
WAGNER D.The boomerang attack[C]//Proceedings of International Workshop on Fast Software Encryption.Rome, Italy: [s.n.], 1999: 156-170.
( ![]() |
[12] |
BIRYUKOV A, NIKOLIC' I, ROY A.Boomerang attacks on BLAKE-32[C]//Proceedings of International Workshop on Fast Software Encryption.Lyngby, Denmark: [s.n.], 2011: 218-237.
( ![]() |
[13] |
吴广辉, 于红波, 郝泳霖. 对约减轮数Skein-1024的Boomerang区分攻击[J]. 密码学报, 2016, 3(5): 492-504. ( ![]() |
[14] |
WANG Xiaoyun, LAI Xuejia, FENG Dengguo, et al.Cryptanalysis of the Hash functions MD4 and RIPEMD[C]//Proceedings of Annual International Conference on the Theory and Applications of Cryptographic Techniques.Aarhus, Denmark: [s.n.], 2005: 1-18.
( ![]() |
[15] |
WANG Xiaoyun, YU Hongbo.How to break MD5 and other Hash functions[C]//Proceedings of Annual International Conference on the Theory and Applications of Cryptographic Techniques.Aarhus, Denmark: [s.n.], 2005: 19-35.
( ![]() |
[16] |
WANG Xiaoyun, YIN Y L, YU Hongbo.Finding collisions in the full SHA-1[C]//Proceedings of Annual International Cryptology Conference.Santa Barbara, USA: [s.n.], 2005: 17-36.
( ![]() |