Show HN:エアギャップデバイスにデータを貼り付けるための暗号化BLEドングルを作りました
ToothPasteは、暗号化されたBLEドングルを使用して、USB対応デバイスにワイヤレスでキーボードとマウスのコマンドを送信するオープンソースプロジェクトです。ドライバや複雑な設定は不要で、AES-256暗号化、ECDH鍵交換、ATECC608B暗号コプロセッサによりセキュリティを確保します。Web BLEを介したブラウザからの制御や、AIエージェントとの統合も可能です。
ToothPasteは、エアギャップ環境やキーボードのみ対応のデバイス(BIOS、組み込みシステムなど)に機密情報を転送するための革新的なオープンソースハードウェアプロジェクトです。その中核はESP32-S3マイクロコントローラを搭載したUSBドングルで、Bluetooth Low Energy(BLE)を介して暗号化されたキーボード・マウスコマンドを受信し、USB HIDプロトコルで物理デバイスをエミュレートすることでワイヤレス制御を実現します。プロジェクトの核心は、BIOS設定やエアギャップシステム、パスワードマネージャーをインストールしたくない公共のコンピュータなど、一回限りのシナリオで複雑なログインフローを排除することです。従来のKDE Connectのようなソリューションは両方のデバイスが互換性のあるOSを実行し、ソフトウェアをインストールする必要がありますが、ToothPasteはUSB HID標準を利用します。これはほぼすべてのUSBホスト互換デバイスがキーボード入力をサポートし、システムがデフォルトでキーボードを信頼するという特性を活用しています。
プロジェクトは多層のセキュリティアーキテクチャを採用しています。BLE接続自体は安全ではありませんが、ToothPasteはECDH公開鍵暗号と部分的Out-of-Band(OOB)鍵交換を使用してセッション固有のAES-256鍵を生成し、すべてのデータパケットを暗号化します。さらに、V2バージョンではMicrochip ATECC608B暗号認証チップを統合し、秘密鍵の生成と保存を独立した隔離領域で行うため、物理攻撃者がESP32のフラッシュメモリを読み取っても資格情報を抽出できません。これにより、デバイスが物理的に侵害されても鍵は漏洩しません。ToothPasteは完全にローカルで動作し、クラウドサービスを一切使用しません。ブラウザに保存されたローカルデータ(マクロやDuckyスクリプトを含む)は、パスワードとArgon2派生鍵で暗号化することもでき、パスワードマネージャーのブラウザ拡張機能と同様の仕組みです。
使用は非常に簡単です。ユーザーはWeb BLEアプリ(Chromiumベースのブラウザが必要)を介してドングルに直接接続でき、専用ソフトウェアのインストールは一切不要です。プロジェクトはWebシリアル経由のファームウェア書き込みツールも提供し、アップデートも容易です。上級者はソースコードからビルドすることも可能ですが、ESP-IDFや関連ツールチェーンのインストールが必要です。ハードウェア面では、ToothPaste V2のPCBはPCBWayのスポンサーにより製造され、USB-CまたはUSB-Aコネクタを備え、プロによる組み立てとテストが行われています。ファームウェアは完全なキーボード・マウス機能をサポートし、BIOSレベルの入力にも対応します。V2ではV1からセキュリティが大幅に向上し、認証情報の保存がソフトウェア依存からハードウェア依存に変わりました。
プロジェクトはAI統合にも取り組んでいます。ToothPasteDesktopのRust製TUIとMCPサーバーにより、AIエージェントがドングルを制御し、リモートシステムからシリアルポート経由でフィードバックを受けることができ、SSHに似た自動化操作が可能です。現時点ではESP32-S3のUSBエンドポイント数に制限があるため、仮想シリアルポートと完全なHID機能を同時に実現できません。現在のエンドポイントはBOOTキーボード、BOOTマウス、汎用HID入力、制御記述子で占有されており、USB CDCシリアルデバイスを有効にするにはいずれかを犠牲にする必要があります。将来的にはUSB Mass Storageクラスを追加し、スクリーンショットの取得やファイル転送を可能にして、PiKVMのようなBLEベースのIP-KVMソリューションを目指しています。