サムドライブの内容を安全に削除して、データを回復できないようにするにはどうすればよいですか。


32

データを復元できないように、可能であれば端末経由でUSBフラッシュドライブを削除する方法を知りたいです。


31
フラッシュドライブ?ものを開けて、緑色の回路基板からすべてのチップをこじ開け、それをマッシュアップして、ちょっぴり光沢のある小さな破片にし、それから別のものを買いに行きます。物理的な破壊は、本当にすべてのウェアレベリングともののcosを確認する唯一の方法です。将来的には、フルディスク暗号化を使用し、不要になったらキー|パスワードを失います。
ブラックライトシャイニング

1
@BlacklightShining-それが唯一の本当の答えです。安価なスティックの多くもリサイクルされています。
mikeserv

1
@BlacklightShiningプラズマに変換することもうまくいきます。
-PyRulez

3
データが回復不能であることが重要な場合、唯一の「安全な」ソリューションは物理的な破壊です。単に回復するのが難しいだけで十分な場合は、フォーマット/上書きを超える必要はありません。
-Sobrique

炭火で燃やし、すべての部品が赤熱するようにします。
ベン

回答:


47

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

使用されるオプション:

  • -v進行状況を表示するため
  • -zは最終段階でゼロにします
  • -n8は、8回のランダムな上書きパスを実行します

可能であれば、との両方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スロットのあるマシンでそれを行うことができます。 。


最先端の情報をありがとう。 blkdiscardDebian Jessieにあり、Ubuntu LTS 14.04ではなく、Ubuntuの最新の2つのリリースにのみあります。 blkdiscardパッケージutil-linuxバージョン2.23 に追加されました。
-RobertL

@zhenechによる別のコメント(具体的にはリンク:ata.wiki.kernel.org/index.php/ATA_Secure_Erase)でソリューションblkdiscardと比較する方法を知っていますか。hdparm
-RobertL

これがフラッシュドライブにも当てはまるかどうかはわかり
234683 /…を

1
@RobertL等しい、悪い方法で。ほとんどの安価なフラッシュドライブは、ATA Secure EraseもTRIMも実装していないため、両方の方法が失敗する可能性があります。
夕暮れの

27

これは実際にはあなたの質問に対する答えではないことを理解していますが、最も簡単な方法はドライブを物理的に破壊することです(通常、ハンマーで繰り返し叩くとうまくいきますが、産業用の破砕または焼却もオプションです)。データが回復不能であることを確認するためにセキュリティが十分に心配している場合、そのデータの価値はドライブ自体のコストの何倍も高い可能性があり、物理的な方法は安価で信頼性があります。


5
安価で交換可能なフラッシュドライブの場合は、必ず物理的な破壊を行ってください。ハンマーを使用する場合は、必ず実際のストレージチップを入手してください。数週間前に古いフラッシュドライブを開いて楽しみましたが、その物理的なボリュームのほとんどは実際にはケースと空気でした。
ブラックライトシャイニング

1
私の答えとは別に、私は完全に同意します-sshアクセス経由でそれらを壊すのは難しいだけです:)これらのドングルがデータストレージにとってどれほど信頼性がないかを考えると、同じデータを実際に取り除くのは驚くほど難しいです。
-chexum

合意-データが回復不能であることが重要な場合、物理的な破壊が唯一の選択肢です。それに直面してみましょう、その上のデータの商業的価値と比較して、最も高価なドライブでさえ、おそらくそれほど重要ではありません。そうでない場合という重要なのは、ほぼすべてのワイプ/上書き「良い十分には」です。
-Sobrique

1
この方法は最も効果的であるだけでなく、最も楽しい方法でもあります。ハンマーを使用して支払いを受ける機会を逃さないでください。
ゼーテティック

2

利用可能なほぼすべての安全な削除機能は、磁気メディアの回転用に設計されており、コンピューターは通常、ファイルに使用されるブロックの物理的な場所[1]を特定し、同じブロックに上書きできます。ソリッドステートストレージコントローラーチップは、システムからのデータの物理的な場所を抽象化し、データを移動することを好みます。

あなたの質問は、誰があなたのデータを追跡しているのかに本当に依存します。ランダムな損失や偶発的な盗難が心配な場合は、通常の形式で問題ありません。意欲的で技術的に有能なユーザーにターゲットを絞って、かなりのリソースを自由に使えることを心配している場合は、ドライブを焼却し、新しいドライブに10ドルを費やすだけです。

  1. はい、論理ブロックマッピングがあります。ただし、論理ブロックAは常に物理ブロックBにマップされます。

  2. この人はドライブを開き、メモリチップをカードから引き抜き、コントローラーをバイパスしてフラッシュメモリを直接読み取ります。


1

私が知っている最も簡単で最速の方法は、ドライブ全体にゼロ(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ポートで利用可能になります。


これは、安全なワイプを行うには実際には十分ではありません。ランダムなものの少なくとも20のシリーズの書き込みに行きます。何よりも、私は安全なワイプのためのツールを使用します。一部の人々はそれが意味をなさないこととゼロ化で十分であると言いますが-私はそれを信用しません。
monsune

4
@monsuneそれはただの都市伝説です。一方で、いくつかの規格がそれを必要と、任意の実用的な攻撃があるとは思えないです。
ジル 'SO-悪である停止

フラッシュドライブは、ウェアレベリングを使用して、フラッシュセルを速すぎて破壊しないようにします。想像してみてください:ドライブには1200個のセルがありますが、1000個のセルがあることを伝えるだけで、コントローラーは実際に書き込むセルを選択します。したがって、ddの後、1000個のセルを消去しますが、200個の予備は消去せず、実際のフラッシュを予備なしでコントローラーに接続することで読み取り可能になる場合があります。ddの後に安全な消去を行うことをお勧めしますが、すべてのフラッシュメディアがそれをサポートしているわけではありません。
-zhenech

@zhenech、「セキュア消去」とは何ですか?
-RobertL


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.