SSD Trim コマンド関連について
SSDディスクについては、削除されたデータの復元が難しいというお話が2010年頃にはすでに出ていますが、最近の状況も踏まえて少し確認してみたいと思います。
Solid State Drives: The Beginning of the End for Current Practice in Digital Forensic Recovery?
http://www.jdfsl.org/subscriptions/JDFSL-V5N3-Bell.pdf
SSD内部におけるデータ更新の仕組みについては、Intelが公開している資料に丁寧かつ詳しく書かれています。
インテル SSD オプティマイザーとは?
http://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/diy/ssd-optimizer.pdf
なお Windows* 7 では、ファイルの削除時やフォーマット時などに、Data Set Management Command をリアルタイムに実行します
。一方、インテル® SSD ツールボックスは、手動で実行するほか、毎週、毎日などといった間隔で自動実行することが可能です。
ちょっと興味深い点としては、上記URLの説明では、なぜかFAT32ではSSDオプティマイザーを使う事が出来ないという事なのですが、これは理由がよく分かりません。
インテル® SSD オプティマイザーは、FAT32 でフォーマットされた SSD でご利用いただけません。
Windows 7 では Trimコマンド(ATA8 ACS2 Data Set Management Trim Attribute)が使用可能な環境では自動的に処理されているという事ですが、Windows 8 ではデフラグ部分について仕様変更があったようですね。従来デフラグは無効にする設定だったのが、Windows 8 では有効にしてTrimを発行するという事になっているようです。@ITの記事によると、Trimコマンドが発行されても、状況によりキャンセルされたりするケースもあるということで、Trimが完全に効いてない状況に対してWindows 8ではデフラグの段階で Trim を実行することで対処しているという事でしょうか。
http://www.atmarkit.co.jp/ait/articles/1305/30/news104.html
だがWindows 8のデフラグ・ツールは、ディスク・タイプがSSDであることを認識すると、SSD用の「トリム・コマンドの発行」という特別な操作を行うようになっている。
http://marosama.blogspot.jp/2013/04/ssdhddtxbench.html
ただし、Trimコマンドの送信には、利用環境に条件があります。Trimコマンドは、Windows XP/Vista/7の環境では「RAWモード」でのみ設定でき、Windows 8では、「Fileモード」でのみ設定できます。これは、OS側の制限によるためです。Windows 8では、Windows 7以前とは仕様が変更されているようで、ATA PASSTHROUGHでTrimコマンドがでません。代わりにファイルシステムベースでTrimを行う「File Trim」と呼ばれる方法が準備されています。このため、Trimが送れる環境に制限がついています。
Windows 8ではSecure Eraseを実行できないので注意してください(Windows XP/Vista/7では使用できます)。これは、OS側の制限です。Trimコマンド同様にWindows 8では仕様が変更されたようで、Secure Eraseのコマンドがフィルターされてしまい、ドライブに送られません。このため、Windows 8環境では、現状、対処しようがありません。
http://www.atmarkit.co.jp/ait/articles/1305/30/news104.html
トリム・コマンドは、ファイルを移動や削除した場合に(SSDに対しては)自動的に発行されているが、トリム・コマンドの発行後にほかの読み書きコマンドなどを連続して送るとその処理が優先され、トリム・コマンドに対するSSDの内部処理(ガ-べジ・コレクションなど)は後回しになったり、キャンセルされたりする。
SSDについては、Trim 以外にガーベージコレクション(GC)機能があり、これもデジタルデータの複製や復元には影響が出るお話ですね。
通電によりGCがSSD内部で自動的に発生する場合、このSSDのイメージを作成するタイミングによってデータ内容に変化が発生するのか?という点でしょうか。GCが実施される前に取ったイメージと、GCが実施された後で取ったイメージでハッシュ値が同じかを確認してみるという案もあると思うのですが、GC自体は内部処理なので実際にGCが走ったのか分からない気がしています。冒頭のJDFSLのドキュメントではP6で複製元と複製先(イメージ)での比較についてGCが影響する問題点についても記述があります。私は実際に試した事がないのですが、このドキュメントの記載を考慮すると、GCにより読み取れるデータが変化するという事だとすると、極力初回の通電時に取る必要がありそうです。最近、SANS DFIRのMLでも関連した話題があり、実際にTrimがペンディング状態になっているデータの読み出しを行った時のデータがどうなるか?といった事が話題になっていたようですね。
http://eeepc.dnki.co.jp/?eid=1106867
最新のSSDほど筐体内部にガベージコレクタというデフラグ機能を実装しこの問題を解決を試みている。
SSDにおけるガベージコレクション(GC)
■SSDのデータ消去に関する参考URL
SSDのデータを完全消去(初期化)する方法まとめ
http://128bit.blog41.fc2.com/blog-entry-346.html
コラム vol.005 Trim命令の功罪
http://www.logitec.co.jp/data_recovery/column/vol_005/
http://www.blancco.jp/news/20131008/index.htm
ブランコがSSD専用のデータ消去方式をリリース
~世界初、フリーズロックを自動解除する機能を実装~
「自作視点」でみるWindows 8、Windows 8が引き出すパーツ性能とは?
http://akiba-pc.watch.impress.co.jp/docs/sp/20121219_578754.html
Trimコマンドですが、fsutilコマンドのdisabledeletenotifyオプションを利用することでON/OFFできるようです。
http://technet.microsoft.com/en-us/library/cc785435.aspx
Windows 2008R2とWindows 7で有効なようですが、Windows 8でも有効なのかは確認できていません。システムが稼働中の場合に、Trimを止めたいケースではこれで一時的に無効化するという手順も考えられます。
業界的な課題としては、SSDディスクにパスワード設定されていた場合の対処方法という部分がありますね。
SATAのHDDとかは専用ツールや、HiDR技法を利用するといった案があるかとは思いますが。
https://www.facebook.com/Osaka.Data.Recovery/posts/10201089713378216
”パスワードロックを解除せずにスキップできませんか?”
面白そうだったので皆さんの前で試したところ、見事にスキップしてデータアクセスができてしまいました。