web-dev-qa-db-ja.com

ファイルの整合性のためのSHA-256またはMD5

セキュリティなどのためにMD5よりもSHA-256が好まれていることは知っていますが、ファイルの整合性のみをチェックする方法を使用する場合(つまり、パスワードの暗号化などとは無関係です)、 SHA-256を使用していますか?

MD5は128ビットであり、SHA-256は256ビットなので(したがって2倍の大きさ)...

  1. 暗号化に最大2倍の時間がかかりますか?

  2. バックアッププログラムのように時間が重要ではなく、ファイルの整合性がすべて必要な場合、別のアルゴリズムについてMD5に反論したり、別の手法を提案したりしますか?

  3. MD5を使用するとチェックサムが生成されますか?

54
Dave

SHA256とMDA5はどちらもハッシュアルゴリズムです。入力データ、この場合はファイルを受け取り、256/128ビットの数値を出力します。この番号はチェックサムです。実際には衝突はまれですが、入力の数が無限であれば同じハッシュ値になる可能性があるため、暗号化は行われません。

この答え によると、SHA256はMD5よりも計算に時間がかかります。

率直に言って、MD5はおそらくあなたが必要とするものに適しているでしょう。

60
dandan78

1):はい、ほとんどのCPUでは、SHA-256はMD5の約40%の速度です。

2):そのような場合、MD5とは異なるアルゴリズムを主張します。私は間違いなく安全と考えられるアルゴリズムを好むでしょう。しかし、これはもっと感覚です。これが重要なケースは、現実的ではなく構築されます。バックアップシステムでMD5ベースの証明書に対する攻撃の例に遭遇した場合、そのような例には異なるデータを含むが同じMD5チェックサムを持つ2つのファイルがある可能性があります。残りのケースでは、MD5チェックサムが衝突(=異なるデータに対して同じチェックサム)を持っているのは、事実上意図的に引き起こされた場合のみであるため、問題ではありません。私はさまざまなハッシュ(チェックサム生成)アルゴリズムの専門家ではないため、別のアルゴリズムを提案することはできません。したがって、質問のこの部分はまだ開いています。さらなる参考として、ウィキペディアの 暗号化ハッシュ関数-ファイルまたはデータ識別子 をお勧めします。そのページのさらに下には、暗号化ハッシュアルゴリズムのリストがあります。

3):MD5はチェックサムを計算するアルゴリズムです。このアルゴリズムを使用して計算されたチェックサムは、MD5チェックサムと呼ばれます。

15
Daniel S.

すべての答えは、あなたが仕事をするために安全なハッシュを使用する必要があることを示唆しているようですが、これらのすべては、ブルートフォース攻撃者に多くのコンピューティングパワーを持たせるために遅くなるように調整されており、あなたのニーズによってはこれは最良のソリューションではないかもしれません。

整合性と比較を確認するために、可能な限り高速にファイルをハッシュするように特別に設計されたアルゴリズムがあります(murmurXXhash...)。明らかに、これらは安全なハッシュアルゴリズム(ランダム性)の要件を満たしていないため、セキュリティ用に設計されていませんが、大きなメッセージの衝突率が低い 。この機能は、セキュリティではなく速度を求めている場合に最適です。

このアルゴリズムと比較の例は、この優れた答えにあります: どのハッシュアルゴリズムが一意性と速度に最適ですか?

例として、Q&Aサイトではmurmur3を使用してユーザーがアップロードした画像をハッシュし、ユーザーが複数の回答で同じ画像をアップロードした場合でも1回だけ保存します。

11
Marc Climent
  1. いいえ、遅くはありませんが、それほど遅くはありません
  2. バックアッププログラムの場合、MD5よりも高速なものが必要になる可能性があります。

全体として、ファイル名に加えてMD5も絶対に安全だと思います。 SHA-256は、サイズが大きいため、処理が遅く、難しくなります。

MD5より安全性の低いものを問題なく使用することもできます。誰もあなたのファイルの完全性をハッキングしようとしないなら、これも安全です。

8
Genesis Rock

基礎となるMD5アルゴリズムはもはや安全とは見なされないため、md5sumはセキュリティに関連しない状況で既知のファイルを識別するのに適していますが、ファイルが意図的かつ悪意を持って改ざんされている可能性がある場合は信頼しないでください。後者の場合、sha256sumなどの新しいハッシュツールの使用を強くお勧めします。

したがって、単にファイルの破損やファイルの違いを確認したい場合、ファイルのソースが信頼できる場合、MD5で十分です。信頼できないソースから送信されたファイル、または暗号化されていない接続を介した信頼できるソースから送信されたファイルの整合性を検証する場合、MD5では不十分です。

別のコメント者は、UbuntuなどがMD5チェックサムを使用していると指摘しました。 UbuntuはMD5に加えてPGPとSHA256に移行しましたが、より強力な検証戦略のドキュメントを見つけるのはより困難です。詳細については、 HowToSHA256SUMページ を参照してください。

7
jsears

MD5はSHA256よりも高速であることが技術的に承認されているため、ファイルの整合性を検証するだけで十分であり、パフォーマンスが向上します。

次のリソースをチェックアウトできます。

4
SaidbakR
  1. はい、ほとんどのCPUでは、SHA-256はMD5よりも2〜3倍遅いですが、主にハッシュが長いためではありません。他の回答と このStack Overflowの質問 への回答をご覧ください。
  2. MD5が適切ではないバックアップシナリオを次に示します。
    • バックアッププログラムは、バックアップされる各ファイルをハッシュします。次に、各ファイルのデータをハッシュによって保存します。したがって、同じファイルを2回バックアップする場合、そのコピーは1つだけになります。
    • 攻撃者は、制御するファイルをシステムにバックアップさせる可能性があります。
    • 攻撃者は、バックアップから削除するファイルのMD5ハッシュを知っています。
    • その後、攻撃者はMD5の既知の弱点を使用して、削除するファイルと同じハッシュを持つ新しいファイルを作成できます。そのファイルがバックアップされると、削除するファイルが置き換えられ、そのファイルのバックアップされたデータは失われます。
    • このバックアップシステムは、以前に遭遇したハッシュを持つファイルを置き換えないことで少し強化(および効率化)できますが、攻撃者は特別に構築された偽を事前にバックアップすることにより、既知のハッシュを持つターゲットファイルがバックアップされないようにすることができます同じハッシュを持つファイル。
    • バックアップなどのほとんどのシステムは、この攻撃が実用的であるために必要な条件を満たしていませんが、SHA-256がMD5よりも望ましい状況の例を挙げたいと思います。これが作成するシステムに当てはまるかどうかは、MD5とSHA-256の特性だけではありません。
  3. はい、MD5やSHA-256によって生成されるようなハッシュはチェックサムの一種です。

ハッピーハッシング!

0
dharcourt