
ユーザーフレンドリーで軽量なBluetooth経由TPMリモート構成証明
Ultrablue(User-friendly Lightweight TPM Remote Attestation over Bluetooth)は、個人ユーザーが自分のスマートフォンでブート状態のアテステーションを実行できるようにするソリューションです。 これは、コンピューター上で動作しアテスターとして機能するサーバーと、信頼されたスマートフォン上で動作しベリファイアとして機能するグラフィカルなクライアントアプリケーションで構成されています。
典型的なユースケースは、コンピューターのロックを解除する前にブートチェーンの完全性を検証して、無人のラップトップに対するオフライン攻撃を防ぐことです。また、ファームウェアアップグレード後のセキュアブート問題のデバッグツールや、ディスク暗号化の第二要素としても使用できます。
インストールが完了すると、標準的なUltrablueの制御フローは以下のいくつかのステップで構成されます:
Ultrablueを使用するには、ブート状態をアテステーションしたいLinuxコンピューター(TPMとBluetoothインターフェースを備えたもの。通常はラップトップ)と、スマートフォンが必要です。
電話をベリファイアとしてエンロールするには、エンロールモードでサーバーを起動します:
sudo ultrablue-server -enroll -pcr-extend
これにより、ターミナルにQRコードが表示されます。スマートフォンからクライアントアプリを起動し、右上隅の**+**アイコンをタップしてQRコードスキャナーを表示します。スキャンすると、Bluetooth Low Energyチャネルが確立され、エンロールメントが自動的に実行されます。成功すると、クライアントアプリケーションのホームページにデバイスカードが表示されます。
Ultrablueは、エンロール時にランダムに生成された値を使用してTPM2 PCR9を拡張できます。これは、例えばディスク暗号化をTPM2シーリングにバインドしたい場合に有用です。その場合、ultrablueは、アテステーションが成功し信頼できると判断された場合、ブート時にPCR9レジスタを拡張し戻します。PCR拡張はエンロール時に設定されます(このフラグはアテステーションモードでは効果がありません):
sudo ultrablue-server -enroll -pcr-extend
ultrablueをブートフローの一部として実行したい場合は、それをバンドルするためにinitramfsを再生成する必要があります。Dracutとsystemdの統合を提供することで、これを容易にしています。提供されているVMスクリプトも参照してください。これらはこれをテストするさらに簡単な方法を提供します。
まず、server/dracut/90ultrablueを/usr/lib/dracut/modules.d/モジュールディレクトリにインストールします。
その後、以下のdracutコマンドを実行できます:
dracut --add ultrablue /path/to/initrd --force
エンロールメントフェーズで--pcr-extendオプションを使用した場合は、crypt dracutモジュールを追加し、server/dracut/90crypttab.confを/etc/dracut.conf.dにコピーする必要があります(dracutバグ#751640を回避するため):
cp server/dracut/90crypttab.conf /etc/dracut.conf.d
dracut --add "crypt ultrablue" /path/to/initrd --force
これらのオプションは永続的ではなく、ultrablueは次回のinitramfs生成時に削除されることに注意してください。永続的な設定については、dracut.conf(5)のマニュアルページを参照してください。
initramfsの設定手順を実行した場合、Ultrablueサーバーはブート中に自動的に実行されます。それ以外の場合は、アテステーションモードでサーバーを手動で起動します:
sudo ultrablue-server
起動すると、サーバーはベリファイア(スマートフォン)の接続を待機します。スマートフォンから、デバイスカードの**▶️**アイコンをクリックします。これによりアテステーションが実行されます。完了すると、クライアントアプリケーションにアテステーションの結果が表示されます。
ブート時にultrablueを実行する主な目的は、ディスクの復号に使用することです。これを行う方法の例は、サーバーテストベッドで提供され、文書化されています。
Ultrablueプロジェクトは、ANSSI(ssi.gouv.fr)で、Nicolas BouchinetとGabriel Kerneisの監督の下、Loïc Buckwellによって開発されました。
ご質問がある場合は、Githubのissue、または直接Gabriel Kerneis [email protected]までお問い合わせください。