データを復元できないように、可能であれば端末経由でUSBフラッシュドライブを削除する方法を知りたいです。
データを復元できないように、可能であれば端末経由でUSBフラッシュドライブを削除する方法を知りたいです。
回答:
TL / DR:適切なデバイス名を取得し、マウントされていないことを確認し、できるだけ多くのランダムな上書きを実行します。最新の十分なディストリビューションを使用している場合は、フラッシュハードウェア用に設計された消去コマンドを実行できます。これらのチェックでは、パーティション名(/ dev / sd h1)ではなく、常にドライブ(/ dev / sd hなど)を使用します
# dmesg|grep sdXX
[3600.000001] sd 6:0:0:0: [sdXX] 125106176 512-byte logical blocks: (64.0 GB/59.6 GiB)
# blkid|grep sdXX
/dev/sdXX1: PARTUUID="88a03bb2-ced8-4bb2-9883-0a51b4d460a8"
# df|grep /dev/sdXX
# shred -vzn8 /dev/sdXX
shred: /dev/sdXX: pass 1/9 (random)...
shred: /dev/sdXX: pass 1/9 (random)...46MiB/3.8GiB 1%
...
shred: /dev/sdXX: pass 9/9 (000000)...3.8GiB/3.8GiB 100%
# blkdiscard -s /dev/sdXX
blkdiscard: /dev/sdXX: BLKSECDISCARD ioctl failed: Operation not supported
# blkdiscard /dev/sdXX
blkdiscard: /dev/sdXX: BLKDISCARD ioctl failed: Operation not supported
#
理論的には、ゼロで上書きしても問題dd
ありません。ただし、フラッシュドライブの内部構造の構築方法により、単一の上書きパスを使用する場合、残りの情報を保存している実際のブロックの背後にいくつかのデータ層が隠れている場合があります。
通常、フラッシュストレージの一部に障害があり、製造中にそのようにマークされます。また、他のビットが間違っている可能性があり(変更不能、設定不能、または不明確になる)、これらの部品も寿命期間中に不良としてマークする必要があります。この情報は、データと同じチップ上の予約スペースに保存されます。これは、4GBのサムドライブに2 ^ 32バイトの容量が表示されない理由の1つです。
フラッシュストレージは、内部で大きなブロックに編成されており、ドライブで動作するファイルシステムよりもはるかに大きい場合もあります。一般的なファイルシステムのブロックサイズは4KBで、一度に消去できるフラッシュセグメントは64KBから数メガバイトに及ぶ場合があります。これらの大きなブロックは、全体を消去することしかできません。これにより、すべてのブロックが既知の状態(すべて1またはすべて0)にリセットされます。その後、データの書き込みで任意のビットを変更できます(必要に応じてデフォルトの1を0に変更するか、デフォルトの0を1に変更します)が、1 回だけです。ビットをデフォルトに戻すには、すべてのセグメントを再度消去する必要があります!
したがって、4KBブロックを変更する場合(ファイルシステムはファイルの途中で1文字を変更するように要求されます)、フラッシュコントローラーは64KBの古いデータをすべて読み取り、バッファリングし、すべてを消去し、新しい内容を書き戻します。これは非常に遅く、セグメントの消去が最も遅い操作です。また、セグメントは限られた時間(通常は数万回)でしか消去できないため、1つのファイルに多くの変更を加えると、ドライブがすぐに劣化する可能性があります。
しかし、これはその方法ではありません。インテリジェントフラッシュコントローラーは、4KBの新しいデータを別の場所に書き込むだけで、古いブロックの途中でこの4KBのデータに読み取りをリダイレクトするようにメモします。リダイレクトに関するこの情報を保存するために表示できないスペースが必要です。また、アクセス可能なすべてのセグメントを通過してデータを保存するようにします。これはウェアレベリングと呼ばれます。
これは、通常、古いデータがまだドライブのどこかにあることを意味します!アクセス可能なすべてのブロックをクリアした場合、すべての非表示のブロックはまだかなり新しいバージョンのデータを保持しています。データを保護したい攻撃者がアクセスできるかどうかは、別の質問です。
最新の十分なディストリビューションがあり、USBドライブがフラッシュドライブであるblkdiscard
ことを明らかにするようにプログラムされている場合TRIM
、上で説明したセグメント消去である基本操作を使用できます。また、非表示の非表示データもハードウェアによって完全に消去されることを確認するための追加フラグがあります。
# blkdiscard -s /dev/myusbdevice
-s、--secure安全な破棄を実行します。安全な破棄は、通常の破棄と同じですが、ガベージコレクションによって作成された可能性のある破棄されたブロックのすべてのコピーも消去する必要がある点が異なります。これには、デバイスのサポートが必要です。
上で説明したように、必ずしも機能するとは限りません。を取得Operation not supported
した場合、カーネル、ユーティリティ、またはUSBゲートウェイチップ(フラッシュコントローラーがUSB経由でドライブのように見えるようにする)は、TRIM
コマンドの受け渡しをサポートしていません。(フラッシュコントローラーは、それ自体でセグメントを消去できる必要があります)。ドライブのベンダーによってサポートされている場合、これが最も安全な方法です。
古いデータの一部をどこかに残しておくことを許可する別の安全性の低い方法は、可能であればランダムな値で数回上書きすることです。
なぜランダムなのですか?USBドライブが非常にインテリジェントになり、セクターをクリアする必要があることを検出し、ビットマップに変更を加えただけで、このセクターは現在解放されており、後でクリアする必要があることを想像してください。これは、ゼロの書き込みを高速化できることを意味するため、より効率的に見えるペンドライブを作成できますか?ドライブがそれを行っているかどうか、わかりにくい。
極端な場合、ドライブは最初から消去した量を記憶できます。保存する必要があるのは、これを行うために約4バイトの情報だけであり、消去したいデータからは何も消去しません。すべてが非常に高速に見えるようにするためです。
予測不可能なランダムな値でデータを上書きしている場合、これらの最適化は不可能です。そのため、ドライブはデータがフラッシュチップ内に保存されることを確認する必要があります。ただし、以前使用したセクターの一部に古いデータが残っていることを除外することはできませんが、ドライブは通常アクセスできないため、まだ消去することが重要であるとは考えていません。実際のTRIM
コマンドのみがそれを保証できます。
ランダムな値で上書きを自動化するには、次のように使用することを検討できますshred
。
# shred -vzn88 /dev/myusbdrive
使用されるオプション:
可能であれば、との両方blkdiscard
を使用します。ドライブでサポートされているshred
場合blkdiscard -s
、それが最適なソリューションですが、shred
ファームウェアの間違いを除外するために事前に行うことは害になりません。
ああ、そしてあなたがクリアしようとしているデバイスを常に二重三重チェックしてください!dmesgは、最後に挿入されたデバイスを確認するのに役立ちます。またls -al
、デバイスのノード番号、およびblkid
出力で、クリアするデバイス名を確認して、使用できないパーティションを確認することもできます。クリアしたい。
使用し続ける内部ドライブでこれらのコマンドを使用しないでください- blkdiscard
ソリッドステートドライブでのみ動作しますが、データを失うことを試みる価値はありません!
技術の進歩に応じてデータを安全にクリアする他の方法があるかもしれません。
もう1つの方法は、SECURITY ERASE
コマンドを介して発行できるATA コマンドですhdparm
。私の経験では、フラッシュドライブでは実際にサポートされていません。エンタープライズハードドライブ用に設計されており、この機能は常に低コストのストレージデバイスに実装されているわけではありません。
TRIM
/のDISCARD
操作がよりはるかに新しいものでSECURITY ERASE
、コマンド、及びそれも安いUSBドライブで、実施されているのはるかに高い可能性を持っているので、フラッシュ機能に対応して作成されましたが、それはまだユビキタスではありません。USBドングルのSD / micro SDカードを消去し、blkdiscard
サポートされていないことを報告する場合、別のドングル/カードリーダーを試すか、直接SD / MMCスロットのあるマシンでそれを行うことができます。 。
blkdiscard
Debian Jessieにあり、Ubuntu LTS 14.04ではなく、Ubuntuの最新の2つのリリースにのみあります。 blkdiscard
パッケージutil-linux
バージョン2.23 に追加されました。
blkdiscard
と比較する方法を知っていますか。hdparm
これは実際にはあなたの質問に対する答えではないことを理解していますが、最も簡単な方法はドライブを物理的に破壊することです(通常、ハンマーで繰り返し叩くとうまくいきますが、産業用の破砕または焼却もオプションです)。データが回復不能であることを確認するためにセキュリティが十分に心配している場合、そのデータの価値はドライブ自体のコストの何倍も高い可能性があり、物理的な方法は安価で信頼性があります。
利用可能なほぼすべての安全な削除機能は、磁気メディアの回転用に設計されており、コンピューターは通常、ファイルに使用されるブロックの物理的な場所[1]を特定し、同じブロックに上書きできます。ソリッドステートストレージコントローラーチップは、システムからのデータの物理的な場所を抽象化し、データを移動することを好みます。
あなたの質問は、誰があなたのデータを追跡しているのかに本当に依存します。ランダムな損失や偶発的な盗難が心配な場合は、通常の形式で問題ありません。意欲的で技術的に有能なユーザーにターゲットを絞って、かなりのリソースを自由に使えることを心配している場合は、ドライブを焼却し、新しいドライブに10ドルを費やすだけです。
はい、論理ブロックマッピングがあります。ただし、論理ブロックAは常に物理ブロックBにマップされます。
この人はドライブを開き、メモリチップをカードから引き抜き、コントローラーをバイパスしてフラッシュメモリを直接読み取ります。
私が知っている最も簡単で最速の方法は、ドライブ全体にゼロ(0)を書き込むことです。
dd if=/dev/zero of=/dev/sdX
どこ/dev/sdX
あなたのサムドライブのデバイスノードです。
反復やその他のパターンを含む、より徹底的なプロセスを提案する人もいます。これを行うための特定のユーティリティが利用可能です。GNU coreutilsパッケージには、shred
この目的専用のコマンドが含まれています。多くの人badblocks -w
は、e2fsprogsパッケージの一部であるを使用しています。FreeBSDでは、shred
ユーティリティが呼び出されgshred
、ポート/usr/ports/sysutils/coreutils
または/usr/ports/sysutils/fileutils
ポートで利用可能になります。
再利用する予定がある場合は、これでフラッシュドライブを安全に消去できます。http: //linux.die.net/man/1/scrub そうでない場合は溶かしてください...