アンタイ・フォレンジック妖怪の独り言

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

SQLite3セキュアデリート機能

FNG09でFirefoxプラグインからテーブル内のデータ(レコード)を削除した結果を確認していてわかったのですが、セキュアデリートが有効になっている状態(SQLITE_SECURE_DELETE)でコンパイルされている場合があるんですね。

SQLITE_SECURE_DELETE
http://www.sqlite.org/compile.html

このオプションが有効な状態でコンパイルされたSQLite3をアプリケーションが組み込んで使っているケースでは、レコードが削除されると、削除データ部分がゼロで上書きされますので削除レコードのデータを確認することはできません。
セキュリティ的には安全なんですが、このモードで削除されると復元はできないので、誤って消しちゃったとかの向きでは復元できないので、バックアップはこまめにしておいた方がいいですね。

で、最近の SQLite3 ではこのオプションがデフォルトで有効になっている様子で、どのバージョンからの変化なのかを tessy さん達が調べてくださいましたので、詳細は以下を参照していただくとよいかと思います。情報ありがとうございますm(_ _)m

sqlite3 のSECURE DELETE
http://d.hatena.ne.jp/tessy/20100117/1263742490
http://twitter.com/tessy_jp/status/7830221110

VACUUM 処理や、Auto VACUUM 処理でスラック領域がどうなるか?という辺りは少し確認が必要かもしれませんが、フォレンジック調査的には SQLITE_SECURE_DELETE が有効なケースでは、とりあえずスラック領域やメモリダンプ?を確認という辺りでしょうか。スラックなどツールが使えない場合には、目視によるデータ(レコード)を読む作業がいずれにしても必要になりますが...
あとは、sonodam さんから指摘が出ていたのですが、ジャーナルなども取り扱いが必要になるかもしれませんね。

心配されていた tessyさんお手元のiPhoneに対する Forensic ですが、まぁ今後はこっちの手法とかになっていくんでしょうかね。

http://www.iphone-forensics.com/iphonebackup.php