TL

TPMによる測定起動とリモートアテステーション

起動チェーンの改ざんを後から検知可能にする仕組みを内部から理解できます。PCR拡張・シーリング・アテステーションの原理を押さえ、ディスク暗号化やゼロトラスト設計の判断力が身につきます。

応用TPM測定起動アテステーションSecure Bootセキュリティ暗号最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.TPMはPCRにハッシュを一方向拡張し、起動チェーンの各段を暗号学的に記録する。
  • 2.シーリングはPCR値を鍵解放条件にでき、改ざん後の起動では鍵が復元できない。
  • 3.リモートアテステーションはPCRログとTPM署名(Quote)を第三者が検証し起動状態を証明する。

Secure Bootとの違い:拒否か記録か

ブートチェーンの内部で見たSecure Bootは、各段の実行体の署名を検証し、許可されていないコードの実行を拒否する仕組みです。これに対し測定起動(Measured Boot)は、実行を止めません。各段が次段を実行する前に、そのコードや設定のハッシュをTPM(Trusted Platform Module)に記録し、あとから「何を実行したか」を検証可能にします。両者は排他的ではなく併用されるのが通常です。Secure Bootが「改ざんされたものを起動させない」防御なら、測定起動は「何を起動したかを否認不可能な形で残す」証跡です。

なぜ拒否ではなく記録なのか

測定起動は多様な正当構成(デュアルブート、カーネルのバージョン違い、BIOS設定の差)を否定せずに扱う必要があります。起動を止めずに「状態を証明可能にする」ことで、可否判断を起動時のファームウェアから、起動後にネットワーク越しで判断する検証者へ委譲できます。

PCRと拡張演算:なぜ改ざんを後から検知できるか

TPMは**PCR(Platform Configuration Register)**と呼ばれる小さなレジスタ群(通常24本、SHA-256なら各32バイト)を持ちます。PCRへの書き込みは上書きではなく、**拡張(Extend)**という一方向演算のみが許されます。

PCR_new = Hash( PCR_old || measurement )

この式が本質です。PCRは初期値(多くは全ゼロ)から出発し、起動の各段が「次に実行するコードのハッシュ」を測定値として渡すたびに、現在値と連結して再ハッシュした結果で更新されます。ハッシュ関数の一方向性により、途中の測定値を1つでも変えると最終PCR値は別の値になり、かつ特定の最終値になるよう逆算して測定列を偽造することは計算量的に不可能です。これがTPMに直接上書き命令がない理由で、ソフトウェアが「都合の良い値」を書き込んで正当な起動を偽装することを構造的に防ぎます。

典型的なPCR割り当ては次のとおりです。

PCR測定対象測定する主体
PCR0-7ファームウェア(UEFI本体、設定、拡張ROM)CRTM / UEFI
PCR4ブートマネージャ(ブートローダ実行体)UEFIファームウェア
PCR7Secure Bootの鍵・証明書の状態(db/dbx/PK/KEK)UEFIファームウェア
PCR8-15OSローダ以降(GRUB設定、カーネル、initramfs等)ブートローダ/OS

測定連鎖は**CRTM(Core Root of Trust for Measurement)**という、電源投入直後に実行される改変不能な最初のコードから始まります。CRTMが次段(ファームウェア本体)を測定してからそれに制御を渡し、以降も「実行前に次段を測定する」を各段が繰り返すことで、信頼の起点をハードウェアに固定したまま連鎖を伸ばします。この逐次測定の考え方はブートチェーンの内部の多段リレー構造と対応しており、Secure Boot用の鍵階層検証に、PCR拡張という記録レイヤーが並走するイメージです。

シーリング:PCR値を鍵解放の条件にする

TPMのもう一つの中核機能が**シーリング(Sealing)**です。データ(多くの場合はディスク暗号化鍵などの対称鍵)をTPMに預ける際、「どのPCR値の組み合わせのときだけ復号を許すか」というポリシーを紐付けられます。

Seal(data, PCR_policy) → sealed_blob
Unseal(sealed_blob):
  現在のPCR値がPCR_policyと一致するか TPM内部で検証
  一致 → data を返す
  不一致 → 復号を拒否(TPM外にdataは一切出ない)

重要なのは、この照合がTPMチップ内部で完結し、ホストOSの判断を経由しない点です。攻撃者がブートローダを改ざんしてOSを起動できたとしても、改ざんによってPCR8以降の値が変わっていれば、シールされた鍵はTPMから取り出せません。BitLockerやLUKSのTPM連携(systemd-cryptenrollのTPM2ポリシー等)はこの機構を使い、正規の起動チェーンを経た場合のみディスク暗号化鍵を自動解放します。

シーリングは改ざん検知であって防止ではない

シーリングは「改ざん後に鍵を渡さない」仕組みであり、改ざん自体を止めるものではありません。攻撃者はブートローダを書き換えて起動を続けさせることは可能ですが、その場合PCR値が変化し鍵解放に失敗するため、暗号化データへはアクセスできません。可用性の観点では、正当なファームウェア更新でもPCR値が変わり得るため、更新時に再シーリング(鍵の再登録)の運用が必要です。

リモートアテステーション:起動状態を第三者に証明する

シーリングがローカルでの鍵解放判断なのに対し、リモートアテステーションはPCR値とその根拠をネットワーク越しの第三者(検証者)に証明する手続きです。核となるのがTPMのQuote操作で、次のように進みます。

1. 検証者 → 対象機:  nonce(乱数チャレンジ)を送付
2. 対象機のTPM:  Quote = Sign_AK( PCR_selection || PCR値 || nonce )
                  ※AK: Attestation Key、TPM内部で秘密鍵が生成・非搬出
3. 対象機 → 検証者:  Quote 署名, PCRログ(各段の測定値と対象の詳細記録)
4. 検証者:
   a. AKの証明書チェーンを検証(TPMメーカーのEK証明書に遡る)
   b. Quote署名を検証し、nonceが一致するか確認(リプレイ防止)
   c. PCRログを先頭から順にHash(PCR_old||m)で再計算し、Quote内のPCR値と一致するか確認
   d. 再計算過程で得た個々の測定値(カーネルのハッシュ等)を既知の許可リストと照合

nonceを挟むのは、過去に採取したQuoteを再送するリプレイ攻撃を防ぐためです。署名鍵AKは**EK(Endorsement Key)**というTPM製造時に埋め込まれる鍵を使い「同一TPM内で生成された鍵である」ことを証明され(Credential Activation)、EK証明書によって「これは本物のTPMチップである」ことをチップベンダが保証します。ここまで遡れることが、リモート側が「なりすましTPMではない」と信頼できる根拠になります。

PCR値そのものではなくログが本体

検証者が実際に意味づけできるのはPCRの最終値ではなく、その値を導いた**測定ログ(各段の個別ハッシュの並び)**です。最終PCR値はログを再生して一致確認する検算用のアンカーであり、ポリシー判定(このカーネルは許可リストにあるか等)はログの個々のエントリに対して行います。

適用例と設計上の要点

クラウド事業者の機密コンピューティング基盤や企業のゼロトラスト端末認証では、アテステーションの結果をネットワークアクセス可否の条件に使います。例えば「承認済みカーネルバージョンでSecure Boot有効な端末のみ社内VPNに接続可能」という運用は、PCR7とPCR8-15の値をアテステーションサーバーが照合して実現します。これはハイパーバイザやIOMMUによる分離(DMAとIOMMU)とは異なる層の保証で、「隔離されているか」ではなく「起動時に何が実行されたか」を証明する点が異なります。また、TPMのPCRは起動時のみ拡張されるため、実行中のカーネル改ざん(ライブパッチや侵害)は測定起動の対象外です。カーネルライブパッチのような実行時変更や、パニック後の再起動挙動(カーネルパニックとウォッチドッグ)は別途のランタイム保護・監視と組み合わせる必要があります。

試験・実務での区別ポイント

Secure Bootは「起動時点での拒否」、測定起動+PCRは「起動チェーンの改ざん不可能な記録」、シーリングは「PCR値を条件にしたローカルな鍵解放」、リモートアテステーションは「PCR根拠をネットワーク越しに第三者検証」という4層の役割分担を混同しないことが重要です。

まとめ

  • PCRは初期値からの一方向拡張のみを許し、起動チェーンの測定値を改ざん不可能な形で蓄積する。
  • シーリングはPCR値を条件にTPM内部で鍵解放を判断し、改ざんされた起動では暗号化データへ到達できなくする。
  • リモートアテステーションはnonceとTPM署名(Quote)、EK証明書チェーンにより、起動状態をリプレイ耐性を持って第三者に証明する。

Secure Bootの鍵階層と起動リレー全体はブートチェーンの内部、ハードウェア分離による別系統の保護はDMAとIOMMUも参照してください。

OS Article

TPMによる測定起動とリモートアテステーションを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

TPM

比較で見る軸

難易度: advanced / カテゴリ: OS / タグ数: 6

導入後に効く点

シーリングはPCR値を鍵解放条件にでき、改ざん後の起動では鍵が復元できない。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
OS
タグ数
6

判断チェックリスト

  • 自社の用途が「TPM / 測定起動」に近いか確認する。
  • 強みである「TPMはPCRにハッシュを一方向拡張し、起動チェーンの各段を暗号学的に記録する。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

TPM測定起動アテステーションSecure BootセキュリティTPM測定起動アテステーション
参考: 公式情報