37. Merkle-Damgård構造37
内部
状態𝐼𝑉 …
Hello, World
m1 m2 m3
① メッセージを分割
pad
② パディング付与
関
数
R
関
数
R
関
数
R
関
数
R
③ 分割したメッセージごとに処理
を繰り返して内部状態を生成
e4d7f1b4ed2e42d15898f4b27b019da4
出力
関数
④ 内部状態からハッシュ値を出力
80. ゲームの仕組
1) set your odds : oddsを指定
odds = 2^入力値 がmoduloとして扱われる
2) set your bet : betするmoneyを指定
3) play a round : 下記のゲームを開始
80
md5(secret + ) % odds
秘密の値(our number) 1で指定した値
81. ゲームの仕組
1) set your odds : oddsを指定
odds = 2^入力値 がmoduloとして扱われる
2) set your bet : betするmoneyを指定
3) play a round : 下記のゲームを開始
81
md5(secret + ) % odds
秘密の値(our number) 1で指定した値
your
number
値を指定
82. ゲームの仕組
1) set your odds : oddsを指定
odds = 2^入力値 がmoduloとして扱われる
2) set your bet : betするmoneyを指定
3) play a round : 下記のゲームを開始
4) 総金額が1,000,000,000を超えるとFLAGゲット!
82
md5(secret + ) % odds
秘密の値(our number) 1で指定した値
your
number
値を指定
≡ 0
≡0
bet * oddsの
金額をゲット
betした金額を
失う…
118. Wangの攻撃
ΔH0を打ち消すΔH1を出力する入力ペアを効率よく探索する
手法を提案
Wangの発表のあとMD5に対する攻撃が活発化
Klimaや佐々木らによりさらに高速化
数秒で衝突探索できるまでに発展
118
[1] How to break MD5 and other hash functions, Xiaoyun Wang et al.,
http://merlot.usc.edu/csac-f06/papers/Wang05a.pdf
[3] On collisions for MD5, M. Stevens,
http://www.win.tue.nl/hashclash/On%20Collisions%20for%20MD5%2
0-%20M.M.J.%20Stevens.pdf
[2] Finding MD5 Collisions on a Notebook PC Using Multi-message
Modifications, V. Klima, http://eprint.iacr.org/2005/102.pdf
119. Wangの攻撃
ΔH0を打ち消すΔH1を出力する入力ペアを効率よく探索する
手法を提案
Wangの発表のあとMD5に対する攻撃が活発化
Klimaや佐々木らによりさらに高速化
数秒で衝突探索できるまでに発展
119
[1] How to break MD5 and other hash functions, Xiaoyun Wang et al.,
http://merlot.usc.edu/csac-f06/papers/Wang05a.pdf
[3] On collisions for MD5, M. Stevens,
http://www.win.tue.nl/hashclash/On%20Collisions%20for%20MD5%2
0-%20M.M.J.%20Stevens.pdf
[2] Finding MD5 Collisions on a Notebook PC Using Multi-message
Modifications, V. Klima, http://eprint.iacr.org/2005/102.pdf
自分で「差分パス」を発見するのは難しい
→ 先人の知恵に頼る
137. 解答(衝突ペアの増加)
さらに[m1 m2]にFASTCOLLによりm3, m’3が付与されたと仮定
下記メッセージが衝突
md5[m1 m2 m3]
md5[m1 m’2 m’3]
137
m1
R
m2
R
m’2
R
m3
R
m’3
R
[m1 m’2]にm3, m’3を付与
m3
R
m’3
R
138. 解答(衝突ペアの増加)
さらに[m1 m2]にFASTCOLLによりm3, m’3が付与されたと仮定
下記メッセージが衝突
md5[m1 m2 m3]
md5[m1 m’2 m’3]
138
m1
R
m2
R
m’2
R
m3
R
m’3
R
[m1 m’2]にm3, m’3を付与
m3
R
m’3
R
下記4メッセージが衝突
md5[m1 m2 m3]
md5[m1 m2 m’3]
md5[m1 m’2 m3]
md5[m1 m’2 m’3]
→ 倍々ゲームで衝突
メッセージを増殖可能
143. 解答(衝突ペアの増加)143
1_msg1_msg1.exe = 1.exe+m2+m3
1_msg1_msg2.exe = 1.exe+m2+m’3
1_msg2_msg1.exe = 1.exe+m’2+m3
1_msg2_msg2.exe = 1.exe+m’2+m’3
m1
R
m2
R
m’2
R
m3
R
m’3
R
m3
R
m’3
R
145. 参考文献
[1] How to break MD5 and other hash functions, Xiaoyun Wang et al., http://merlot.usc.edu/csac-
f06/papers/Wang05a.pdf
[2] Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications, V. Klima,
http://eprint.iacr.org/2005/102.pdf
[3] On collisions for MD5, M. Stevens, http://www.win.tue.nl/hashclash/On%20Collisions%20for%
20MD5%20-%20M.M.J.%20Stevens.pdf
[4] Free Start Collision for full SHA-1, M. Stevens et al., https://marc-stevens.nl/research/papers/K
PS_freestart80.pdf
[5] The Keccak sponge function family, Guido Bertoni et al., http://keccak.noekeon.org/specs_sum
mary.html
[5] 新版暗号技術入門 秘密の国のアリス, 結城浩
[6] 暗号技術大全, Bruce Schneier
145