MD4

提供: tezos-wiki
移動先: 案内検索

MD4メッセージダイジェストアルゴリズム は1990年に[Ronald Rivest]によって開発された暗号ハッシュ関数です。ダイジェストの長さは128ビットです。このアルゴリズムは、MD5SHA-1RIPEMDアルゴリズムなどの後の設計に影響を与えました。頭字語の「MD」は「Message Digest」の略です。

right | thumbnail | 300px | 1つのMD4操作:MD4は48回の操作で構成され、16回の操作の3回のラウンドでグループ化されています。 F は非線形関数です。 1つの関数が各ラウンドで使用されます。 「M subi / sub」はメッセージ入力の32ビットブロックを示し、「K sub i / sub」は各操作ごとに異なる32ビット定数を示す。

MD4のセキュリティはひどく損なわれています。 MD4に対する最初の完全な衝突攻撃は1995年に発表され、その後いくつかの新しい攻撃が公開されています。 2007年時点で、攻撃は2つ未満のMD4ハッシュ操作で衝突を生成する可能性があります。

セキュリティ[編集]

MD4の弱点は、1991年に発行された論文でDen BoerとBosselaersによって実証されました。最初の完全なMD4 [衝突攻撃]は1995年に[Hans Dobbertin]によって発見されました。時間。 2004年8月、 Wang et al。 MD4 / MD5 / SHA-1 / RIPEMDファミリの後のハッシュ関数設計に対する攻撃と並んで、非常に効率的なコリジョン攻撃を発見しました。この結果は、Sasakiらによって後に改良され、衝突を生成することは現在、それを検証するのと同じくらい安い(数マイクロ秒)。 2011年に、RFC 6150はRFC 1320(MD4)が歴史的なものであると述べています(旧式)。

MD4ハッシュ[編集]

128ビット(16バイト)のMD4ハッシュ(「メッセージダイジェスト」とも呼ばれる)は、通常、32桁の[16進数]の数字で表されます。以下は、43バイトのASCII入力とそれに対応するMD4ハッシュを示しています。

MD4(「茶色のキツネが怠惰なOGに飛び乗る」)
= 1bee69a46ba811185c194762abaeae90

メッセージ内の小さな変化でさえ(圧倒的な確率で)完全に異なるハッシュになります。 &lt; tt&gt; d&lt; / tt&gt; to c </ tt>:

MD4(「茶色のキツネが怠惰なOGに飛び乗る」)
= b86e130ce7028da59e672d56ad0113df

長さゼロの文字列のハッシュは次のとおりです。

MD4( "")= 31d6cfe0d16ae931b73c59d7e0c089c0

MD4テストベクトル[編集]

以下のテストベクタは、RFC 1320(The MD4 Message-Digest Algorithm)

MD4( "")= 31d6cfe0d16ae931b73c59d7e0c089c0
MD4( "a")= bde52cb31de33e46245e05fbdbd6fb24
MD4( "abc")= a448017aaf21d8525fc10ae87aa6729d
MD4(「メッセージダイジェスト」)= d9130a8164549fe818874806e1c7014b
MD4( "abcdefghijklmnopqrstuvwxyz")= d79e1c308aa5bbcdeea8ed63df412da9
MD4( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")= 043f8582f241db351ce627e153e7f0e4
MD4( "12345678901234567890123456789012345678901234567890123456789012345678901234567890")= e33b4ddc9c38f2199c3e7b164fcc0536

MD4衝突の例[編集]

Let:

k1 = 839c7a4d7a92cb67a5d59ea5a7573c8a74deb366c3dc20a083b69f5d2a3bb3719dc69891e9f95e809fd7e8b23ba6318ed45e51fe39708bf9427e9c3e8b9
k2 = 839c7a4d7a92cb678a5d59aa5a7573c8a74deb366c3dc20a083b69f5d2a3bb3719dc69891e9f95e809fd7e8b23ba6318ed45e51fe39708bf9427e9c3e8b9

k1≠k2であるが、MD4(k1)= MD4(k2)= 4d7e6a1defa93d2dde05b45d864c429b

2つの16進数のk1とk2は、入力文字列の1バイトを定義します。その長さは64バイトです。

関連項目[編集]

ソース[編集]

http://wikipedia.org/