web-dev-qa-db-ja.com

NTFSで書き換えられたファイルは同じブロックを使用しますか?

Windows 7のボックスであるNTFSファイルシステムで機密文書を作成するとします。ドキュメントを書き込むと、ドキュメントは長くなり、保存を続けます。つまり、エディターはドキュメントを最初から上書きし、長さをゼロに切り捨てて、新しいコンテンツを再作成します。

エディター自体が同じファイルシステムオブジェクト自体を再利用すると仮定すると、ファイルシステムは、ディスク上の同じ物理ブロックを既存のファイルのすべての部分に使用することが保証されますか?または、ファイルの末尾が切り捨てられるため、すぐに新しいブロックを割り当てることができますか?

それとも、ファイルの書き込み方法に依存しますか?

セキュリティとの関連性は、前のブロックが解放され、潜在的に異なるブロックがファイルに割り当てられている場合、ファイルを細断して破壊するだけでは不十分であることです。複数の保存を行った後、すべての空き領域を消去する必要があります。これを回避するには、ファイルを1つのパスで作成するか、保存する前にエディターの外でディスク上のコピーを細断処理す​​る必要があります。

8
Kaz

一般に、ブロック割り当てはファイルシステムで最もコストのかかる操作であるため、特に可能な場合はブロックを再利用することにより、ファイルシステムはそれを回避するためにかなり努力します。これは、次のことを意味します。

  • 既存のファイルを上書きすると、同じブロックが再利用されます。新しいファイルデータが上書きされたファイルのデータを超えると、新しいブロックが割り当てられます。

  • 既存のファイルを切り捨てると、すべてのブロックが解放されるため、潜在的に他のファイル操作で再利用できます。その場合、新しいファイルが新しいブロックを割り当てることがあります。新しいファイルの内容が同じブロックを再割り当てする保証はなく、特に、古いブロックがその間に他のファイルに再割り当てされた可能性があります。

ただし、ファイルシステムの内部に大きく依存します。 Log-structured filesystems パーティション全体ですべての書き込みを順番に実行するため、このようなファイルシステムでは、新しいファイルがしないことがほぼ保証されています古いファイルのブロックを上書きします。 ジャーナリングファイルシステム は、実際の永続的なストレージ(ジャーナリングがファイルコンテンツに拡張されるか、メタデータのみに拡張されるかに応じて)に加えて、ファイルコンテンツを追加の構造(「ジャーナル」)にコピーします。一部のファイルシステムは、リストの代わりにツリーを使用して、ログ構造のファイルシステムとして表示できる「フェーズツリー」も使用します。これらの場合、上書きが発生する場合と発生しない場合があります。

考慮すべき重要な点は、ブロック割り当て戦略はfilesystemだけでなく、implementationにも依存するということです。 Windows XPとWindows 7が同じNTFSファイルシステムで同様に動作することを保証するものではありません。1つのOSバージョンでは、「高速化(再)」するために古いブロックを回避する価値があるかもしれません。これはすべて調整され、再調整されたヒューリスティックです。したがって、「NTFS」に関する質問に実際に答えることはできません。「OS foobar、バージョン42.17、ビルド3891に実装されているNTFS」について話す必要があります。 」.


さらに、、これらすべてのブロックはOSが認識しているものです。実際の物理ストレージは異なる場合があり、データを移動/コピーします。これはSSDのウェアレベリングアルゴリズムの典型です。一般的に言って、SSD上のファイルの上書き/シュレッダーは信頼できません(詳細とポインタについては この答え を参照してください)。しかし、一部のデータ移動は、磁気ディスクでも発生する可能性があります(特に、不安定なセクターが検出された場合、再マッピングはその場で行われ、古いセクターはそのまま残ります)。

これは基本的に、ファイルの細断処理がうまく機能しないことを意味しますデータが確実に保証されない破壊されました。ファイルの細断処理は、他の方法が失敗した場合、または誤って適用されなかった場合の緊急手段としてのみ使用してください。ファイルを完全に破棄する正しい方法は次のとおりです。

  • ディスク全体の大規模な破壊。酸に溶かして.
  • Encryption:データが暗号化されている場合、キーを破棄するだけでデータを回復できなくなります。これは問題を完全に解決するわけではありませんが(それでもデータ要素を破棄する必要があります)、はるかに簡単になります(キーは小さく、128ギガバイトを破棄するよりも128ビットを破棄する方がはるかに簡単です) )。

Secure erasing は、ディスクに適切に実装されている場合、暗号化トリックで機能します。

4
Thomas Pornin

まず、ドライブがSSDの場合は、OSが何をしているよりもドライブがウェアレベリングを実行するため、OSが同じブロックに書き込んでも、データが別のドライブの場所に書き込まれる可能性があることを意味します。

Windowsでは、物理データの割り当てをディレクトリエントリ(ファイル名)から分離するほとんどのLinuxシステムとは異なり、ファイル記述子にはファイル名が含まれます。したがって、既存のファイルの書き換えを開始すると、OSは後続のすべてのブロックを最初のブロックからリンク解除するため、最初のブロックは同じままですが、後続のブロックは再割り当てされます。

ファイルの安全な消去を行うツールが利用可能で、ファイルを切り捨てることなくファイルへの破壊的な書き込みを実行し、ファイル名を変更してディレクトリエントリを上書きします。

1
Stuart

同じブロックが使用されるとは想定できません。そして、他の回答で述べたように、SSDとウェアレベリングでは、それを制御することはできません。機密文書については、TrueCryptのような暗号化されたコンテナを提案します。暗号化されたスワップファイルも使用することを忘れないでください。

1
ott--

この動作は、使用しているドキュメント処理ソフトウェアの特性ですか? OOXML標準 を見てから久しぶりですが、ドキュメントを取得すると、かなり健全です。私はあなたがMicrosoft Officeを使用していることを前提にしていますが、あまりにも大きな飛躍を遂げた場合はご容赦ください。 OOXMLがコンテナーとして使用するZip形式により、仕様からコンテナーからファイルの一部をストリーミングする機能が利用可能になるという事実と相まって、この方法で作成されたドキュメントが不変のデータになる理由は考えられません。構造。

それがOfficeでなく、アプリケーションがこのように機能する場合、ソフトウェアエンジニアが明示的にこの機能を許可しない限り、コンパイラーまたはカーネルで最適化されないことは確かです。

しかし、いくつかのチェックを行いたい場合は、常に fsutil を使用してファイルIDを検索できます。同様のコンセプトは、Posix INodesまたはVNodesです。cygwinがインストールされている場合は、 ls -i

さまざまなSSDアーキテクチャの内部をブラッシュアップする必要がありますが、この質問がTRIMに由来するのかどうか、そして(少なくともある時点で)ランダムな関数でファイルを上書きすることが確実ではない可能性があるのではないかと思います。ドライブのIOPをスムーズにするためにウェアレベリングアルゴリズムが適用される代わりに、実際にファイルが上書きされています。

私は誰かがこれについていくつかの光を当てることができることを願っていますが、おそらくそれの精神体操のためだけでなくても、あなたは間違った問題に集中している可能性があります。保管中のデータについて妥当な保証が必要であり、このドキュメントが機密性が高いため、漏洩を心配している場合。おそらく、ドキュメントまたはドライブを暗号化する必要があります。

0
M15K