cryptsetupを使用してファイルに保存されている大容量暗号化ドライブを作成したいとします。最初のステップは、任意のファイルを作成することです。サイズは3Tでなければならないとしましょう。
dd if=/dev/urandom of=$FILE bs=1G count=3000
上記のプロセスは時間がかかることがあります。次のショートカットが適切かどうか疑問に思います(セキュリティの観点からは、目標は$ FILEに保存されている暗号化ドライブを作成することです)。
dd if=/dev/urandom of=$FILE bs=1G count=1000
- 上記のファイルの3つのコピーをコピーしてください。各ファイルのサイズは1Tで、同じランダムな内容を持っています。
- 3つのファイルをマージしてターゲットサイズが3Tの任意のファイルを1つ作成する
データが少し「少ない」ランダムなので、このプロセスは厳密ではないと思います。しかし、実用的な観点から見ると、これは実現可能なソリューションですか(ほぼ3倍速いでしょう)?これは0を使用して3Tファイルを作成するよりも優れていますか/dev/zero
?
答え1
/dev/urandom
このように大量のデータを処理するには遅すぎます。
疑似ランダム性が十分に良い場合:
shred -v -n 1 /kill/me
暗号化された乱数が十分な場合:
cryptsetup open --type=plain /kill/me cryptkillme
shred -v -n 1 /dev/mapper/cryptkillme
cryptsetup close cryptkillme
暗号化も遅いですが、まだ/dev/urandom
。
shred
任意のデータは、すべてのディスクに対して十分速く作成する必要があります。
また、このサイズでは、ファイルではなく通常のブロックデバイスを使用する必要があります。大容量ファイルをホストするファイルシステムが破損すると、このサイズのファイルが重大に断片化されることが多いため、断片化の問題により解決できない問題に直面します。
ファイルの使用に固執する場合は、最初からランダムなデータでいっぱいにならないことを検討できます。代わりに、スパースファイルを使用し、未使用領域の記憶領域を節約するためにファイルをトリミングまたはパンチすることができます。
暗号化されていない古いデータを上書きすることが目的である場合は、コンテナファイル自体だけでなく、ファイルシステムの利用可能なすべてのスペースも上書きする必要があります。目的の暗号化されていないデータと同じ場所に割り当てられているかどうかはわかりません。削除してください。
答え2
質問の最後の部分に答えるには、ゼロを使用するよりも同じランダムデータを3回使用する方が良いです。
ほとんど同じではありません。 3つの同一のランダムな部分のため、装置の全てのブロックは、3つの同一のブロックの一部である。したがって、攻撃者はデバイス上で変更されたブロックをマッピングすることができます。これは攻撃者がデバイスをゼロにすることによって得られる情報と同じです。これは、デバイスがいっぱいで、各トリプレットに3つの異なるチャンクがある場合にのみ失敗します。