1. Executive Summary (概要)
本文書は、MD5メッセージダイジェストアルゴリズム (MD5 Message-Digest Algorithm) を説明します。このアルゴリズムは、任意の長さのメッセージを入力として受け取り、128ビットの「フィンガープリント (Fingerprint)」または「メッセージダイジェスト (Message Digest)」を出力として生成します。同じメッセージダイジェストを持つ2つのメッセージを生成することや、指定された目標メッセージダイジェストを持つメッセージを生成することは、計算上実行不可能であると推測されています。MD5アルゴリズムは、デジタル署名アプリケーションを目的としており、RSAなどの公開鍵暗号システムの下で秘密鍵 (Secret Key) で暗号化される前に、大きなファイルを安全な方法で「圧縮」する必要がある場合に使用されます。
MD5アルゴリズムは、32ビットマシンで非常に高速に動作するように設計されています。さらに、MD5アルゴリズムは大きな置換テーブル (Substitution Table) を必要とせず、非常にコンパクトにコーディングできます。
MD5アルゴリズムは、MD4メッセージダイジェストアルゴリズム [1,2] の拡張版です。MD5はMD4よりもわずかに遅いですが、設計においてより「保守的 (Conservative)」です。MD5は、既存の批判的レビューによって正当化されるよりも早くMD4が採用されているのではないかという懸念から設計されました。MD4は非常に高速に動作するように設計されたため、暗号解読攻撃のリスクという点で「エッジ (Edge)」にあります。MD5は少し控えめにして、最終的なセキュリティの可能性をはるかに高めるために、速度を少し犠牲にしています。様々なレビュアーからの提案を取り入れ、追加の最適化を含んでいます。MD5アルゴリズムは、レビューと標準としての採用の可能性のために、パブリックドメインに置かれています。
OSIベースのアプリケーションの場合、MD5のオブジェクト識別子 (Object Identifier) は次のとおりです。
md5 OBJECT IDENTIFIER ::=
iso(1) member-body(2) US(840) rsadsi(113549) digestAlgorithm(2) 5}
X.509タイプのAlgorithmIdentifier [3] では、MD5のパラメータはNULL型であるべきです。