データ消去に関する考察

データ消去方式を検討した際の設計判断などを思考ログとしてまとめました。

お約束ですが記事の正確性は保証できません。
ご利用される場合はご自身の責任にてお願いいたします。

1.背景

  • Windows10サポート終了対応でかなりの台数の廃棄PCが発生することになった。
  • 骨董品レベルの古いPCやHDDも廃棄希望として預かることがある。

2.課題

  • 確実性
    • 世間ではきちんと管理していたはずのPCで漏洩事故が起きている。
      • 例:某地方自治体PCからの情報漏洩
  • 保管
    • 効率を考えてある程度まとめて作業するには一時保管しておく必要がある。
    • このためセキュアな保管場所の確保が必要になる。
    • 可能性は低いが散逸、紛失、盗難といったリスクにもできれば備えたい。
  • クロージング
    • 専門業者に依頼すると、最終的にデータ消去報告を手に入れられる時期がはっきりしない。
  • 外部流出コスト
    • 専門業者にデータ消去を依頼すると当然費用がかかる。
    • 更に媒体1本毎のデータ消去報告書を求めると追加費用が掛かることが多い。
  • 物理破壊
    • 専用機器の購入、機器設置や作業場所の確保、怪我リスク、ゴミ処分、など、手っ取り早くはあるができるだけ物理破壊する媒体は減らしたい。

3.課題の深堀

  • 業者やサービスが確実にデータを消去したかは本当は確かめる術がない。
    • 契約や業者の報告を信じるしかない。
  • 信頼できそうな業者はNIST 800-88 rev.1に準じた消去処理を実施している。
    • 基準を明記していない業者も多い。
  • 業者の繁忙度合いによってデータ消去作業の完了時期が先延ばしになる。
  • 業者業務の構造が高価格になってしまうのかもしれない。
    • 例:運搬、検品、消去作業、報告書作成、送付、その他(契約や経理事務など)

4.仮説

自力で業界標準規格の論理データ消去が実現できれば結果の確実性の担保、クロージング、外部流出コストの改善ができるのではないか。

5.調査

  1. 業界標準NIST 800-88 rev.1 の解釈(抜粋かつ個人的意訳)
    • Clear/Purge/Destroyの定義
      • Clear(消去):
        標準的な読み書きコマンドを使用し、ユーザーがアクセス可能な保存領域を上書きする論理的な手法
      • Purge(除去):
        物理的または論理的な手法を用い、最新の研究所レベルの技術でもデータ復元を不可能にする、より厳格な手法
      • Destroy(破壊):
        物理的に媒体を粉砕、裁断、溶解などすることで、再利用を不可能にし、データの復元を完全に防ぐ手法
    • HDDの取り扱い
      • 近年のHDDは全領域を1回上書きすれば先端の実験室レベルの技術をデータの復元を試みるために適用したとしても、通常はデータの回復を妨げる。
      • Secure EraseはPurgeレベル
      • Secure Eraseが実装されているならSecure Eraseを実行すべき。
      • ただしSecure Eraseの信頼性はメーカまかせである。
    • SSDの取り扱い
      • (OSからの)全領域データ上書きだけでは技術的仕様のためファーム制御領域に業務データが残る可能性がある。
      • Secure EraseはClear or Purgeレベル(実装依存)
        • Crypto eraseならPurge
        • 通常eraseならClear
      • Secure Eraseが実装されているならSecure Eraseを実行すべき。
      • ただしSecure Eraseの信頼性はメーカまかせである。
    • 消去したことの確認が必要
      • 全量域のチェックができなければ合理的と判断できるピックアップ部分のチェックでもよい。
    • ※当文書ではSecure EraseとSecure Erase Enhancedの違いがよく分からなかった。
  2. NIST SP800-88(初版)の解釈(抜粋かつ個人的意訳)
    • 2001年以降に製造された15GB以上のATAハードディスクドライブ(HDD)は、1回上書きすれば研究所レベルの技術をもってもデータ復元させるのは困難である。
  3. Secure EraseとSecure Erase Enhancedの違い
    • Secure Erase
      • OSからアクセスできる範囲の領域をバイナリの「0」や特定のパターンで上書きする。
      • SSDでの挙動:
        ウェアレベリング(寿命を延ばすための書き込み分散)によって使われなくなった「予備領域(オーバープロビジョニング領域)」に古いデータが残ってしまう可能性がある。
    • Secure Erase Enhanced
      • OSから見える範囲のデータだけでなく、不良セクタとしてマークされた場所や、通常は見えない予備領域も含めてすべて消去する。
      • SSDでの挙動:
        多くの現代的なSSDでは、保存データの暗号鍵を消去する「Crypto Erase」が実行される。鍵を消去すれば、いずれの領域のデータも復元できないので一瞬かつ非常に安全に処理が完了する。
        古い仕様のSSDの場合は、ユーザデータ領域に加え、ファームウエア管理領域もデータ消去処理を行う。
  4. SSDの予備領域のデータを復元する手段
    • 一般的な市販のデータ復旧ソフトでは、SSDの予備領域を復元することはほぼ不可能。
    • 復元方法の例:
      • フラッシュメモリチップを物理的に取り外し、専用のリーダで直接バイナリデータを吸い出す。
      • コントローラのデバッグモードなどを利用し、コントローラ制御を回避して物理領域をダンプする。
      • これらは、警察の調査(デジタルフォレンジック)や、数十万~数百万円単位の費用がかかる高度なデータ復旧業者が行うレベルの作業。
      • このような作業をまともなデータ復旧業者に依頼する場合は、媒体の所有権や依頼者の正当性を証明する必要がある。
  5. Secure Erase(Enhancedを含む)の実行結果
    • 廃棄予定のHDD/SSDを何本か使用してSecure Erase(Enhancedを含む)を実行し、OSからアクセスできる領域に何が書き込まれているか確認
      • 固定パターンが書き込まれていたがメーカ(もしくはモデル)によって異なっていた。
      • テストしたHDD/SSDが偶々固定パターンだったという可能性も捨てられない。

6.設計判断の基準

一般的な中小企業は国家機密レベルのデータはまず取り扱っていない。
企業秘密レベルのデータが媒体に含まれている可能性はあるとしても、全ての媒体にそのようなデータが存在しているわけではない。

HDDでもSSDでも、当該媒体がClearレベル以上で消去された場合、当該媒体から何らかのデータを抜き出すためには
1本あたり数十万~のコストが必要である上に、復元できたデータが企業秘密レベルの価値があるデータである可能性は相当程度低いと想定。
別の言い方をすれば数十万~×数10本分のコストを掛けたとしても、復元する価値があるデータを回収できるかは分からない。

つまり、一般的な中小企業のPC内蔵媒体を検討対象にするのであれば、企業秘密レベルのデータを扱っていたとしてもClearレベルのデータ消去を完遂すれば、悪意ある者が桁違いの高額費用を掛けてデータ復旧させる経済的合理性は極めて低い。

よって、”完璧な論理データ消去に拘り過ぎず、悪意ある者が費用対効果でデータ復旧を諦めるレベルにする。”
言い換えると
「できるだけ簡便な手段で復元コストが復元データの価値を大きく上回る状態にする」
を設計判断の基準として設定。

7.設計判断

  • 論理データ消去の対象外を設定
    • 故障媒体
      • 故障等で論理データ消去できない媒体は物理破壊する。(例:ドリルによるせん孔)
    • IDE、SATA以外のHDD(SASやSCSI)
      • PC内蔵の媒体としては絶対数が少ない。
    • 100GB未満のHDD
      • NISTの見解から解釈すると2001年以降発売15GB以上のHDDは1度のデータ上書きで問題なくデータ消去できる。
      • ただし古いHDDは製造年を確認できない場合があるため、安全係数を考慮して100GB未満のHDDは論理データ消去できたとしても、その後、できるだけ速やかに物理破壊する。
  • 消去レベル
    • HDD/SSDいずれにおいても以下の順番で消去レベルを選択する。
      1.Secure Erase Enhanced
      ↓非対応
      2.Secure Erase
      ↓非対応
      3.ランダム書込×2
    • ランダム書込はshredを想定
      • Secure Erase非対応時の代替手段として採用
      • 2回の上書きは古くてサイズの小さいHDDを考慮
  • 消去結果の確認
    • ピックアップ方式の説明が不要な全量域チェックを選択。
    • Secure Erase(Enhanced)、ランダム書込とも処理結果として、何が書き込まれるかは事前には不明のため、Secure Erase(Enhanced)が期待通りの挙動をしなかった場合のリスク対応および、消去結果チェック処理をシンプルにするために、消去結果チェックの前に全量域をゼロ(0x00)で上書きし、その後、全ての領域がゼロ(0x00)であることを確認する。
  • 運用設計
    • 消去作業用機器
      • HDD/SSDを取り外した廃棄予定PCを活用。
      • 複数媒体を並列で作業する場合を考慮する。
    • 容量にもよるがHDDだと処理完了まで数時間はかかるため、以下の運用要件を考慮する
      • 都度コマンド実行ではなくスクリプト化する。
      • 処理結果は画面とログファイルに出力する。

8.実装メモ

  • 使ったOSとスクリプト内の主要なコマンド
    • RockyLinux(USBブート)
    • blockdev
    • hdparm
    • dd
    • shred
    • hexdump

9.評価

  • 確実にデータ消去したことが記録に残る。
  • 論理データ消去に関わる外部流出コストは発生しない。
  • 消去作業用PCが複数台あれば並列作業も十分可能。

10.学び

  • 技術的には論理データ消去は難しくない。
  • NISTの解釈と要件のマッチング(割り切り判断)がカギ。
    • リスクの許容度によって設計が変わる。

11.参考文献

Appendix

  1. ハマったポイント
    • SATAディスクのOS認識
      • 消去対象のSATAディスクを接続しないまま、RockyをUSBブートすると、その後SATAディスクを接続しても認識しない。
      • 消去対象のSATAディスクを接続した状態で、RockyをUSBブートすると、SATAディスクを認識するがFrozen状態になる。
      • ここでSATAディスクの電源ケーブルを抜き差しするとnot Frozenになる。
    • USB接続したIDEディスクに対するコマンドの非同期復帰
      • USB接続したIDEディスクにSecure Eraseを実行すると、直後に復帰してしまうことがあることが分かった。(バックグラウンドでSecure Eraseは実行されている。完了まで他の処理は受け付けない模様。)
      • 後続処理の同期をとるためダミーの読取処理を入れて(ddとか)、Secure Eraseの処理完了を待ち合わせる。
    • 全量域の判定
      • blockdevで出力したディスクサイズとhexdump実行結果に表示される最終位置を比較。