この記事は機械翻訳されました。
メッセージ・ダイジェスト・アルゴリズム MD5 は、デジタル署名またはメッセージ・ダイジェストの生成と検証に使用される暗号ハッシュです。MD5 は、10 年以上前に「暗号が壊れている」と宣言されたにもかかわらず、まだ広く使用されています。
暗号化ハッシュとして、IT部門には、2つの異なるメッセージが同じ生成されたハッシュ値を持つ衝突の可能性が高いなど、既知のセキュリティ脆弱性があります。
MD5 は、意図しない破損に対するデータの整合性を検証するためのチェックサムなど、非暗号化機能にうまく使用できます。MD5 は 128 ビット アルゴリズムです。IT部門がセキュリティ問題を認識しているにもかかわらず、IT部門は依然として最も一般的に使用されるメッセージダイジェストアルゴリズムの1つです。
MD5 メッセージダイジェストアルゴリズムとは何ですか?
約 30 年前に RFC 1321 として公開された MD5 メッセージ ダイジェスト アルゴリズムは、今日でも広く使用されています。MD5 アルゴリズムを使用すると、可変長のメッセージ入力から 128 ビットのよりコンパクトな出力を作成できます。これは、デジタル署名を生成するように設計された暗号化ハッシュの一種であり、大きなファイルを安全な方法で小さなファイルに圧縮し、公開鍵と一致する秘密(または秘密)キーで暗号化します。
MD5は、Java、Perl、Cなどの一般的なコンピュータ言語を使用したコマンドライン実装として、大規模なファイルコレクション内のファイルの破損や不注意による変更を検出するためにも使用できます。MD5は、データの整合性とデジタル署名を検証するチェックサムとして使用できます。MD5 のその他の非暗号化機能には、パーティション・データベース内の特定のキーのパーティションを IT を使用して決定することが含まれます。
MD5 は、128 ビット暗号化ハッシュを印刷 (生成) またはチェック (検証) するために使用できます。ただし、MD5 には、十分に文書化された深刻な脆弱性と欠陥がいくつかあります。このため、IT をセキュリティ目的で使用しないでください。
MD5 の使用履歴
暗号化ハッシュ関数MD4の拡張として開発されたMD5は、1991年にRSA Data Security、Inc.のRonald RivestとMITコンピュータサイエンス研究所によって作成され、安全でないと見なされたこの以前のバージョンを置き換えました。ITは1年後に公開ドメインで公開されました。 そのわずか1年後、MD5圧縮機能の「疑似衝突」が発見されました。
MD5 で発見された(および悪用された)脆弱性のタイムラインは次のとおりです。
- 1996 年に完全な衝突が報告され、暗号学者は MD5 を SHA-1 などの別の暗号化ハッシュ関数に置き換えることを推奨しました。
- 2004 年の初めに、MD5 が 128 ビットのハッシュ値のサイズが小さいため、バースデー攻撃に対して脆弱であることを証明するプロジェクトが始まりました。
- 2004年半ばまでに、解析攻撃はわずか1時間で完了し、完全なMD5の衝突を引き起こすことができた。
- 2005 年には、異なる公開鍵と同じ MD5 ハッシュ値を持つ 2 つの X.509 証明書を使用して、実際の衝突が実証されました。数日後、わずか数時間でMD5の衝突を構築できるアルゴリズムが作成されました。
- 1年後の2006年に、トンネリングを使用して1台のノートブックコンピュータで1分以内に衝突を見つけるアルゴリズムが発表されました。
- 2008 年、MD5 ハッシュは、有名な証明書認証局 (CA) によって発行された信頼できる X.509 証明書と競合するように作成できるため、MD5 は公式に "暗号的に壊れている" と宣言されました。
既知のセキュリティの脆弱性と問題にもかかわらず、MD5 は、より安全な代替手段が存在するにもかかわらず、今日でも使用されています。
MD5 のセキュリティ問題
MD5ハッシュ関数のセキュリティは、深刻な漏洩/侵害であると考えられています。 衝突は数秒以内に発見され、悪意のある目的に使用される可能性があります。
実際、2012年には、イランの何千ものコンピューターやデバイスに侵入したスパイウェア「Flame」は、その年で最も厄介なセキュリティ問題の1つと見なされていました。Flame は MD5 ハッシュの衝突を使用して、重要なシステムの認証に使用される偽造の Microsoft 更新証明書を生成しました。幸いなことに、この脆弱性はすぐに発見され、このセキュリティホールを埋めるためのソフトウェアアップデートが発行されました。これには、Microsoft 証明書に SHA-1 を使用するように切り替えることが含まれていました。
ハッシュの衝突は、2 つの異なる入力が同じハッシュ値または出力を作成するときに発生します。ハッシュ アルゴリズムのセキュリティと暗号化は、一意のハッシュ値の生成に依存し、競合は悪用される可能性のあるセキュリティの脆弱性を表します。
脅威アクターは、衝突を強制し、デジタル署名を送信して受信者が受け入れることができます。IT部門が実際の送信者ではない場合でも、衝突は同じハッシュ値を提供するため、脅威アクターのメッセージは検証され、正当なものとして受け入れられます。
どのプログラムがMD5を使用していますか?
IT部門には既知のセキュリティ問題がありますが、ソフトウェアではパスワードのハッシュ化にMD5が使用されています。 MD5 は、パスワードの一方向ハッシュでパスワードを格納するために使用されますが、IT はこの目的に推奨されるハッシュには含まれていません。 MD5は一般的で使いやすく、開発者はパスワードのハッシュ化と保存にITを選択することがよくあります。
MD5は、サイバーセキュリティでもデジタル署名の検証と認証に使用されています。MD5を使用すると、ユーザーは公開鍵と秘密鍵、およびハッシュ値を一致させることで、ダウンロードしたファイルが本物であることを確認できます。ただし、MD5 の衝突率が高いため、このメッセージ ダイジェスト アルゴリズムは、脅威アクターがハッシュ値を独自のハッシュ値に簡単に置き換えることができるため、データやファイルの整合性を検証するのには理想的ではありません。
MD5をチェックサム機能として使用してデータの整合性を検証し、ITが誤って破損していないことを確認できます。 ファイルは、次のいずれかの方法で意図せずに変更された場合にエラーが発生する可能性があります。
- データ伝送のエラー
- ソフトウェアのバグ
- ファイルをコピーまたは移動すると、書き込みエラーが発生する可能性があります
- 記憶媒体内の問題
メッセージ・ダイジェスト・アルゴリズム MD5 を使用すると、出力が入力と同じであることを確認することで、データが IT の初期と同じであることを確認できます。 ファイルが誤って変更された場合、入力は異なるハッシュ値を作成し、一致しなくなります。これは、ファイルが破損していることを示しています。ただし、これはデータが意図せずに破損した場合にのみ有効であり、悪意のある改ざんの場合は有効ではありません。
MD5の関連アプリ
MD5 は、セキュリティ上の目的や衝突耐性が重要な場合は使用しないでください。セキュリティの脆弱性が証明されており、MD5 を使用して衝突を簡単に作成できるため、他のより安全なハッシュ値をお勧めします。
ハッシュの SHA-2 ファミリーは、通常、有効な代替手段として選択されます。この暗号化ハッシュ関数ファミリは、2001年に最初に公開され、次のものが含まれます。
- SHA-256の
- SHA-224 (英語)
- SHA-384の
- SHA-512
- SHA-512/224
- SHA-512/256
SHA-1 は古いタイムスタンプやデジタル署名の検証にも使用できますが、NIST (National Institute of Standard and テクノロジー) では、デジタル署名の生成や衝突耐性が必要な場合に SHA-1 を使用することを推奨していません。
NIST によって承認された暗号化ハッシュには、SHA-2 ファミリと、次の 4 つの固定長 SHA-3 アルゴリズムが含まれます。
- SHA3-224の
- SHA3-256
- SHA3-384
- SHA-512
SHA-2 および SHA-3 ファミリの暗号化ハッシュ関数は、安全で、MD5 メッセージ ダイジェスト アルゴリズムの代替手段として推奨されます。これらは、潜在的な衝突に対してはるかに耐性があり、真に一意のハッシュ値を生成します。
参考文献
MD5 メッセージダイジェストアルゴリズム。(1992年4月)。Network Working Group (グループ) Internet Engineering Task Force (IETF).
RSAです。(2022).RSAセキュリティLLC.
MITのCSAIL。MITのCSAIL。
今回はMD5が本当にひどく壊れています。(2008年12月)。セキュリティの黙想。
Flame の MD5 衝突は、2012 年の最も懸念されるセキュリティの発見です。(2012年6月)。フォーブス。
ハッシュ関数に関する NIST ポリシー。(2015年8月)国立標準テクノロジー研究所(NIST)。
ハッシュ関数。(2020年6月、国立標準テクノロジー研究所(NIST)。