リカバリハード(ある種のデータワイパー)を行うために、ファイルを開いてその中のすべてのバイトを置換するアプリケーションを開発したいと考えています。物理的位置 QFile
でn Mbのファイルを開き、その上にダミーデータのMbを書き込むと、同じ物理的な場所(WindowsとLinuxの両方)で上書きされますか?同じ物理アドレスにQFileを確実に書き込むには?
答えて
通常のファイルシステムでは、HDDドライブでは、ファイルの先頭に移動して正しいバイト量を書き込むだけで十分です。彼らは同じ場所に置かれます。あなたは、オペレーティング・システムは、それがあると思っていても、実際にデータが同じ場所に書き込まれていない場合、write aplificationに対処する必要があるため
はしかし、それは、SSDでこのようにそれを行うことはかなり難しいです。その代わりに、SSDの場合はTRIMコマンドを使用する必要があります。このコマンドはブロックを解放し、SSDコントローラは後でそれらを再利用できるようにゼロを書き換えます。最新のファイルシステムでは、ext4
またはntfs
のように、すでに削除されたファイルに対して行われています。
HDD上で再開すると、あなたの方法は良好で適用可能です。 SSDの場合は、データのコピーをいくつか作成するだけですので、FSドライバがTRIMを私のためにSSDコントローラに送信することを期待して、ファイルを削除してファイルを削除してください。
これは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に減らします。
- 1. 物理アドレスlinuxに書き込むことができます
- 2. QFileからQByteArrayを取得して同じファイルに書き込む
- 3. 異なるプロセスから同じファイルに確実に書き込む
- 4. 実行中に物理アドレスが同じ理由は何ですか?
- 5. jpaリポジトリ/ Hibernateが同じクエリをコンソールに書き込む理由
- 6. シェルループで同じファイルに書き込む
- 7. 同じ時間に同じファイルに書き込む
- 8. 物理ファイルの代わりにDrawing.Bitmapオブジェクトに書き込む
- 9. C - カーネルモジュールから物理メモリに書き込む
- 10. タイプライターのように同じ行に書き込む方法は?
- 11. ioremapやmmapを使わずにLinuxカーネルのキャッシュ可能な物理アドレスに書き込む
- 12. 同じパッケージにファイルを書き込む方法は?
- 13. MS SQLサーバーにトリガーを書き込むのは、MS Accessに書き込むのと同じですか?
- 14. 2つのUnixプロセスが同じ時刻に同じTCPソケットに書き込む
- 15. ERROR_ACCESS_DENIEDを取得せずに物理ドライブに書き込む方法(Windows 7)
- 16. log4net - サーバのIPアドレスをログに書き込むには
- 17. Java並行処理 - 同じ配列の異なるインデックスに書き込む
- 18. Linuxカーネルモジュールの同じセクションにコードとデータを書き込む
- 19. 同じ行にリストと値を書き込むcsv
- 20. 複数のシートを同じブックに書き込むPython pyexcelerateライブラリ?
- 21. Oracleを使用して同じファイルに書き込む
- 22. R foreachスレッドを同じログファイルに書き込む方法
- 23. 出力をTalend ETL内の同じxmlファイルに書き込む
- 24. 同じファイルに複数のスレッドを書き込む
- 25. 仮想アドレスを物理アドレスに変換
- 26. スレッドとプロセスを使用して同じファイルに同時に書き込む
- 27. 同じ列(csvファイル)に書き込むC
- 28. serilog appSettings同じサーバーパスのファイルに書き込むasp.net mvc
- 29. 複数のプロセスが同じファイルに書き込む(.net/c#)
- 30. 複数のスレッドが同じブール値に書き込む