wolfTPMはDas U-Bootをサポートし、セキュア組み込みシステムにおける初期ブート段階でのTPM 2.0アクセスを拡張しました。
このポートは、ソフトウェアSPIを使用したU-Boot環境での直接的なTPM通信を可能にし、柔軟性のためにネイティブAPIと高レベルAPIの両方を提供します。
主な機能
- ソフトSPIドライバー
- 完全なTPM 2.0コマンドセット
- 複雑なTPM操作のためのネイティブAPIとラッパーAPI
- 2つの統合パス:
- linux:標準LinuxTPMインターフェースを介して通信するための
tpm2_linux.c
を使用 - UBOOT:
tpm_io_uboot.c
を介した直接的なSPI通信
- linux:標準LinuxTPMインターフェースを介して通信するための
U-Boot TPMコマンド
U-Bootのwolftpmコマンドインターフェースは、以下を含む豊富なTPM 2.0操作セットを提供します。
- 基本的なTPM制御:init、startup、self_test、info
- PCR管理:pcr_extend、pcr_read、pcr_allocate、pcr_print
- セキュリティ機能:clear、change_auth、dam_reset、dam_parameters
- ファームウェア管理:firmware_update、firmware_cancel
- 機能レポート:caps、get_capability
これらのコマンドにより、開発者はU-Boot内からTPMの状態を初期化、設定、問い合わせることができ、OSがロードされる前でもセキュリティ機能を有効にできます。
拡張機能
U-Bootはネイティブライブラリを通じて基本的なTPM 2.0コマンドサポートを含んでいますが、wolfTPMはファームウェアアップデートを管理する機能でこの機能を拡張します。
ファームウェア管理サポート
wolfTPMは、TPMファームウェアを管理するための専用コマンドを含んでいます。これにより、ユーザーがU-Bootシェルから直接アップデートを実行し、ファームウェアの動作を制御できます。
firmware_update <manifest_addr> <manifest_sz> <firmware_addr> <firmware_sz>
署名されたマニフェストとファームウェアイメージを指定し、TPMの完全なファームウェアアップデートを実行します。firmware_cancel
進行中のファームウェアアップデートプロセスをキャンセルまたは放棄することをユーザーに許可します。
これらの機能は、TPMファームウェアを管理したり、TPMデバイスの再起動をトリガーするメカニズムを欠くU-Bootの内蔵TPMスタックには存在しません。
wolfTPMにより、開発者はTPMライフサイクルの直接制御を獲得し、以下のようなシナリオをサポートします。
- TPMファームウェアのフィールドアップグレード
- 検証済みファームウェアイメージでのファクトリープロビジョニング
- startup/shutdownシーケンスを介したTPMリセットと復旧
U-BootでwolfTPMを活用することで、組み込み開発者とセキュリティチームは、標準的なU-Boot TPM実装が提供するものを超えたライフサイクルとプロビジョニングフローを含むTPM 2.0仕様の全機能を活用できます。
使い始めるには
詳細なビルド手順、設定オプション、実装例の実行方法については以下をご参照ください。
- 完全な詳細を含むPull Request:PR#398
- ドキュメント / 実装例:examples/u-boot/README.md
まとめ
wolfTPMのU-Bootサポートは、TPM 2.0の機能を活用して初期ブート環境をセキュアにするためにまさに理想的です。
豊富なコマンドラインインターフェース、柔軟なAPI、QEMUとswtpmに対するテスト済みのサポートを有しており、組み込みプラットフォームでのTPM統合のための堅牢なソリューションです。
ご質問がございましたら、ぜひ info@wolfssl.jp までお問い合わせください。