適したハッシュ関数は、/データの破損を検出し、データの整合性をチェックするには?
-
26-09-2019 - |
質問
は破損を検出するために、ファイルの整合性チェック(チェックサム)のために最も適したハッシュ関数とは何ですか?
私は次のことを考慮する必要があります:
ファイルサイズの広い範囲(10ギガバイト+に1キロバイト)
異なるファイルタイプの多く
ファイルの大規模なコレクション(+/- 100 TBと成長している)。
ドゥ大きなファイルに高い必要がダイジェストサイズ(SHA-1、SHA 512対)?
私は、SHA-ファミリは暗号学的ハッシュ関数と呼ばれていることがわかります。彼らは、このようなファイルの破損を検出するなどの「汎用」の使用には不向きていますか? MD5や虎のようなものが良いでしょうか?
改ざん悪意のあるも懸念される場合は、あなたの答えの変更は、
?最適なハッシュ関数をw.r.tます外部ライブラリは勝利XP SP3 +でのみ利用できいただきましオプションではありません。
当然のことながらパフォーマンスが問題でもある。
(それが間違っている場合は、このテーマに関する私の知識は非常に限られている私の専門用語を言い訳してください)。
解決
任意の暗号学的ハッシュ関数、さえ壊れ一つは、不慮の破損を検出するための罰金となります。所定のハッシュ関数は限界、すなわちテラバイトの2百万人について、少なくとも2 64 ビットである一部のみの限界まで、しかしすべての標準ハッシュ関数の入力のために定義されてもよいです。それは非常に大きいのです。
ファイルの種類には入射何を持っていません。ハッシュ関数は関係なく、これらのビットが表すもののビット(又はバイト)のシーケンスで動作します。
ハッシュ関数のパフォーマンスが問題になることはほとんどありません。でも、「遅い」のハッシュ関数(例えばSHA-256)は、より速く、一般的なPCのハードディスクよりも実行されます:ファイルを読み込むことはボトルネックになり、それをハッシュない(2.4 GHzのPCを高速でSHA-512を使用してデータをハッシュすることができます近い単一のコアを使用して200メガバイト/秒)です。ハッシュ関数のパフォーマンスが問題である場合は、あなたのCPUは非常に微弱であるか、あなたのディスクが高速なSSDです(とあなたが速いSSDの100 TBを持っているならば、私は一種嫉妬のです)。その場合、いくつかのハッシュ関数は、MD5は、「高速」機能の一つ(ある、幾分速く以外であるが、 MD4 )の方が高速です、そしてそのコードは非常に手間をかけずに任意のアプリケーションに含まれ得ることが簡単で十分です。
改ざん悪意のあるが懸念される場合は、は、これはセキュリティ上の問題になると、それはより複雑です。まず、あなたは、暗号切れ目のないハッシュ関数の一つ、それ故にSHA-256またはSHA-512、ないMD4、MD5やSHA-1を使用するようにします(弱点は、特定には適用されない場合がありますMD4、MD5とSHA-1で見つかりました状況が、これは微妙な問題であり、安全でプレーすることをお勧めします)。その後、ハッシュは、攻撃者は、ハッシュ結果へのアクセスを有するかどうかに応じて、十分であってもなくてもよいです。おそらく、あなたは鍵付きハッシュの一種と見なすことができ MAC を、使用する必要があります。 HMAC には、ハッシュ関数のMACアウトを構築するための標準的な方法です。他の非ハッシュベースのMACがあります。また、MACは、あなたは何人かの人々がサイレント変更を行うことができず、ファイルの整合性を検証することができるようにしたい場合は、適切なされていない秘密の「対称」キーを使用しています。その場合、あなたは、デジタル署名に頼らなければならないでしょう。簡潔にするために、セキュリティコンテキストで、あなたは明確に定義された攻撃モデルと徹底したセキュリティ分析を必要とします。