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


3. TPM2.0チップの基本構成

このブロック図はTPM2.0チップの主要な機能のみを示しています。 以下にそれぞれの機能を説明します。


I/O(Input/Output)
I/Oバッファは、TPMとホストシステム間の通信エリアです。システムは、コマンドデータをI/Oバッファに入れ、バッファからレスポンスデータを取り出します。
非対称エンジン(Asymmetric Engine(s))
TPMは、アテステーション、識別、およびシークレットの共有に非対称アルゴリズムを使用します。 TPMは、TCGが識別子を割当てた非対称アルゴリズムをサポートすることができます。 非対称アルゴリズム識別子は、そのアルゴリズムと共に使用されるアルゴリズムおよび方法のファミリを示します。
ハッシュエンジン(Hash Engine)
ハッシュ関数は、外部ソフトウェアによって直接的に、またはTPMオペレーションの一部として使用します。 TPMはハッシュを使用して、必要に応じて(たとえばKDFなどの)整合性チェックと認証だけでなく、一方向関数を提供します。TPMは、最も強力な非対称アルゴリズムとほぼ同じセキュリティ強度を持つ、承認されたハッシュアルゴリズムを実装しています。 TPM2.0はSHA1、SHA256、SHA384が仕様で定義されています。
対称エンジン(Symmetric Engine(s))
TPMは、対称暗号を使用してコマンドパラメータ(通常は認証情報など)を暗号化し、外部に格納された保護されたオブジェクトを暗号化します。 暗号フィードバックモード(CFB)は、この仕様で必要な唯一のブロック暗号モードです。
管理(Management)
ここでは、TPM動作の初期化、スタートアップなどの各ステートや、そのステートの遷移を管理します。さらにTPMチップ自身のセルフテストや故障時の対応についての管理も行っています。また、TPMの階層の構成やNVメモリの割当てなどの制御、外部からの辞書攻撃などが行われた際のロックアウト制御も行っています。
認可(Authrorization)
TPM2.0には1)パスワード、2)HMAC、3)ポリシーの認可タイプがありますが、コマンドによっては、認可が無い場合や2つの認可が必要な場合があります。
乱数生成(RNG)
RNGはTPMにおける乱雑性のソースになります。そのソースからTPMは乱数、鍵の生成、署名などに使用します。この乱数生成はTPM以外で使用することも可能です。
鍵生成(Key Generation)
鍵の生成では2つの異なるタイプの鍵を生成します。通常の鍵は乱数生成から作成され、もう一つのタイプはシード値から鍵導出関数(KDF)を使用して鍵が作成されます。TPM2.0ではNIST SP800-108のKDFが使用されています。
実行エンジン
実行エンジンはプログラムコードを実行します。一般的には内蔵型のCPUが搭載されています。