最近、A&V方面の仕事で4Kテレビに接する機会が多いのですが、見るたびに欲しくなりますよ、本当に切実に。映像もさることながら、写真の描写力が圧倒的で。Macも、MacBoo Proにとどまらず、iMacとかThunderbolt Displayが高精細化されるとうれしいんですけどね。6月になにか発表されるかも? と期待しています。

さて、今回は「srm」について。OS X 10.4(Tiger)のとき登場したこのコマンドは、名前から推測できるように安全が保証された(セキュアな)rmコマンドとしての機能を果たす。しかし、その存在は広く知られていないため、用例を交えつつここに紹介しようという寸法だ。

What's "srm"?

「srm」は、かんたんにいえばファイルを"確実に"削除するためのコマンド。名前からすると、scpやsftpと同様にSSH(OpenSSH)との関連を想像してしまうが、動作にネットワークは必要なく実装としても独立している。LinuxやFreeBSDなど多くのUNIX系OSで動作する、オープンソースソフトウェアだ。

ふだんファイル/ディレクトリの削除に用いるFinderの「ゴミ箱」、あるいはUNIXコマンド「rm」は、ファイル管理情報を消すに過ぎず、実際のデータは残されている。一方srmコマンドは、削除前に上書き/移動などの方法で他のユーザが消したファイルを復元したり、情報を取得したりすることを許可しない。早い話が、市販のディスク修復ツールを使っても復元できない、ディスクからファイルを安全/確実に消去できるコマンドなのだ。

ところで、このsrmコマンド、知らないうちに利用していたユーザもいるはず。というのも、Finderでゴミ箱の内容をクリアするとき「確実にゴミ箱を空にする」を選択すると、実際の削除処理はsrmで行われる。ならばFinderで事足りるのでは? と考えるかもしれないが、srmを直接叩くほうがより強力/確実に削除できるので、今回のテーマとしてピックアップした次第。

Finderの「確実にゴミ箱を空にする」は、srmコマンドを利用して削除を行っている

srmコマンドの使い方

srmコマンドの用法は単純、引数にファイル名を与えて実行すればOK。たったこれだけで、ランダムなデータで上書きしてから対象のファイルを消去する。rmコマンドで削除するより時間はかかるが、コマンドライン先頭に「s」を1文字加えるだけの労力しか必要ないことを考えると、使い勝手のいいコマンドといえる。

なお、オプションなしでコマンドを実行すると、最強の「Peter Gutmannアルゴリズム」を使って削除が行われる。データは35回も上書きされるという念の入りようで、話によるとこのアルゴリズムは某国諜報機関にも採用されているという。おや、誰か来たようだ……

$ srm secret.pdf

デフォルトでは時間がかかり過ぎる、という場合は「-s」オプションを試してみよう。簡便な方法ではあるが、対象のファイルはランダムなデータで上書きしてから消去されるため、一定の安全性は確保できる。もちろん、rmコマンドや「ゴミ箱」を使った削除に比べれば、セキュリティという観点では雲泥の差だ。

$ srm -s important.doc

デフォルトのPeter Gutmannアルゴリズムほど徹底的でなくてもいいが「-s」では不安、という場合は「-m」オプションを使おう。このオプションを有効にしてsrmコマンドを実行すると、対象ファイルは7回上書きされる形で消去される。書き込まれるパターンは単なるゼロデータではなく、0xF6、0x00、0xFF、random、0x00、0xFF、random……を繰り返すという、アメリカ国防総省が定めるセキュアな方式だ。

$ srm -m Himitsu.ppt

より確実にファイルを削除する場合には、「-z」オプションを併用するといい。ファイルをランダムに上書きしたあと、さらにデータを「0」(ゼロ)で埋めるので、安全性が一段と高まる。ここでは、「-m」オプションと併用している。

$ srm -zm topsecret.xls

削除に要する時間だが、約930MBのファイルを「rm」と「srm -s」、「srm -m」と「srm」(オプションなし)の4通りで削除したところ、下表に示す結果となった(実行環境はMac mini 2.3GHz、500GB HDD)。小さなファイルであればここまで差が開かないうえ、SSD搭載機やCPUパワー次第で時間は変動するので、あくまで参考値として受けとめてほしい。

srmコマンドでファイル削除したときに要した時間
rm 0分0秒003
srm -s 0分14秒041
srm -m 1分47秒799
srm(オプションなし) 8分18秒688