LoginSignup
9
7

More than 5 years have passed since last update.

Tiny Core LinuxでHDDの完全消去(Secure Erase編)

Last updated at Posted at 2017-02-06

Tiny Core Linux 7をUSBメモリにインストール」で作ったTiny Core LinuxでSecure Eraseを使ったHDDのデータ消去です。

いつ頃から分からないですがATA規格のHDDにはSecure Eraseという削除機能がHDD自体に搭載されていて、それを使えばデータ消去ができるようです。というわけで今回はSecure Erase機能を使ってデータ消去を行なってみようと思います。

hdparmのインストール

LinuxでSecure Eraseを行うにはhdparmコマンドを使います。しかしTiny Core Linux標準のhdparmは機能が限定されていてSecure Eraseを行うことができないためパッケージ版のhdparmをインストールします。

$ tce-load -wi hdparm

Secure Eraseが使えるのかの確認

よほど古くなければ対応していると思うのですが、念のため対象のディスクがSecure Eraseに対応しているかを確認します。

$ sudo hdparm -I /dev/sda
(省略)
Security: 
    Master password revision code = 65534
        supported
    not enabled
    not locked
        frozen
    not expired: security count
        supported: enhanced erase
    84min for SECURITY ERASE UNIT. 84min for ENHANCED SECURITY ERASE UNIT. 
Logical Unit WWN Device Identifier: 50014ee2586557ed
    NAA     : 5
    IEEE OUI    : 0014ee
    Unique ID   : 2586557ed

「xxx for SECURITY ERASE UNIT」あたりのメッセージからSecure Eraseが使えるであろう事が予想できます。また「xxx for ENHANCED SECURITY ERASE UNIT」や「supported: enhanced erase」と表示されているのでEnhanced Eraseにも対応していると思われます。

not frozenへの移行

Secure Eraseを実行するにはSecurity:のところが「not frozen」である必要があります。サスペンドすれば「not frozen」になるという情報を得たので以下のコマンドでサスペンドします。

$ sudo sh -c "echo mem > /sys/power/state"

サスペンド後、電源ボタンを押したり何かのキーを押すなりしてサスペンドから復帰すると「not frozen」になる予定だったのですが、画面は真っ暗なままで確認することができません。
色々と試してみるとキーボードは使えますしコマンドも受け付けることがわかったので、以下のようなスクリプトを作成し実行してみました。

erase.sh
#!/bin/sh
sudo sh -c "echo mem > /sys/power/state"
sudo hdparm -I /dev/sda > erase.log 2>&1
filetool.sh -b
sudo reboot

スクリプトを実行するとサスペンドされますので、電源ボタンを押したり何かのキーを押すなりしてサスペンドから復帰後、erase.logの中身を見てみると以下のような感じで「not frozen」になっていました。これならSecure Eraseが実行できそうです。

log.txt
(省略)
Security: 
    Master password revision code = 65534
        supported
    not enabled
    not locked
    not frozen
    not expired: security count
        supported: enhanced erase
    84min for SECURITY ERASE UNIT. 84min for ENHANCED SECURITY ERASE UNIT. 

Secure Eraseの実行

画面が使えないので以下のようなスクリプトを作って実行してみることとしました。--security-set-passでHDDをロックして--security-eraseで消去実行という感じです。

erase.sh
#!/bin/sh
sudo sh -c "echo mem > /sys/power/state"
sudo hdparm -I /dev/sda >> erase.log 2>&1
sudo hdparm --security-set-pass pass /dev/sda >> erase.log 2>&1
time sudo hdparm --security-erase pass /dev/sda >> erase.log 2>&1
sudo hdparm --security-unlock pass /dev/sda >> erase.log 2>&1
filetool.sh -b
sudo reboot

Enhanced Eraseが使える場合は使うようにするなら以下のような感じかなと思います。

erase.sh
#!/bin/sh
sudo sh -c "echo mem > /sys/power/state"
sudo hdparm -I /dev/sda > erase.log 2>&1
if [ "$(sudo hdparm -I /dev/sda | grep 'for ENHANCED')" ]; then
    echo "Enhanced Erase" >> erase.log
    sudo hdparm --security-set-pass pass /dev/sda >> erase.log 2>&1
    time sudo hdparm --security-erase-enhanced pass /dev/sda >> erase.log 2>&1
    sudo hdparm --security-unlock pass /dev/sda >> erase.log 2>&1
elif [ "$(sudo hdparm -I /dev/sda | grep 'for SECURITY')" ]; then
    echo "Secure Erase" >> erase.log
    sudo hdparm --security-set-pass pass /dev/sda >> erase.log 2>&1
    time sudo hdparm --security-erase pass /dev/sda >> erase.log 2>&1
    sudo hdparm --security-unlock pass /dev/sda >> erase.log 2>&1
else
    echo "not supported Secure Erase" >> erase.log
fi
filetool.sh -b
sudo reboot

実行途中で電源が落ちたりするとHDDがロック状態のままとなってしまう事があります。その場合はsudo hdparm --security-unlock pass /dev/sdaでロックを解除することができます。

どんな値が書き込まれているの?

Secure Eraseを実行するとどんな値が書き込まれているのか見てみると…

$ dd if=/dev/sda bs=256 count=1 | hexdump -C
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000100

どうやらゼロのようです(Enhanced Eraseなら一定のパターンを書き込むものもあるようです 2/8追記)また、所要時間がshredで1回書き込んだ場合とほぼ同じなので、恐らく1回のみの書き込みだと思います。

それで本当に大丈夫なのかなーなんて思っているとIPAが公開している「セキュリティ関連NIST文書」の「SP800-88媒体のサニタイズに関するガイドライン」」の中に以下のような記述があるのを見つけました。

技術の高度化により、磁気ディスクタイプの記憶媒体に関する従来のベストプラクティスが様変わりする状況が生まれた。基本的には、記憶媒体のトラック密度の変化やそれに伴う変化によって、媒体の消去と除去が同一になる状況が生まれた。つまり、2001 年以降に製造された ATA ディスクドライブ(15 GB 超)では、キーボード攻撃と実験環境室のどちらから媒体を保護するにも、媒体を一回上書きすることによる消去で十分である。
(「SP800-88媒体のサニタイズに関するガイドライン」より引用)

らしいです…。何回か上書きしないと行けないとずっと思っていたので今さら1回で良いと言われても…という気もしますが…。

関連リンク

9
7
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7