web-dev-qa-db-ja.com

NTFSマスターファイルテーブル(MFT)に完全に保存できるファイルの最大サイズ

私はWindows7とNTFSを使用しています。 MFTは、機密性の高いドキュメントファイルを、ユーザーの知らないうちに上書きされる前に長期間保存できるため、セキュリティ上の大きなリスクであることに気付きました。

私が実行したすべてのテストでは、640バイト未満のファイルはMFTに常駐しており、安全に削除できないことがわかりました。ただし、640バイト以上のファイルは、すぐに安全に削除できます。これは、500GBのHDDと128GBのフラッシュドライブ(両方ともNTFS)に当てはまります。

たくさんのテキストファイルを作成し、それらに単語を書き込んでさまざまなファイルサイズを作成することで、これをテストしました。それらを削除し、ごみ箱を空にしてRecuvaを実行し、強調表示されたものを安全に削除します。 640バイト未満のファイルを安全に削除できません(ファイルはMFTに常駐していますメッセージが表示されます)。

これは、トリムが有効になっているSSDでも同じですか?なぜ640バイト?ワイプされたファイルのMFTエントリは最大512バイトだと思いましたか?

どんな入力でも大歓迎です。

4
Jeff

正しいツールを使用している限り、どのファイルも安全に削除できます。たとえば Sysinternals'SDelete はこれを処理できます

NTFSドライブでは、SDeleteのジョブは、2つのファイルを割り当てて上書きした後、必ずしも完了するとは限りません。 SDeleteは、NTFS MFT(マスターファイルテーブル)の既存の空き部分を、MFTレコード内に収まるファイルで埋める必要もあります。 MFTレコードのサイズは通常1KBであり、ディスク上のすべてのファイルまたはディレクトリには少なくとも1つのMFTレコードが必要です。小さなファイルは完全にMFTレコード内に保存されますが、レコード内に収まらないファイルはMFT外のクラスターに割り当てられます。空きMFTスペースを処理するためにSDeleteが行う必要があるのは、可能な限り最大のファイルを割り当てることです。ファイルがMFTレコードの使用可能なスペースをすべて占有すると、NTFSは、空きクラスターが残っていないため、ファイルが大きくなるのを防ぎます。ディスク(以前に割り当てられたSDeleteの2つのファイルによって保持されています)。その後、SDeleteはプロセスを繰り返します。 SDeleteが新しいファイルを作成できなくなった場合、MFTで以前に解放されていたすべてのレコードが、安全に上書きされたファイルで完全に埋められていることがわかります。

確かに、間違ったツールを選択したのは、ドキュメントを読んだらそれがわかるからです。

Recuvaはできません:

  • .。
  • マスターファイルテーブル(MFT)に保持されている特定の非常に小さいファイルと、長さがゼロバイトのファイルを安全に削除します。

Recuvaの紹介-できることとできないこと


なぜ640バイト?ワイプされたファイルのMFTエントリは最大512バイトだと思いましたか?

MFTに保存できるファイル( 常駐ファイル と呼ばれる)のサイズは、各ファイル、各システム、およびMFTに保存される情報によって異なります。 MFTのメタデータに使用されるデータが多いほど、ファイルに残されるデータは少なくなります。したがって、定義された制限はありませんが、Microsoftによると通常

900バイトより小さいファイルは、MFTのディレクトリエントリ内に保存されます

https://en.wikipedia.org/wiki/NTFS#File_compression

図「常駐レコードのあるMFTエントリ」は、小さなファイルまたはフォルダのMFTレコードの内容を示しています。小さなファイルとフォルダ(通常、900バイト以下)は、ファイルのMFTレコードに完全に含まれています。

https://technet.Microsoft.com/en-us/library/cc781134(WS.10).aspx

完全にMFTに保存されている という非常に最小限のメタデータを使用してサンプルの1000バイトファイルを作成しました。しかし、ファイルにメタデータ(ハードリンク、長い名前、ストリーム、アクセス許可など)を追加するとすぐに、常駐ファイルを収容できる最大スペースがすぐに減少します。

3
phuclv

MFTエントリの長さは1024バイトで( http://www.cse.scu.edu/~tschwarz/coen252_07Fall/Lectures/NTFS.html のMFTセクションを参照)、ファイル名だけでなくそれ以上のものを格納します。 -ファイルサイズ、読み取り/書き込み権限、作成/変更日、およびその他のメタ情報を含めることもできます。これらのアイテムにはすべてサイズが割り当てられているため、以前のバージョンのWindowsでは、ファイル名が長すぎるとエラーが発生する可能性がありました。これは、640バイトを超えるファイルを完全にテーブル内に格納できない理由でもあります。残りの384バイト(1024-640 = 384)は専用の割り当て用でした。

お使いのコンピューターには、1つではなく2つの同一のMFTがあることを知っておくと便利です。メインはHDDの外縁にあり、2番目は中途半端にあります。2番目はメインが損傷した場合のバックアップとして存在します。これは、エントリの書き込み中にコンピュータの電源が切れた場合に発生する可能性があります。または変更されました。すべてのMFTクリーニングプログラムは両方のテーブルから削除する必要があります(プロセスはBIOSまたはドライブのファームウェアによって処理されます)が、データセキュリティを極限まで高めたい場合は、これを覚えておく必要があります。

また、MFT行のサイズは、ドライブ(またはパーティション)のサイズとその使用目的に基づいて変更できます。 MFTの割り当てはHDDの10%を超える可能性があるため、データセンターとサーバーは非標準サイズを使用する可能性が高く、余分なスペースが貴重になります。ただし、1024バイトが標準です。

0
user3685427