欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

现代密码学5.2--域扩张:Merkle-Damgard Transform

发布时间:2025/3/21 编程问答 71 豆豆
生活随笔 收集整理的这篇文章主要介绍了 现代密码学5.2--域扩张:Merkle-Damgard Transform 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

现代密码学5.2--域扩张:Merkle-Damgard Transform

  • Merkle-Damgard Transform

博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。

  • 第二章定义了完美安全及其对应的密码方案“一次一密”,
  • 第三章介绍了安全定义和满足安全定义的密码方案:
    • 3.1-3.3 计算安全,PRG和基于PRG构造的满足计算安全的密码方案;
    • 3.4-3.5 CPA安全,PRF和基于PRF构造的满足CPA安全的密码方案
    • 3.6 基于PRG和PRF构造的流密码和分组密码;
    • 3.7 CCA安全,对非CCA安全密码方案的攻击
  • 第五章介绍哈希函数
    • 5.1节介绍了哈希函数的定义
    • 5.2节将介绍一种域扩张,可以将固定长度的输入扩张到任意长度的输入,这样我们就可以只考虑固定长度输入的哈希函数,简化了问题。

Merkle-Damgard Transform

  • 根据5.1节哈希函数的定义,我们知道哈希函数是将任意长度的字符串映射到固定长度的字符串:{0,1}∗→{0,1}l,∗>l\{0,1\}^*\rightarrow \{0,1\}^l, *>l{0,1}{0,1}l,>l
  • 但是实际中我们去构建一个哈希函数往往不会考虑对任意长度的输入,这样需要考虑的范围太广了
  • 我们考虑固定长度的输入,比如2n→n2n\rightarrow n2nn,压缩一半长度的哈希函数
  • 因为有域扩张,考虑固定长度输入与任意长度输入在抗碰撞性上是等价的,所以我们可以只考虑固定长度输入。

现在证明考虑固定长度输入(Gen,h)(Gen,h)(Gen,h)与任意长度输入(Gen,H)(Gen,H)(Gen,H)在抗碰撞性上是等价的:

  • 假设(Gen,h):{0,1}2n→{0,1}n(Gen,h):\{0,1\}^{2n}\rightarrow \{0,1\}^n(Gen,h){0,1}2n{0,1}n
  • (Gen,H):x∈{0,1}∗→{0,1}n,∣x∣=L<2n(Gen, H):x\in\{0,1\}^*\rightarrow \{0,1\}^n,|x|=L<2^n(Gen,H)x{0,1}{0,1}nx=L<2n
  • 定义(Gen,H)(Gen,H)(Gen,H):设置B:=⌈Ln⌉B:=\lceil \frac{L}{n}\rceilB:=nL,原始输入xxx被划分成BBBnnn-比特块,令xB+1=Lx_{B+1}=LxB+1=Lz0=0nz_0=0^nz0=0nzi=hs(zi−1∣∣xi)z_i=h^s(z_{i-1}||x_i)zi=hs(zi1xi),输出zB+1z_{B+1}zB+1

我们只要说明∀s\forall ssHsH^sHs上的碰撞是hsh^shs上的碰撞

  • 假设HsH^sHs上有一对碰撞对(x,x′)(x,x')(x,x)xB+1=Lx_{B+1}=LxB+1=LxB′+1′=L′x'_{B'+1}=L'xB+1=L
  • 考虑两种情况
    • case1:L≠L′L\neq L'L=L
      • Hs(x)=zB+1=hs(zB∣∣L)H^s(x)=z_{B+1}=h^s(z_B||L)Hs(x)=zB+1=hs(zBL)
      • Hs(x′)=zB′+1′=hs(zB′′∣∣L′)H^s(x')=z'_{B'+1}=h^s(z'_{B'}||L')Hs(x)=zB+1=hs(zBL)
      • 因为Hs(x)=Hs(x′)H^s(x)=H^s(x')Hs(x)=Hs(x),则hs(zB∣∣L)=hs(zB′′∣∣L′)h^s(z_B||L)=h^s(z'_{B'}||L')hs(zBL)=hs(zBL)
      • 因为L≠L′L\neq L'L=L,所以zB∣∣L≠zB′′∣∣L′z_B||L\neq z'_{B'}||L'zBL=zBL,所以这是hsh^shs上的碰撞对。
    • case2:L=L′L=L'L=L
      • 类似地,因为最后输出是一样的,而x≠x′x\neq x'x=x,所以一定有某个中间输入是不一样的

总结

以上是生活随笔为你收集整理的现代密码学5.2--域扩张:Merkle-Damgard Transform的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。