2009年01月01日

MD5 considered harmful today: Creating a rogue CA certificate

MD5 の「衝突の脆弱性」を利用した具体的な攻撃方法が公表されてるそうです
MD5 で署名してる認証局に署名された中間認証局を偽造できるということのようです
こ、これは、やばい認証局のパスのルート証明書を全部捨てろということなのでしょうか
がレポートのページで、MD5 で署名している認証局のリストも出ています
偽造された証明書も載ってます (悪用できないよう有効期間は 2004 年で)

既に衝突を起こす良い方法はあるみたいで
正規に入手した証明書の署名部分をコピーすることに偽造証明書が作れるようです

正規な証明書はシリアルと有効期間の情報以外はそれなりにコントロールできますし
発行が自動化されている場合、シリアルと有効期限もそれなりに予測できて
申請のタイミングによってコントロールできると

偽造する方は正規なものに似せつつも
basic constraints に CA = TRUE と Path Length = None を入れておいて
無駄な拡張部分を作っておいてそこに発行されるであろう署名前証明書の公開鍵入れたりして
あとはブルートフォースなのかな? 署名前証明書のハッシュを衝突させることができて
対応する正規な証明書の署名をコピーすると偽造中間証明書の完成!!

MD5 への攻撃にとって署名前証明書の前半部分のコントロールが大切みたいで
シリアルや有効期限がそれなりにコントロールできないとダメみたいなので
その辺りで防御策が無いこともないけど、MD5 使わないでよ、ってことだそうです

これだけでフィッシングとしては効果的ですし
DNS キャッシュが汚染されてしまった日には証明書のパスをじっくり見ないと
防ぎようが無くって結構大変なことになってる気がしますどうやって衝突させてるのが英語とにらめっこしてみました
  • 前提として Serial と Validity 含め公開鍵の手前までは何が来るか制御可能
  • MD5 は 512bit 毎に区切って演算するが、その何 block 目かの最後に公開鍵の modulus の頭の部分が来る
  • 偽造証明書の方は同じ bit 長の辺りまでに拡張まで進めておいて Netscape 用のあまり意味が無いけど任意のビットが入れられる拡張を始めておく
  • 発行させる証明書の modulus の頭の部分 96bit で総当たり攻撃みたいなことをして同じ bit 長まで用意しといた偽証明書と MD5 のハッシュ値が十分近くなるようにしておく
  • 残りの部分は偽の方に本物と同じ bit 列 (modulus の続き) 入れておいて 1 block 毎にチョコチョコっと変えるとハッシュ値がもっと近くなる
  • 本物の証明書の modulus を 2048bit としておくと、チョコチョコが 3 回できて結局ハッシュ値の差が 0 になる
  • 本物の証明書の modulus が 2 つの素数の積となるよう残りの部分を決定する
この、「96 bit で総当たり」と「チョコチョコ」の部分の詳細に関しては
そのうち発表する論文に書くよ、とのことなので詳細は分かっていません
若しかしたら古い論文を引っぱったら分かる話なのかもしれませんが...
「96 bit で総当たり」の部分が時間が掛かって PS3 200 台で 18 時間とのこと
それでも 18 時間で 2 日間で他の計算も含めて 3 回チャレンジできたそうです

この方法だと、過去に発行された MD5 で署名されてる証明書からは
偽証明書を作るのは難しそうだなぁ、と思いました
「総当たりでハッシュ値近づけ」て「チョコチョコ」複数回ですもんね
ラベル:MD5 CA 証明書 衝突
posted by OJH at 02:47| Comment(0) | TrackBack(1) | ニュース | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

MD5の脆弱性を利用したSSLサーバ証明書の偽造について
Excerpt: 2008年はSSLに関わる重要なニュースがいくつもありましたが、その中でも年の瀬
Weblog: yet2come
Tracked: 2009-01-28 09:26
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。