TCGが提供するTPM2.0の基本技術

  0. TPMを始める前に

  1. TPM1.2とTPM2.0の違いについて
  2. 信頼の基点(Root of Trust)の重要性
  3. TPM2.0チップの基本構成
  4. 階層
  5. 鍵の種類
  6. 復号/暗号化セッションの重要性
  7. TPM2.0を使用したソフトウェア開発
  8. Q&A


2.信頼の基点(Roots Of Trust) の重要性

①信頼とは

信頼とは、デバイスが特定の目的のために特定のルールで動作することを期待できることです。そのためTCGでは、トラステッドプラットフォームに対して、少なくとも以下の3つの基本機能を提供すべきと提案しています。これらの機能を実現するには、ハードウェアとしてのTPMとその機能を実現するためのソフトウェアが必要になります。

  • 保護機能(protected capabilities)
  • 構成証明(Attestation)
  • 完全性の計測、保存と通知
保護機能
保護機能(protected capabilities)とは、保護領域(shielded locations)にアクセスするための特別な権限を持ったコマンドセットです。TPMの保護機能(protected capabilities)には、暗号鍵の管理、乱数生成、システムのステートにデータをシールする(結び付ける)ことなどがあります。保護領域は、機密性のあるデータを安全に取り扱うことができる場所(メモリ、レジスタなど)であり、保護機能を用いることによってのみアクセスできるようになっています。
構成証明
構成証明(attestation)とは、情報の正確さを確認するためのプロセスです。外部エンティティは、保護領域、保護機能、信頼の起点(Roots of Trust)について証明することができます。また、プラットフォームは、プラットフォームの完全性(信頼性)に影響するプラットフォーム特性のディスクリプションについて証明することができます。構成証明のすべての形式は、構成証明を行うエンティティが信頼できる証拠を必要とします。
完全性の計測、保存と通知
完全性の計測(integrity measurement)は、プラットフォームの完全性(信頼性)に影響するプラットフォームの特性に関するメトリックを取得し、それらのダイジェスト値をPCRに書き込みます。計測の開始ポイントはroot of trust for measurement(計測のための信頼の基点)と呼ばれます。静的なroot of trust for measurementは、セルフテストにおける電源の状態といった周知の起動状態から計測を開始します。動的なroot of trust for measurementは、信頼できない状態から信頼できる状態への推移を計測します。完全性の通知(integrity reporting)は、PCRに完全性の計測値を保管するための構成証明を行うプロセスです。

②3つの信頼の基点

トラステッドブートはTPMを利用してソフトウェアの改ざん検出を実現する方法になります。一般的には信頼の基点と呼ばれるRoot of Trustから起動が開始され、次の実行モジュールを順次計測して、計測した結果を正しい値と比較します。その結果、正しい値と相違があると何らかの改ざんが行われたことが確認できます。

3つのRoot of Trust

TCGでは、トラステッドプラットフォーム(Trusted Platform)として次の3つのroot of trustを説明しています。これらの組み合わせで不正検出ができるように構成されます。

  1. root of trust for measurement(RTM)
  2. RTMは信頼のおける完全性の計測を行うことができる演算エンジンで、通常RTMは、CRTM(Core Root of Measurement)によって制御されるCPUになります。具体的には、 CRTMは、新しい信頼チェーンが確立されたときに実行される最初の一連の命令です。 システムがリセットされるとCPUはCRTMの実行を開始します。
  3. root of trust for storage(RTS)
  4. RTSは完全性の計測値のダイジェスト値とダイジェストのシーケンス値の適切な要約を保管することができる機能を持った演算エンジンでです。一般的に、これはTPMメモリで、TPM以外のエンティティによるアクセスから保護されています。 TPMは、そのメモリへの不適切なアクセスを防止するために信頼できるため、TPMはRTSとして機能することができます。
  5. root of trust for reporting(RTR)
  6. RTSが保存する情報を確実に通知する機能を持った演算エンジンで、RTRはRTSの内容を報告します。 RTRの報告は、通常、TPM内の選択された値の内容のデジタル署名したダイジェストになります。

プラットフォームの起動の仕組み

電源投入時に最初に起動する部分であるCRTM(Core Root of Trust for Measurement)から行います。このCRTMは簡単に置換えが出来ない部分として実装することが必要です。PCの場合、BIOSで書き換えのできない部分が相当します。組込み機器でBIOSを持っていない場合は何らかの仕組みが必要です。次にローダー、OSという順序で起動していきますが、それぞれのハッシュ値を取得し、TPMのPCRへExtendしていくことになります。

PCRに保存された値は、そのプラットフォームで想定されている値と比較することにより何等かの改ざんがなされていないか確認できます。 このようにCRTMを信頼の基点(Root of Trust)として次々にインテグリティ情報を取得し信頼の境界(Trust Boundary)を広めていくことによりプラットフォーム全体の信頼性を得ます。

*Trsuetd BootとSecure Bootの違い(一般論として)
よくTrudted BootとSecure Bootの違いを聞かれますが、両者の大きな違いはどのタイミングで計測のチェックを行うかによります。Trusted Bootは基本的に計測したハッシュ値を記録するだけで、Secure Bootはハッシュ値が正しい期待された値がどうかを確認します。

トラステッドプラットフォーム(Trusted Platform)の最も重要な役割は、 不正行為が検出できるようにするために、TCG対応システムのRoots of Trust(信頼の起点)が信頼できるコンポーネントになることです。完全なRoots of Trustセットは、プラットフォームの信頼性に影響するため重要な役割を持っています。