md5sum
ファイルの整合性の検証に使用する場合、プロセスはどの程度正確ですか?
検証済みのMD5は、すべてのビットがまったく同じであることを意味しますか、それともバイナリ変更がMD5に反映される前に破らなければならないしきい値がありますか?
md5の生成方法に関するドキュメントも歓迎します。
md5sum
ファイルの整合性の検証に使用する場合、プロセスはどの程度正確ですか?
検証済みのMD5は、すべてのビットがまったく同じであることを意味しますか、それともバイナリ変更がMD5に反映される前に破らなければならないしきい値がありますか?
md5の生成方法に関するドキュメントも歓迎します。
回答:
MD5は、インテリジェントな敵に対してこの目的のために壊れています。同じMD5ハッシュを生成する2つの異なるデータブロックを悪意を持って構築することが可能です。
ただし、MD5を使用して、転送中またはストレージ内の不注意なデータ破損から保護することは(ほぼ確実により良い方法がありますが)完全に適切です。このようなイベントによってMD5ハッシュが同じになる可能性があると考えられますが、その確率は非常に低いため、心配するに値する確率になることはほとんど想像できません。背景放射、トンネリング、静的、および他の数十のソースによって引き起こされる障害は、桁違いに高い確率で発生します。
1兆個のデータがある場合でも、一致しないMD5がそれらの1兆個に属するMD5ハッシュを生成する確率は、1兆個に1個よりはるかに少ないです。
MD5はハッシュです。基本的に、ファイルのコンテンツ全体を、16バイト長のIIRCである小さな文字列にマップします。
明らかに、同じMD5合計にハッシュする複数のファイルがあります。したがって、一致するMD5合計は、ファイル間の正確な一致を保証するものではありません。
ハッシュが機能するため、そのようなしきい値はありません。そのため、MD5の合計は、1ビットの変化でも検出できます。ただし、多くの単一ビットの変更により、MD5ハッシュが同じになる場合があります。したがって、MD5を使用してランダムな破損に対するファイルの整合性を検証することは非常に合理的ですが、MD5ハッシュが同じであることを確認しながらファイルを変更する可能性があるため、悪意がある場合はできません。
MD5-ハッシュは128ビットで構成されています。ソース内の単一の反転ビットは、ハッシュ内で(平均して)64ビットを反転します。
2つのハッシュが偶然に衝突する確率は1/2 ^ 128であり、これは340分の1に相当します。
ただし、すべてのハッシュを保持する場合、誕生日の逆説のおかげで確率は少し高くなります。ハッシュが衝突する確率が50%になるには、2 ^ 64個のハッシュが必要です。つまり、衝突を発生させるには、平均して、100年間で1秒あたり60億個のファイルをハッシュする必要があります。
ソース:porneL、https://stackoverflow.com/questions/201705/how-many-random-elements-before-md5-produces-collisions