2017-04-14 11 views
1

リカバリハード(ある種のデータワイパー)を行うために、ファイルを開いてその中のすべてのバイトを置換するアプリケーションを開発したいと考えています。物理的位置 QFileでn Mbのファイルを開き、その上にダミーデータのMbを書き込むと、同じ物理的な場所(WindowsとLinuxの両方)で上書きされますか?同じ物理アドレスにQFileを確実に書き込むには?

答えて

1

通常のファイルシステムでは、HDDドライブでは、ファイルの先頭に移動して正しいバイト量を書き込むだけで十分です。彼らは同じ場所に置かれます。あなたは、オペレーティング・システムは、それがあると思っていても、実際にデータが同じ場所に書き込まれていない場合、write aplificationに対処する必要があるため

はしかし、それは、SSDでこのようにそれを行うことはかなり難しいです。その代わりに、SSDの場合はTRIMコマンドを使用する必要があります。このコマンドはブロックを解放し、SSDコントローラは後でそれらを再利用できるようにゼロを書き換えます。最新のファイルシステムでは、ext4またはntfsのように、すでに削除されたファイルに対して行われています。

HDD上で再開すると、あなたの方法は良好で適用可能です。 SSDの場合は、データのコピーをいくつか作成するだけですので、FSドライバがTRIMを私のためにSSDコントローラに送信することを期待して、ファイルを削除してファイルを削除してください。

1

これはXY問題の匂いです。本当に必要なのは、データにアクセスできないようにすることです。ファイル自体のデータを上書きすることは、可能なアプローチの1つに過ぎません。

もう1つの方法は、問題を小さくすることです。単にファイルを上書きするのではなく、決して平文として保存しないでください。 AESを使用します。キーにアクセスできないとすぐに、データにアクセスできなくなります。キーは小さく、サイズは16〜32バイトです。

このような小さなキーを紛失するのはずっと簡単です。

私がよく見つけたアプローチは、ファイルシステムが専用ブロックを使用するのに十分な長さのいくつかのキーファイルにキーのバイトを配布することです。 128kbで十分です。私。 16バイト長のキーを格納するために、それぞれ128KBの16個のキーファイルを使用します。ファイルシステムが他のデータと結合するのではなく、専用のブロックを割り当てる可能性があるように、キーファイルをメモリマップする。最初の使用時には、キーファイルにランダムなデータを入力してください。

保存するキーごとに、キーの1バイトを各ファイルの同じオフセットに配置して、キーファイルに配布します。私。 key[key_no][key_offset] <-> key_file[key_offset][key_no]。保護されたファイルを失うには、そのキーをランダムなデータで上書きします。各保護されたファイルには1つのキーがあり、キーを共有しません。

敵対者は、同じ時点で複数のキーファイルの前の内容を回復する必要があります。いくつかのキーファイルの回復に成功したとしても、復元された各キーファイルはキーの1/16しか提供せず、ブルートフォース作業を256分の1に減らします。

関連する問題