1. 序章

この記事では、2つの暗号化アルゴリズム、つまり MD5 (メッセージダイジェストアルゴリズム)と SHA (セキュアハッシュアルゴリズム)について詳しく説明します。 それらについて詳しく説明し、その後、比較します。

2. 暗号化ハッシュ関数

まず、前述の両方のアルゴリズムの基本要素である暗号化ハッシュ関数を定義しましょう。 暗号化ハッシュ関数は可変長の入力を受け取り、hashと呼ばれる固定サイズの出力を生成します。 つまり、任意の大きさの入力を固定サイズのビット配列(ハッシュ)にマップします。

暗号化ハッシュ関数は一方向操作である必要があります。 したがって、ハッシュを使用してデータを取得することは不可能です。 一般に、ハッシュから有用な情報を推測したり取得したりすることはできません。 したがって、暗号化ハッシュ関数の疑似ランダム性が求められます。 さらに、暗号化ハッシュ関数は衝突耐性が必要です。 同じハッシュを生成する2つの異なるメッセージがあってはなりません。

暗号化ハッシュ関数は、データの整合性をチェックし、ファイルを識別するためによく使用されます。 データ自体を比較するよりもハッシュを比較する方が簡単で高速です。さらに、ハッシュは認証目的、データベースへの機密データ( passwords など)の保存、またはパスワード検証に使用されます。 ご覧のとおり、暗号化ハッシュ関数はアプリケーションまたはデータのセキュリティに強く関連しています。 したがって、それらは安全で信頼できるものでなければなりません。

3. MD5

MD5は、任意の長さのデータを取得し、128ビットのハッシュを生成する暗号化ハッシュ関数です。 暗号的に壊れていると考えられていますが、それでもいくつかの目的で広く使用されています。 最も一般的な使用法の1つは、パブリシティ共有ファイルの整合性を検証することです。 MD5アルゴリズムは、それぞれ32ビットで構成される16ワードに分割された512ビットチャンクのデータを処理します。 結果は128ビットハッシュです。

実際のMD5ハッシュを見てみましょう。 次の例を考えてみましょう。

MD5("The grass is always greener on the other side of the fence.") = d78298e359ac826549e3030104241a57

入力を変更するだけで(ドットを感嘆符に置き換える)、まったく異なるハッシュが生成されます。

MD5("The grass is always greener on the other side of the fence!") = 2e51f2f8daec292839411955bd77183d

このような特性は、アバランシェ効果と呼ばれます。

前述したように、MD5は暗号的に壊れていると見なされます。 そのセキュリティについて詳しく話しましょう。

3.1. 安全

暗号化ハッシュ関数の最も重要な属性の1つを思い出してみましょう。暗号化ハッシュ関数は衝突耐性が必要です。 。 簡単に言えば、 2つの入力が同じハッシュを生成することはありません

2011年、インターネット技術特別調査委員会(IETF)は RFC 6151 を公開し、MD5への攻撃の可能性について説明しました。 一部の攻撃では、平均的なコンピューターで1分以内に衝突が発生する可能性があります。 調査によると:

前述の結果は、デジタル署名などの衝突耐性が必要なアプリケーションでのMD5の使用を排除する十分な理由を提供しています。

したがって、 MD5は、高レベルのセキュリティを必要とするソリューションには推奨されなくなりました。 ただし、前述したように、ファイルのチェックサムとして広く使用されています。 例を考えてみましょう。 インディーデベロッパーがゲームを無料で公開しています。 ゲームファイルには特定のハッシュ値が割り当てられています。 サードパーティのサイトからゲームをダウンロードしています。 ダウンロードしたファイルのハッシュが異なる場合は、元のファイルではありません。 したがって、ウイルスである可能性があります。または、ダウンロード中にファイルが破損している可能性があります(ネットワークの問題などが原因)。

要約すると、MD5アルゴリズムにはセキュリティの脆弱性があり、暗号的に壊れていると見なされます。 現在、SHA-2のようなより安全なアルゴリズムがあります。 紹介しましょう。

4. SHA-2

SHAは、広く使用されているハッシュアルゴリズムのファミリーです。 現在、SHA-1、SHA-2、SHA-3の3つの主要なバージョンがあります。 この記事では、一般的なSHA-2アルゴリズムに焦点を当てます。 SHA-2は、同じアルゴリズムを使用するが定数が異なるさまざまなバリアントで構成されています。したがって、これらは、224、256、512ビットなどのさまざまな長さの出力を生成します。 バリアントは、SHA-224、SHA-256、SHA-512などと呼ばれることがよくあります。 ただし、これらはすべてSHA-2のサブバージョンです。 MD5セクションの例を使用して、実際のSHA-256を見てみましょう。

SHA256("The grass is always greener on the other side of the fence.") = d017bcafd6aa208df913d92796f670df44cb8d7f7b548d6f9eddcccf214ac08a
SHA256("The grass is always greener on the other side of the fence!") = a8c655db7f4d0a3a0b34209f3b89d4466332bbf2745e759e01567ac74b23a349

SHA2-はそのセキュリティで知られています。 暗号通貨、 TLS SSL SSH 、パスワードハッシュ、デジタル署名検証などの複数の目的に使用されます。 さらに、一部の米国では、SHA-2を法律で使用する必要があります 主に機密データを保護するための政府のアプリケーション。

4.1. 安全

SHA-256アルゴリズムのセキュリティを分析してみましょう。 これは、最も安全で人気のあるハッシュアルゴリズムの1つです。 まず第一に、それは一方向の操作です。 したがって、ハッシュから入力を再構築することはほとんど不可能です。 理論的には、ブルートフォース攻撃はこれを達成するための試みを必要とします。

次に、 SHA-256は衝突耐性があります。これは、ハッシュ値が存在する可能性があるためです。 したがって、実際には衝突の可能性はほとんどありません。

最後に、SHA-256はアバランシェ効果に従います。 入力を少し変更すると、まったく異なるハッシュが生成されます。

要約すると、 SHA-256は、暗号化ハッシュ関数の重要な要件をすべて満たしています。 したがって、高レベルのセキュリティを必要とするアプリケーションで非常に頻繁に使用されます。

5. MD5対。 SHA-2

これで、MD5とSHA-2の基本がわかりました。 それらを比較してみましょう。 まず、MD5は128ビットのハッシュを生成します。 SHA-2には、さまざまな長さのハッシュを生成できるSubversionが含まれています。 最も一般的なのは、256ビットのハッシュを生成するSHA-256です。

第二に、 SHA-2は、特に衝突耐性の点で、MD5よりも安全です。 したがって、MD5を高セキュリティの目的で使用することはお勧めしません。 一方、SHA-2は、デジタル署名やSSLハンドシェイクなどのセキュリティの高い目的で使用されます。 さらに、SHA-2に対する攻撃の報告はMD5よりも少なくなっています。 MD5は暗号的に壊れていると見なされ、平均的なコンピューターによって攻撃される可能性があります。

速度の点では、MD5はSHA-2よりもわずかに高速です。 したがって、MD5は、ファイルの整合性を検証するためのチェックサムとしてよく使用されます。

要約すると、ほとんどの場合、SHA-2はMD5よりも優れています。 より安全で信頼性が高く、破損する可能性が低くなります。 速度が主な基準になるまで、SHA-2がMD5よりもわずかに遅いことは実際には問題ではありません。 SHA-2には、さまざまな長さのハッシュを生成するサブバージョンがあります。 ハッシュが長いほど、アルゴリズムが遅くなります。 したがって、SHA-256はセキュリティと速度の最適なバランスのようです。

6. 結論

この記事では、MD5およびSHA-2アルゴリズムについて詳しく説明しました。 次に、両方を比較しました。 結論として、特にセキュリティに関しては、ほとんどの場合、SHA-2はMD5よりも優れています。 一方、MD5は、高レベルのセキュリティを必要としないソリューションで、速度が主な基準である場合に使用できます。