「SSL証明書の偽造」に研究者らが成功 [脆弱性]
詳細がだいぶん分かったので、ちょっと修正します。
SSL認証を行う認証局から発行された証明書が偽造される可能性が出てきました。
いわゆるMD5の弱衝突耐性の一部が突破されたことになります。
PS3は1つのCPUの中に9個のプロセッサコアをもち、1個の汎用的なプロセッサコアと、
8個のシンプルなプロセッサコアを組み合わせたマルチなCPUのようです。
これが200台で20時間弱とか。
詳細は不明ですが、今後、CAの証明書はSHA1、SHA256とかに完全に移行していくんでしょうか。
内容は、下記の
http://www.win.tue.nl/hashclash/rogue-ca/downloads/alignment.pdf
の図と、
http://www.phreedom.org/research/rogue-ca/md5 -collisions-1.0.ppt
から分かります。
手順は、上記資料を読んだところ下記の通りだと思います。
1.上位のCA局から一度正規の手続きで証明書を発行してもらいます。
このとき、自分の公開鍵は2,048ビットの値を付与します。
2.上位CA局からは、発行した有効期間とシリアル番号が付与され、
上位CA局の公開鍵で署名された値を付与して証明書をもらいます。
このときのハッシュ値がMD5です。
3.上位CA局から受け取った証明書から、未来の発行日にもらう
シリアル番号を推測します。
4.そして必要な情報は上部に詰め、コメント部分にコリジョンとなるように
調整します。
5.このとき、偽証明書は1,024ビットの公開鍵暗号を付与します。
6.申請した2,048ビットの公開鍵と、未来の日時とその時に取得する
推定したシリアル番号から証明書のハッシュ値と同じになるように
偽証明書を作成します。このとき、たぶん時間がかかるのがBirthday Bits
と呼ばれる96ビットの部分です。上記pdfファイルの8ブロック後に
付与されます。
7.できあがった偽証明書と同じハッシュ値を持つように証明書を上位CAに
申請し、予測した時刻とシリアル番号が取得できた場合には、偽証明書が
完成です。
たぶん、こんな感じだと思います。
Here are the MD5 Intermediate Hash Values:
Here are the XOR differences of the MD5 Intermediate Hash Values:
攻撃者はpdfファイルの右側の偽証明書を作成します。
上記の最初の表は、真と偽の証明書のの各ブロックのMD5の結果を表示し、
次の表は各ブロックの差を比較しています。
MD5が64バイトを1ブロックとしてハッシュを生成し、それを元に次のブロックを
計算するので、上記pdfファイルの8ブロックの次にBirthday bitsの96ビット分が
衝突を発生させるための一番キーになる部分です。
このBirthday bitsをうまく設定することによりが次の9,10,11ブロックで完全に
コリジョンを発生させることに成功するように設定されます。
証明書データがpdfファイルの左のReal Certificateとなり、ここに添付
されているpublic keyは、自分が偽CAとなるための公開鍵です。
そして、発行されるシリアル番号と有効期限を変化させて、
右のrogue CA Certificateデータを作成します。
攻撃者は、上位CAから一度証明書を発行してもらいます。
そして、シリアル番号は、取得するたびに1ずつ増加するだけなので、
そこから取得する際のシリアル番号が判明します。
パワーポイントでは21枚目にシリアル番号が643004を取得し、
643015を取得する時の日時を予測しています。
とういうことで、攻撃者は、643015を取得する日時を2008年11月3日07時52分02
秒に取得することを想定して、偽証明書を作成し、その時刻に上位CAから証明書
を発行していもらいます。このとき、1秒でも異なっていたら、偽証明書は使え
ません。
上位CA側の対策としては、シリアル番号をランダムに変更するとか、有効日時を
ミリ秒まで付与するとかすれば、この攻撃を防止できるような気がします。
日経PC
http://pc.nikkeibp.co.jp/article/news/20090105/1010963/
マイクロソフト
http://www.microsoft.com/technet/security/advisory/961509.mspx
原文
http://www.win.tue.nl/hashclash/rogue-ca/
SSLが破られる -- ハッカーがMD5の衝突を利用してCA証明書の偽造に成功
http://japan.zdnet.com/sp/feature/07zeroday/story/0,3800083088,20386042,00.htm
SSL認証を行う認証局から発行された証明書が偽造される可能性が出てきました。
いわゆるMD5の弱衝突耐性の一部が突破されたことになります。
PS3は1つのCPUの中に9個のプロセッサコアをもち、1個の汎用的なプロセッサコアと、
8個のシンプルなプロセッサコアを組み合わせたマルチなCPUのようです。
これが200台で20時間弱とか。
詳細は不明ですが、今後、CAの証明書はSHA1、SHA256とかに完全に移行していくんでしょうか。
内容は、下記の
http://www.win.tue.nl/hashclash/rogue-ca/downloads/alignment.pdf
の図と、
http://www.phreedom.org/research/rogue-ca/md5 -collisions-1.0.ppt
から分かります。
手順は、上記資料を読んだところ下記の通りだと思います。
1.上位のCA局から一度正規の手続きで証明書を発行してもらいます。
このとき、自分の公開鍵は2,048ビットの値を付与します。
2.上位CA局からは、発行した有効期間とシリアル番号が付与され、
上位CA局の公開鍵で署名された値を付与して証明書をもらいます。
このときのハッシュ値がMD5です。
3.上位CA局から受け取った証明書から、未来の発行日にもらう
シリアル番号を推測します。
4.そして必要な情報は上部に詰め、コメント部分にコリジョンとなるように
調整します。
5.このとき、偽証明書は1,024ビットの公開鍵暗号を付与します。
6.申請した2,048ビットの公開鍵と、未来の日時とその時に取得する
推定したシリアル番号から証明書のハッシュ値と同じになるように
偽証明書を作成します。このとき、たぶん時間がかかるのがBirthday Bits
と呼ばれる96ビットの部分です。上記pdfファイルの8ブロック後に
付与されます。
7.できあがった偽証明書と同じハッシュ値を持つように証明書を上位CAに
申請し、予測した時刻とシリアル番号が取得できた場合には、偽証明書が
完成です。
たぶん、こんな感じだと思います。
Here are the MD5 Intermediate Hash Values:
IHV | real certificate | rogue CA certificate |
IHV0 | 0123456789ABCDEFFEDCBA9876543210 | 0123456789ABCDEFFEDCBA9876543210 |
IHV1 | 058484A77F07A36382AAECF2DFE207A2 | 713F764E78B5C9B03F8878F7A440551B |
IHV2 | D52743425C3DAC23A9E62C6C9670622E | 2AC9681DDB3B72D29A1422A515C9E4F4 |
IHV3 | 7789E58E3B45621A3E46A64CA9D7AC3A | 104DD09F9F651E554C528578AC1F6885 |
IHV4 | CDA2CB5673D3D32092C7F1EF80CE5729 | 15ADC95447929A2AC0EACF9E618E14EB |
IHV5 | F08E24604482508B959A0B5762207A3F | D6D6E59C0BDB1F701CB04C29A0573EA0 |
IHV6 | A83EA6CCCC50B41A4BFADBC6D856B338 | 3AAB0CE98F1E9B2AC270A5A2C60FF605 |
IHV7 | 0B42EAAB4258AACA8C30BDB8192A1BC0 | DE3CCC11526732CA0FD8B9F5992A7673 |
IHV8 | D21CED8CC56726B6BF2AE4A93D742C3A | D21CED8CCE3D7EB4C82ADCA94674243A |
IHV9 | DC1EDBFFF3C3E9E7BCEB3F9E2D0705BD | DC1EDBFFF49941E8BDEB379E2E07FDBC |
IHV10 | F0D655805A71A74EF8A6A630D11977D8 | F0D655805A479F4EF8A69E30D1196FD8 |
IHV11 | 9808B5471E7130CC5A30A2ABF2BE4B4D | 9808B5471E7130CC5A30A2ABF2BE4B4D |
IHV12 | AA1F57B21A8732130CB0CAEF4BB9C746 | AA1F57B21A8732130CB0CAEF4BB9C746 |
IHV13 | 151754FA2FCC5914E72B71B4300B6485 | 151754FA2FCC5914E72B71B4300B6485 |
IHV14 | 271EECDC4DAC9E9C471C34C833917E26 | 271EECDC4DAC9E9C471C34C833917E26 |
IHV15 | 9ED7B966BD815C141B899DC64B528564 | 9ED7B966BD815C141B899DC64B528564 |
MD5 | 9ED7B966BD815C141B899DC64B528564 | 9ED7B966BD815C141B899DC64B528564 |
Here are the XOR differences of the MD5 Intermediate Hash Values:
IHV | XOR difference |
IHV0 | 00000000000000000000000000000000 |
IHV1 | 74BBF2E907B26AD3BD2294057BA252B9 |
IHV2 | FFEE2B5F8706DEF133F20EC983B986DA |
IHV3 | 67C43511A4207C4F7214233405C8C4BF |
IHV4 | D80F02023441490A522D3E71E14043C2 |
IHV5 | 2658C1FC4F594FFB892A477EC277449F |
IHV6 | 9295AA25434E2F30898A7E641E59453D |
IHV7 | D57E26BA103F980083E8044D80006DB3 |
IHV8 | 000000000B5A5802770038007B000800 |
IHV9 | 00000000075AA80F010008000300F801 |
IHV10 | 00000000003638000000380000001800 |
IHV11 | 00000000000000000000000000000000 |
IHV12 | 00000000000000000000000000000000 |
IHV13 | 00000000000000000000000000000000 |
IHV14 | 00000000000000000000000000000000 |
IHV15 | 00000000000000000000000000000000 |
MD5 | 00000000000000000000000000000000 |
攻撃者はpdfファイルの右側の偽証明書を作成します。
上記の最初の表は、真と偽の証明書のの各ブロックのMD5の結果を表示し、
次の表は各ブロックの差を比較しています。
MD5が64バイトを1ブロックとしてハッシュを生成し、それを元に次のブロックを
計算するので、上記pdfファイルの8ブロックの次にBirthday bitsの96ビット分が
衝突を発生させるための一番キーになる部分です。
このBirthday bitsをうまく設定することによりが次の9,10,11ブロックで完全に
コリジョンを発生させることに成功するように設定されます。
証明書データがpdfファイルの左のReal Certificateとなり、ここに添付
されているpublic keyは、自分が偽CAとなるための公開鍵です。
そして、発行されるシリアル番号と有効期限を変化させて、
右のrogue CA Certificateデータを作成します。
攻撃者は、上位CAから一度証明書を発行してもらいます。
そして、シリアル番号は、取得するたびに1ずつ増加するだけなので、
そこから取得する際のシリアル番号が判明します。
パワーポイントでは21枚目にシリアル番号が643004を取得し、
643015を取得する時の日時を予測しています。
とういうことで、攻撃者は、643015を取得する日時を2008年11月3日07時52分02
秒に取得することを想定して、偽証明書を作成し、その時刻に上位CAから証明書
を発行していもらいます。このとき、1秒でも異なっていたら、偽証明書は使え
ません。
上位CA側の対策としては、シリアル番号をランダムに変更するとか、有効日時を
ミリ秒まで付与するとかすれば、この攻撃を防止できるような気がします。
日経PC
http://pc.nikkeibp.co.jp/article/news/20090105/1010963/
マイクロソフト
http://www.microsoft.com/technet/security/advisory/961509.mspx
原文
http://www.win.tue.nl/hashclash/rogue-ca/
SSLが破られる -- ハッカーがMD5の衝突を利用してCA証明書の偽造に成功
http://japan.zdnet.com/sp/feature/07zeroday/story/0,3800083088,20386042,00.htm
コメント 0