web-dev-qa-db-ja.com

ディスクの安全な消去を高速化するにはどうすればよいですか?

時々ハードディスクを安全に消去する必要があり、これを行うためにさまざまなツールを使用しました:

  • cat /dev/zero > /dev/disk
  • cat /dev/urandom > /dev/disk
  • shred
  • badblocks -w
  • DBAN

これらのすべては、彼らが実行するのに年齢をとることが共通している。

ある場合ではcat /dev/urandom > /dev/diskディスクを強制終了しました。明らかに過熱しています。

ディスク上のデータを適時に使用不可にする「十分に良い」アプローチはありますか?スーパーブロックといくつかの戦略的に重要なブロックの上書きなどですか?

ディスク(回転とssdの両方)は寄付されたコンピューターからのものであり、その後それらにLinuxデスクトップをインストールするために使用され、コンピューターを購入する余裕はないが必要な人に配られます。

寄付されたコンピュータのディスクは通常暗号化されていません。また、ドナーが事前にファイルを削除することさえ考えていない場合もあります。

更新

これまでに寄せられた答えから、手抜きはないようです。私の最善の策は、ラボコンピュータをセットアップして、一度に複数のディスクを消去することです。大企業に寄付をお願いするもう1つの理由:-)

みんな、ありがとう!

36
markgraf

スーパーブロックまたはパーティションテーブルを上書きすると、データを再構築するのが不便になります。これは、16進ダンプを実行しただけの場合でも、まだそこにあります。

ハードディスクには組み込みの消去機能があります: ATA Secure Erase 、これはhdparmを使用してアクティブ化できます:

  1. パスワードを選択してください(任意のパスワード):

    hdparm --user-master u --security-set-pass hunter1 /dev/sdX

  2. 消去を開始します。

    hdparm --user-master u --security-erase hunter1 /dev/sdX

これは組み込み機能であるため、実際に消去を提供するより高速な方法を見つけることはほとんどありません。 (しかし、それがあなたのパラノイアのレベルを満たすかどうかを判断するのはあなた次第です。)

または、フルディスク暗号化を使用してディスクを使用し、データを破棄するときにキーを破棄します。

43
200_success

潜在的に不人気な答え:ディスクを完全にワイプする時間を確保してください。

あなたはさまざまなソースからの寄付ハードウェアを受け入れ、それらのデータが安全に消去されることを約束しました。したがって、約束どおりに実行するして、ディスクを安全に消去する必要があります。

私が寄付者であり、あなたがあなたの約束を守っていないとわかった場合、私は将来あなたにこれ以上のハードウェアを与えることはしません。

また、DBANランタイムを短くしないでください。そうでない場合は、前半または最初の10%をクリアするだけで十分だと考えてください。


DBANの実行をより便利にするために、通常はホストからドライブを削除しますか?その場合は、複数のSATAポートを備えた、かなり低電力のデスクトップを用意してください。ワイプの準備ができているドライブが2つある場合は、それらすべてをこの1台のマシンにセットアップし、起動可能なDBAN ISOまたはネットブートDBANセッションでそれらをワイプします。次に、最後のマシンが完了するまで、マシンを実行したままにします。

SATA-USBディスクドックを使用することもできますが、これらはネイティブのSATA接続と比較して非常に遅くなる傾向があります。

次に、寄付を保存してから処理するワークフローはありますか?または、ハードウェアを受け入れてテストし、拭いてから使用するためにアイテムを保管しますか?自分に合ったパイプラインを作成し、DBANをそのパイプラインのステージにすることをお勧めします。そのため、店舗から機械を引き出すと、その機械はすでに完全に消去されており、既知のものです。

18
Criggie

大きなブロックを含むddcatよりも高速である可能性があります。

dd if=/dev/zero of=/dev/disk bs=16M

その過程でディスクを殺すことは良いことであり、とにかく限界的でした。

LUKSで暗号化する場合、これは暗号化の設定後に行うことができます(ディスク上の使用済み/未使用の領域を見つけるのが難しくなります)。

I/Oを回避することはできません。50MB/秒(これは古いディスクに適した速度です)で、250GBの書き込みには5000秒(約1.5時間)かかります。唯一の問題は、どれだけ近いかです。

12
xenoid

blkdiscard-デバイス上のセクターを破棄する

私はこれを試していませんが、簡単に読むと、 blkdiscard を試すことができます。

これは単純なコマンドをドライブに送信するだけで、非常に高速になるはずですbutブロック内のデータが消去されるという保証はありません。ただし、いくつかのヒントがあります。

  • マンページから:

警告:デバイスの破棄された領域のすべてのデータが失われます!

TRIMはSSDにLBA領域を無効としてマークするように指示し、その後の領域の読み取りは意味のあるデータを返しません。非常に短い間、データは内部のフラッシュに存在する可能性があります。ただし、TRIMコマンドが発行されてガベージコレクションが実行された後は、科学捜査官でさえデータを回復できる可能性はほとんどありません。

私は明らかにこれを真面目なビジネスに信頼しませんが、あなたの要件は「十分に良い」ので、それは実行可能なオプションかもしれません。おそらくそれはSSDでも機能するだけで、寄付された古いコンピューターを扱っている場合は、さらに深刻なハードルになる可能性があります。

7
pipe

セキュリティ(偏執狂)の観点からは、おそらくそれは不可能です。

ディスクのごく一部だけを書き換えることができるシナリオが1つあり、ほとんどの人はそれを保存すると考えます。ドライブが暗号化されており、暗号化ヘッダー(暗号化キーが格納されている場所)を上書きしている場合推奨回復を不可能にします。

ただし、別の問題があります。SSDはヘッダーデータを保持できる可能性があります(ヘッダーの上書きに使用されたランダムデータは他のセルに保存できます)。

6
Alex Baranowski

データのセキュリティを重視するほとんどの企業は、ドライブをすでに暗号化していますが、ドライブの暗号化キーは提供されないはずです。

並列消去は最大の速度の問題を解決します。 SATA I/O速度はボトルネックではなく、HDDの物理書き込み速度が限界です。最新のマザーボードには、少なくとも4〜8個のSATAドライブ接続があります。 SSD(高速)から起動するように1つ(または複数)のラボコンピューターをセットアップします。消去する4〜6台のドライブを接続し、適切な方法を使用して、提供されたアプローチから消去します。

4つのドライブ(b、c、d、e)があるとします。次に、単純なスクリプトですべてのドライブを並行して消去します。また、ラボのコンピューターでは、ドライブの消去をログに記録できます。

ts=$(date +%Y%m%d%H%M%S)
mkdir -p erase-${ts}
# figure out where your linux mounts the drives (avoid trashing your SSD)
for drive in b c d e; do
    target="sd$drive"
    dd if=/dev/zero of=/dev/${target} bs=16M 2>&1 |tee erase-${ts}/${target} &
done

ただし、各ドライブの消去は別のターミナルで実行するため、特定のドライブのエラーを監視できます。エラーが少ないドライブは交換する必要があります。ドライブのSMARTドライブからの情報により、ドライブの使用年数がわかります。

2台から4台の実験用コンピューターを構成している場合は、実験用コンピューターに十分なドライブを搭載して、ドライブの消去でビジー状態を維持することが課題になります。ラボコンピューターごとに5つのドライブX 3つのラボコンピューター= 15台のドライブが並行して消去されるとします。 30(ish)分ごとにバッチを終了しています

SSDではすべての賭けがオフになり、動作が異なります。ほとんどの書き込み速度ははるかに高速です。また、上記のいずれも、不良ブロックの検出によって使用されなくなってマッピングされたセクターを消去しません(一部のデータは消去されない場合があります)。

いくつかの調査、特にGoogleによるかなり大規模な調査が行われており、最初の2年後にハードドライブ障害の確率が5〜6%(1年あたり)に達し、その後数年間で大幅に増加することがわかりました。 5年以上経過したディスクには、かなりの障害確率があります。 5年以上経過したハードドライブを廃棄(破棄、リサイクル)することを検討してください。

私のアドバイスは、ドライブを3年以内に保つか、またはすべてのドライブを交換して、廃棄する(破壊またはリサイクル)ことです。

5
ChuckCottrill

フレームチャレンジ:

PCの分解をやめる

私は自分の生活の中でロットのPCを分解しました。あなたは時間について不平を言っていますが、イメージングのためにPCを分解する時間を無駄にしています-すべてのPCを2回ベンチに入れてから、再テストする必要があります。

そして、あなたのバーンイン期間は弱いお茶です。新しくイメージされたドライブを構成してテストするのに十分な時間だけシステムを組み立てます。したがって、欠陥のあるPCを顧客に発送することになります(多くの理由でが与えられます;熱の問題などの微妙な不具合がその1つです。)

組立ラインを変更します。電源を入れてPCをラックに取り付け、KVMを接続しますそしてPCを使用してPCをワイプします。これにより、便利な「しばらく実行した」バーンインも実現します。/dev/urandomを使用する場合は、強力なCPU /サーマルバーンインも使用します。

Windows環境で起動してシステムファイルとアプリケーション以外のすべてを削除するか、CDから起動するか、システムに対応している場合はUSBスティックから起動します。または、最初にシステムのイメージを作成し、新しいイメージのインストール後に空き領域を消去できます。

レガシーOSでネイティブに実行している場合、Windowsシステムファイルやアプリケーションを削除してワイプする必要はありません。 World of Warcraftは、シークワイプする必要のない40GBのデータです。そう \Windows\Program Filesおよびその他のシステムディレクトリをセキュリティワイプから除外できます。 (彼らがそこにデータを置くならば、彼らはそれの安全なワイプをかなり期待することはできません)。これを簡単に処理できる非常に移植性の高いバージョンのPerl 4があり、Perl 4はこの種のことに対して十分強力です。

ネイティブOSを使用していた場合は、2つのパスで実行します。まず、システム以外の非アプリファイルをすべて削除します。次に、ディスクをゼロで埋めます(CIA層のディスクフォレンジックが心配な場合は、システムファイルのコピー)。

または、イメージング後にlastで拭きます

同じこと;まだPC自体を使用してイメージを作成します。 CDから起動して、イーサネット経由などでイメージをプルします。

次に、最初の起動時のアクションでイメージをビルドします。この場合、空き領域がワイプされ、それ自体が無効になります。

すべてのデータは、a)新しいイメージのファイル、またはb)フリースペースの上書きによって上書きされます。

この機能を「チェックポイント対応」にしたい場合、つまり、停電後にやり直す必要がない場合は、単純に巨大なディスクがいっぱいになるまで、ランダムな名前のファイルを/ tmp /に格納します。ディスクがいっぱいであることを確認したら、/ tmp /ファイルを削除してから、自分自身を削除します。

ディスクが新しいデータで100%占有されると、古いデータは上書きされているはずです。

ファイルシステムがトラッシュされたデバイス上でも、デバイスを読み取るだけで、たとえばJPG画像を回復できることがよくあります。

それをより困難にするために、ファイルのすべての開始部分をデータで上書きすることができます。

何かのようなもの:

mount /dev/disk /mnt
find /mnt -type f |
  parallel --pipe --block 8k --roundrobin -q Perl -ne 'chomp;open(A,"+<",$_);print A "0"x8192'

ファイルが少ない場合は、ドライブ全体を上書きするよりも高速です。

2
Ole Tange

/ dev/zeroは高速で、/ dev/urandomは低速でcpu-heavyです。

それらの両方は、猫よりも大きなブロック(bs = 1M)を使用するddでよりよく使用されます。 catはブロックを理解していません。たくさんのCPUサイクルを使用して、一度に1文字ずつ移動します。

シュレッドは、その目的のために最適化されたツールであり、基本的にddが組織的に行うことを実行します。ランダムデータでディスクを上書きするとき、(/ dev/urandomからすべてを取得するのと比べて)少ない「ランダム」データを使用します-スペアブロックからSSDを押し出し、文字間干渉によってHDD磁気分析をハードにするのに十分ランダムですが、生成するCPUの消費が少ない。

私はDBANを使用したことはありませんが、読んだところ、基本的には起動可能なラッパーに含まれる細断されたようなツールのようです。

次に、HDPARMからアクセスできるATA SECURITY_ERASEコマンド(さらにはSECURITY_ERASE_ENHANCEDコマンド)があります。それらは単にインターフェースに0をプッシュする必要なしにディスクに0を書き込みます。 HDDでは、dd(時間)と同じくらい高速です。 SSDでは、ディスク全体でblkdiscardです。強化された種類は、不良としてマークされたブロックもゼロにしようとします。

blkdiscard-SSDでのみ機能します。ブロックを空きとしてマークし、0として表示されます。内部でいつ消去されるかは保証されません。

1
fraxinus

OSをインストールせず、イメージ化する

とにかくGNU/Linuxをインストールする場合は、両方を1つのステップで行うことができます。新規インストールでドライブ(またはイメージ)を取得し、それを新しいディスクに複製します。

あなたのOSが例えば8GB、それはあなたが最初に空にする必要のない8GBのスペースです。私が認める1TBと比べてそれほど多くはありませんが、インストール時間をいくらか節約するかもしれません。プレインストールすればするほど良くなります;)

ソースイメージが短すぎてディスク全体をカバーできない場合(長すぎるよりも短すぎる場合)、ddを使用して、ディスクの残りをブランクにすることができます。そして、必要に応じて、クローン作成後にパーティションのサイズを変更します。

ディスクのクローンを作成するのではなく、イメージファイルを使用する場合は、「スパースファイル」と呼ばれる便利な機能を使用して、イメージ内のすべてのブロックがゼロの場合にファイルサイズを削減できます。

1
Artelius

ディスク(回転とssdの両方)は寄付されたコンピューターからのものであり、その後それらにLinuxデスクトップをインストールするために使用され、コンピューターを購入する余裕はないが必要な人に配られます。

さて、あなたの長期的な解決策はこれです(これはDBANのバリエーションです)

  • linuxインストールセルフブート可能CDを準備します(Anacondaなどを使用)
  • 次のようなスクリプトを記述します。
    • memtest86およびその他の簡単な診断を実行する
    • ハードウェアを認識する(32ビットか64ビットかに関係なく、CPUのみ)
    • ddを使用してハードディスク全体をゼロにします
    • ハードディスクをシステム、スワップ、データに分割する
    • 適切なLinuxディストリビューションバージョンをシステムにインストールする
    • cDを取り出す

ラボに3台のPCが入ったら、電源を入れ、CDのコピーをトレイに入れ、CDから起動して、作業が完了したことを警告するまで、以前と同じように作業を続けます。数年前、私はそのようなことをしました:スクリプトは開始時にすぐに長いビープ音を3回鳴らしました(スピーカーが機能し、デスクトップであり、本当に必要な場合を除いてモニターを接続したくありませんでした)。次に、他のサウンド終了ステータスによって異なります。

基本的に、すべてのコンピューターは約1分の作業を要しました-起動に40秒、「Reveille」または「Taps」の再生を開始してから20秒でシャットダウンしました。プライバシーの問題はなかったので、ddステップを追加したことはありません。ただし、実装は簡単です。 @PeterCordesが気づいたように、私の最初の提案には欠陥があったとしても。

1
LSerni

Raspberry Piをセットアップして、接続されているUSBストレージを自動的に消去し、完了したらLEDを点灯させます。次に、SDカードのクローンを作成し、ラズベリーの束を購入して、並行して動作させます。 ATAセキュア消去を使用することを選択した場合、4つのデバイスを使用すると、ドライブを接続するのと同じ速さでドライブを消去できます。デバイス全体を上書きすることを選択した場合、デバイスの速度は遅くなりますが、一度に1つのドライブを消去する場合に比べて4倍速くなります。

通常のラップトップでも寄付ボックスに入れれば、同じことができ、ハードウェアのコストを節約できます。

0