概要
- Phantomdriveは オープンソース のUSBドライブ。
- 表面上は 8GB のディスクとして認識され、残りは隠蔽。
- プレーンテキストでパスワード入力時に 隠し領域 へ切り替え、AES-256で暗号化。
- ハードウェア・ソフトウェアともに 完全公開 設計。
- セキュリティ、使い勝手、設計思想を詳細に解説。
Phantomdriveの概要と用途
- Phantomdrive は、プライバシーを尊重しない環境や強制的なメディア開示が求められる状況で活躍する USBストレージデバイス。
- 通常接続時は 8GBの一般的なUSBドライブ として認識される設計。
- 特定のプレーンテキストファイル(内容:password:PUTYOURPASSWORDHERE)を書き込むことで 自動的に隠し領域へ切り替え。
- 隠し領域は AES-256 でオンザフライ暗号化・復号化。
- オープンソース で公開されており、ファームウェア・ハードウェア・設計ツールも全て自由に利用可能。
- 設計チップは CH569 を採用。
- メモリには SDカード を使用(eMMCの価格が下がれば今後対応予定)。
- ケースはエポキシ接着で分解困難、物理的な強度を確保。
- 攻撃者に物理的に分解されても全データは暗号化 されているため安全性を確保。
設計詳細
- CH569チップ を中心に、USBポート、電源回路、ファームウェア更新用ボタン、SDカードスロットで構成。
- UARTテストポイント 搭載で開発・デバッグを容易化。
- SM4暗号化ブロック も搭載(中国商用暗号標準)。
- オープンソースの設計ツール を利用し、誰でも再現・改良が可能。
- eMMC版は将来的に価格次第で対応予定。
暗号化方式とKDF(鍵導出関数)
- AES-256の鍵導出には パスワード+デバイス固有のソルト を使用。
- ソルトはUSBの ID_SERIAL_SHORT (例:Phantomdrive:34FC1FA7145467F7)から取得。
- ソルトにより 事前計算攻撃(レインボーテーブル)の防止。
- デバイスごとに異なるソルトで SDカードの使い回し不可。
- KDFは SHA-256を10万回ラウンド で実行し、約3秒でアンロック。
- Argon2等のメモリハードKDFはハードリソースの都合で未採用。
- セキュリティ要件に応じてラウンド数調整や二重暗号化も推奨。
AESの各モード解説
- AES-ECB :単純なブロック暗号、同一平文→同一暗号文となるためセキュリティ上不適。
- AES-CTR :カウンターモード、各ブロックごとにカウンター値を暗号化しXOR。カウンター再利用リスクあり。
- 書き込み速度:約9MB/s、読み込み:約20MB/s。
- AES-XTS :ディスク暗号化標準。2つの鍵(データ鍵・ツイーク鍵)を使用し、セクターごとにツイークを生成。
- カウンター再利用問題を解決、速度はやや低下(書き込み6MB/s、読み込み10MB/s)。
- セキュリティ重視ならXTS推奨だが、速度重視ならCTRも選択肢。
ファームウェアの特徴
- USB WRITE10/READ10コマンド をSDカードのCMDxに変換するシンプルな設計。
- ファイルシステム非認識で、全書き込みデータに対して パスワード検出機能 を実装。
- 書き込みバッファ内に"password:"が検出された場合、パスワードをRAMに抽出し、バッファをゼロクリアしてディスクに残さない仕様。
- 偶発的な"password:"文字列一致リスクも存在するため、要件に応じてカスタマイズ可能。
セキュリティとコミュニティ対応
- OpenSSLのAES実装と比較し、 暗号化の正当性を検証 済み。
- GitHubでのAIによる誤報や誤解、Redditでの議論発生事例あり。
- コミュニティからのフィードバックを受け、 AES-XTSの実装やKDF強化 など継続的に改善。
- デバイスの USB PID/VIDや名称もカスタマイズ可能 でステルス性向上。
まとめ・今後の展望
- Phantomdriveは オープンソース精神 に基づき、設計から実装まで全て公開。
- プライバシー保護、検閲回避、権利侵害対策のための 実用的なUSBストレージ。
- 今後eMMC版の開発やセキュリティ機能の強化 も予定。
- プロジェクト支援・プレオーダー受付中。
- 作者: Ryan Walker (オープンソース愛好家)
参考リンク
- CH569ライブラリ:https://github.com/hydrausb3/wch-ch56x-lib
- ISPプログラミングライブラリ:https://github.com/hydrausb3/wch-ch56x-isp