MD5は十分に文書化された脆弱性を持っているように見えますが、それでもその使用方法は広く普及しています。他の選択肢(SHA-2など)がより堅牢であると思われる場合、実行可能なオプションであるという理由はありますか?
MD5は十分に文書化された脆弱性を持っているように見えますが、それでもその使用方法は広く普及しています。他の選択肢(SHA-2など)がより堅牢であると思われる場合、実行可能なオプションであるという理由はありますか?
回答:
生成は迅速で、多くの場合、衝突が理論的に可能であるという事実は大きな問題ではありません。つまり、新しいコピーのダウンロードを回避するために、キャッシュファイルが変更されたかどうかを確認します。
1996年に行われた簡単なベンチマークは、次のことを示しています。
Digest Performance in MegaBytes per Second
Pentium P5 Power Mac SPARC 4 DEC Alpha
90 MHz 80 MHz 110 MHz 200 MHz
MD5 13.1 3.1 5.1 8.5
SHA1 2.5 1.2 2.0 3.3
現代の使用-組み込みチップでは、MD5は同じ情報に対してSHA1よりも2〜3倍高速に生成できます。
MD5ハッシュは、ほとんどの些細な作業には「十分」です。同じバイト数で意味のある衝突を生成することは依然として非常に難しいことを思い出してください。
たとえば、来週、信頼できるミラーから新しいUbuntu 9.10をダウンロードするとします。ファイルが正しく完全にダウンロードされたことを確認します。MD5を起動してISOをハッシュするだけです。ハッシュと公開されたハッシュを比較します。ハッシュが一致する場合、ISOが正しく完全にコピーされたことを確認できます。
そして、塩漬けにすることでセキュリティを改善できます。
MD5は高速で衝突率が非常に低いため、チェックサムハッシュ関数として広く使用されています。MD5チェックサムは32桁の16進数で構成され、これらが一緒になって、衝突のオッズ〜3.42e34の1を提供します。理論的には、米国のサイズの国のすべてのコンピューター内のすべてのファイルをハッシュし、衝突を発生させることはできません(*)。
暗号化の場合、セキュリティが中程度の懸念事項である場合、MD5は有効な代替手段です。これは、データベースパスワードまたはその速度のために内部セキュリティを必要とする他のフィールドをハッシュするための非常に実行可能なオプションですが、MD5は強力な暗号化が懸念されない合理的なレベルのセキュリティを提供するためです。
(*)ほとんどのチェックサムの目的で、衝突は、同じサイズの同じ起源の2つのオブジェクト間で発生する場合にのみ意味があります。MD5の高い一意性の確率にもかかわらず、最終的に2つの非常に異なるファイル間で衝突が発生する可能性があります。1.5Mbデータベースファイルと35k gifファイルがあるとします。ほとんどの場合、これは無意味な衝突です。MD5はファイルインデックスの1つの要素にすぎないためです。ファイルサイズも重要です。
sha256sum filename.iso
代わりに実行するのはどのように難しいmd5sum filename.iso
ですか?