SECON 2017 Online CTF SHA-1 is dead(Crypto, 100pt)

score-quals.seccon.jp

SHA-1ハッシュが一致する、2017KiBの2つのファイルを作れ、と言われています。
SHA-1 - Wikipedia

ちょっと調べると、SHA-1ハッシュが一致する2つのバイト列の後ろに同じ文字列を追加すると、
どのような文字列を追加してもハッシュは一致するらしいと分かります。
(基本的に前から1桁ずつ累積して計算してるってことなんでしょうか)

とはいえその種になる、ハッシュが一致する2つのバイト列なんてどうやって作ればいいんだ・・・と悩んでいると、
google大先生が既にその仕事をやってくれていました。
SHAttered

というわけでこのpdfファイルに約2017KiB程度無意味な情報をつけ足せばOKです。

# plain.py
import sys
for i in range(1642977):
    sys.stdout.write(' ')
$ python plain.py > plain.txt
$ cat shattered-1.pdf plain.txt > s1.bin
$ cat shattered-2.pdf plain.txt > s2.bin

感想

IIJ Security Diary: SHAttered attack (SHA-1コリジョン発見)
SHA-1が比較的弱いハッシュであることは以前から指摘されていたものの、
実際に現実的なマシンパワーで破れました、というのは今年になってから報告されたもののようです。
セキュリティ関連のニュースを普段から追っているともっとググりフェーズに時間を使わず正解できたものと思われます。日々精進ですね。