メインコンテンツまでスキップ

RFC 1321 - MD5メッセージダイジェストアルゴリズム

  • ステータス: Informational
  • 発行日: April 1992
  • ストリーム: IETF
  • エラッタ: エラッタなし

このメモのステータス​

このメモは、インターネットコミュニティに情報を提供します。インターネット標準を規定するものではありません。このメモの配布は無制限です。


謝辞​

Don Coppersmith、Burt Kaliski、Ralph Merkle、David Chaum、Noam Nisanの各氏に、多くの有益なコメントと提案をいただいたことに感謝します。


目次​

付録​

追加セクション​


関連リソース​



2. Terminology and Notation (用語と表記法)​

本文書では、「ワード (Word)」は32ビット量、「バイト (Byte)」は8ビット量を意味します。ビット列は、自然な方法でバイト列として解釈でき、各連続する8ビットのグループは、各バイトの最上位ビット (Most Significant Bit) を最初にリストしてバイトとして解釈されます。同様に、バイト列は32ビットワード列として解釈でき、各連続する4バイトのグループは、最下位バイト (Least Significant Byte) を最初に与えてワードとして解釈されます。

x_iは「xのサブi」を表します。添字が式の場合、x_{i+1}のように中括弧で囲みます。同様に、累乗には^を使用し、x^iはxのi乗を表します。

記号「+」は、ワードの加算 (すなわち、モジュロ2^32加算) を表します。X <<< sは、Xをsビット位置だけ左に循環シフト (回転) して得られる32ビット値を表します。not(X)はXのビット単位の補数を、X v YはXとYのビット単位のORを表します。X xor YはXとYのビット単位のXORを、XYはXとYのビット単位のANDを表します。



4. Summary (まとめ)​

MD5メッセージダイジェストアルゴリズムは実装が簡単で、任意の長さのメッセージの「フィンガープリント」またはメッセージダイジェストを提供します。同じメッセージダイジェストを持つ2つのメッセージを生成する難しさは2^64演算のオーダーであり、与えられたメッセージダイジェストを持つメッセージを生成する難しさは2^128演算のオーダーであると推測されています。MD5アルゴリズムは、弱点について慎重に精査されています。しかし、これは比較的新しいアルゴリズムであり、この種の新しい提案の場合と同様に、さらなるセキュリティ分析が正当化されます。



5. Differences Between MD4 and MD5 (MD4とMD5の違い)​

MD4とMD5の違いは次のとおりです。

  1. 第4ラウンドが追加されました。

  2. 各ステップに一意の加算定数が追加されました。

  3. ラウンド2の関数gが (XY v XZ v YZ) から (XZ v Y not(Z)) に変更され、gの対称性が低くなりました。

  4. 各ステップで前のステップの結果が加算されるようになりました。これにより、より高速な「雪崩効果 (Avalanche Effect)」が促進されます。

  5. ラウンド2と3で入力ワードがアクセスされる順序が変更され、これらのパターンが互いに似にくくなりました。

  6. 各ラウンドのシフト量がほぼ最適化され、より高速な「雪崩効果」が得られます。異なるラウンドのシフトは異なります。



Security Considerations (セキュリティに関する考察)​

このメモで説明されているセキュリティレベルは、MD5と公開鍵暗号システムに基づく非常に高いセキュリティのハイブリッドデジタル署名スキームを実装するのに十分であると考えられています。