低速の転送メディアを介して「大きな」データセットの整合性を部分的にチェックする効率的な手段を探しています。ファイルサイズが転送速度に比例して大きくなるため、これはよくある問題のようです。
たとえば、具体的な数値の場合、USB2 を介したテラバイトのデータです。すべてのバイトをハッシュまたはチェックサムに読み取ってこのデータがまだ有効であることを確認するには、1 日を要し、ドライブ障害のリスクが高まります。
代わりに、このコードはデータのランダムな部分を検証し、利用可能な時間に基づいて有効性の確率を提供する必要があります。十分に長く実行できる場合、すべてのブロックが検証されます (データセット全体を読み取る基本ケース)。
使用法「ストーリー」:
-- 暗号化された大きなコンテナ (サイズ 1TB .. 1GB) に格納されたデータ。
-- 各コンテナは、異なる場所にある複数のドライブ セットに冗長的にバックアップされました。
-- 検証チェックは、基礎となるデータまたはキーを知らなくても実行する必要があります。
アプローチが検出するために必要な障害モード:
- ストレージ トランスポート障害 (コントローラーが物理アドレスの一部を削除するなど) - セクター エラー (特定のブロックに対してデータが返されない)
- シングル ビット エラー (非 ECC メモリまたはキャッシュ)
エラーが検出されると、データは冗長ストレージから回復されます。検証データは、おそらく別個に保管する必要があります。
目標はデータの整合性であるため、ファイル共有ネットワークの手法は適用できないようです。「ハッシュ ツリー」では、各ノードでハッシュの完全なストレージが必要になります。攻撃者。
- ストレージ容量とファイルの関連ブロックを読み取る時間とのトレードオフをどのように判断できますか?
- ハッシュツリー/ハッシュリストが最善の方法である場合、ハッシュの部分的な値を保存するのはどのくらい安全ですか?
- チェックサムまたはエラー修正コードは、同等の保護のためにハッシュよりも優れた選択肢でしょうか?