機密計算(Confidential VM・TEE)
クラウド事業者にもメモリの中身を見せずにVMを動かせる仕組みが分かります。AMD SEV-SNPとIntel TDXのメモリ暗号化・完全性保護・証明の原理を押さえ、既存の仮想化拡張との違いを整理できます。
- 1.機密計算はゲストのメモリをCPU内蔵鍵で暗号化し、ハイパーバイザやホストOSを含む「ゲスト外」全てを脅威モデルに入れて保護する。
- 2.AMD SEV-SNPはRMPによる完全性保護、Intel TDXはTDXモジュールという第三の特権層で改ざん・リプレイ・順序入れ替えを検知する。
- 3.リモートアテステーションはハードウェアが署名した測定値を提示し、検証側が期待値と照合してからでないと機密データを渡さない設計を可能にする。
何を守れていなかったのか
ハードウェア仮想化拡張やEPT/NPTの二段アドレス変換は、ゲストを高速かつ無改変で走らせることには成功しましたが、前提としてハイパーバイザを信頼していました。ハイパーバイザはVMCS/VMCBを構成し、EPTでゲスト物理アドレスを丸ごとホスト物理へマップし、ゲストのメモリページを平文のまま読めます。クラウドの文脈ではこの前提が問題になります。ハイパーバイザはクラウド事業者のソフトウェアであり、悪意ある内部者、乗っ取られた管理コンソール、あるいはハイパーバイザ自体の脆弱性を突かれれば、ゲストのメモリは丸見えです。
機密計算(Confidential Computing) はこの脅威モデルを反転させます。ゲストの外側にいる主体、すなわちハイパーバイザ・ホストOS・他のテナントVM・さらには物理メモリバスを覗くハードウェア攻撃者までも「信頼しない」対象に含め、CPUパッケージ内部だけを信頼の起点(Trusted Execution Environment、TEE)とします。ゲストVM単位でこれを実現したものが Confidential VM です。
メモリ暗号化自体は目新しくありません。既存のフルディスク暗号化やTPMはディスク上のデータを守ります。機密計算が新しいのは、CPUが実行中のVMのメモリを、同じホスト上で動くハイパーバイザからも見えない形で暗号化・完全性保護し、かつ「本当にそのハードウェアと正しいソフトウェアで動いているか」を外部が検証できる仕組み(アテステーション)を組み合わせた点です。
AMD SEV-SNP:RMPによる完全性保護
AMDのSEV(Secure Encrypted Virtualization)は世代を重ねており、SEV-SNP(Secure Nested Paging)が現行の到達点です。基本構成は次の通りです。
SEV : ゲストメモリをVM単位の鍵でAES暗号化(機密性のみ)
SEV-ES : ゲストのレジスタ状態も暗号化・保護(VM exit時の漏洩を防ぐ)
SEV-SNP : RMPで完全性・鮮度・所有権も保証(改ざん・リプレイ検知)
SEVの時点では各VMにメモリコントローラ内蔵のAES鍵が割り当たり、物理メモリへの書き込みはこの鍵で自動暗号化されます。ハイパーバイザがDMAやページ共有目的でゲストページを直接読んでも暗号文しか見えません。ただし暗号化だけでは、ハイパーバイザが暗号文ページを別の場所に差し替える、古い暗号文に巻き戻す(リプレイ)、別ゲストの暗号文を割り当てるといった攻撃を防げません。
SNPが導入する RMP(Reverse Map Table) はこの穴を塞ぎます。RMPはホスト全体で一枚だけ存在する物理メモリ全体のメタデータテーブルで、各物理ページについて「どのASID(VM識別子)が所有しているか」「ゲスト物理アドレスの何番地に対応づくべきか」を記録します。ゲストがページにアクセスするたびCPUがRMPを引き、所有権とアドレスの対応が一致しなければフォールトを起こします。
RMPエントリ(概念):
assigned : このページはVM専有か共有か
ASID : 所有VMの識別子
GPA : このページが対応すべきゲスト物理アドレス
page-size : 4KB/2MBなどの粒度
これにより、ハイパーバイザがゲストAのページをゲストBに見せる、同一ゲスト内でページの中身を入れ替える、古いスナップショットのページを再注入する、といった操作は所有権不一致またはGPA不一致としてハードウェアが検知します。RMPはいわば「物理メモリの逆引き所有権台帳」で、通常のページテーブルが「仮想→物理」を引くのに対し、「この物理ページは本当にこのゲストのこの番地であるべきか」を逆方向に検証します。
暗号化(confidentiality)は中身を読ませないこと、完全性保護(integrity)は中身を勝手に書き換えさせない・差し替えさせないことです。SEV無印は前者のみ、SEV-SNPは後者もRMPで担保する点が世代間の本質的な違いです。
Intel TDX:第三の特権層という発想
Intel TDX(Trust Domain Extensions)はSEV-SNPと目的は同じですが、アーキテクチャが異なります。SEV-SNPがメモリコントローラとRMPという「ハードウェア機構の追加」で守るのに対し、TDXは TDXモジュール というソフトウェアの第三の特権層を導入します。
VMX root : 通常のハイパーバイザ(VMM)が動く層
TDXモジュール : VMX rootより高い特権で動く、Intel署名済みの信頼コード
TD(Trust Domain): TDXモジュールが仲介する保護対象ゲスト
VMMは自分自身より上位に位置するTDXモジュールを経由しないとTD(保護対象ゲスト)のVMCS相当の構造や状態を操作できません。TDXモジュールはCPU内で計測・検証され、Intel自身の署名で保証されたコードだけがこの特権層で動きます。VMMがTDのメモリへ直接アクセスしようとする、TDのVMCSを不正な値で書き換えようとする、といった操作はTDXモジュールが仲介するAPI経由でしか行えず、モジュールがゲスト単位の暗号鍵・完全性検証・アドレス対応チェックを担います。
メモリ保護の方式は MK-TME(Multi-Key Total Memory Encryption) を土台にし、TD単位の鍵に加えて、SEV-SNPのRMPに相当する**Secure EPT(S-EPT)**でゲスト物理アドレスと実際の暗号化ページの対応を検証します。S-EPTはTDXモジュールだけが書き込め、VMMは間接的にしか操作できません。
| 観点 | AMD SEV-SNP | Intel TDX |
|---|---|---|
| 保護の主体 | メモリコントローラ+RMP(ハードウェア機構) | TDXモジュール(署名済みソフトウェア+ハード支援) |
| 完全性保護の実体 | RMP(物理ページの逆引き所有権台帳) | Secure EPT+TDXモジュールの仲介 |
| VMMとの関係 | VMMは暗号文しか見えないが構造操作は可能 | VMMはTDXモジュール経由でしか特権操作できない |
| ゲスト単位の分離 | ASIDで鍵とRMPエントリを紐付け | TD IDで鍵とS-EPTを紐付け |
両者とも狙いは同じで、ハイパーバイザに「見せない・触らせない」を暗号化と特権分離の両輪で実現することです。SEV-SNPはCPU外のメモリコントローラとRMPという追加ハードウェアで、TDXはCPU内に新設した特権層とそのソフトウェアで、それぞれ同じ問題を解いています。
リモートアテステーション:信頼の起点を検証可能にする
機密計算がクラウド利用で意味を持つには、利用者が「自分のVMが本当に本物のSEV-SNP/TDXハードウェア上で、改ざんされていないファームウェアとゲストイメージで動いている」ことをリモートから検証できなければなりません。これが リモートアテステーション(remote attestation) です。
流れは共通の骨格を持ちます。
1. 起動シーケンス中、各段階のコード・設定をハッシュで測定し「測定レジスタ」に累積
2. CPU内蔵の秘密鍵(ハードウェア製造時に焼き付け、外部に出せない)で
測定値に署名した「証明書(quote/report)」を生成
3. 検証者(利用者や鍵配布サーバ)がこの証明書を受け取り
a) 署名がCPUベンダーの証明書チェーンに繋がるか検証
b) 測定値が期待するソフトウェア構成のハッシュと一致するか照合
4. 一致して初めて、ディスク復号鍵などの機密データをゲストへ引き渡す
測定値はSEV-SNPでは ATTESTATION_REPORT、TDXでは TDREPORT/TDQUOTE と呼ばれる構造に格納され、ファームウェア・ブートローダ・カーネルのハッシュに加え、SNPならRMPの初期状態、TDXならTDXモジュールのバージョンなど、信頼の連鎖を裏付ける値が含まれます。署名鍵はCPUパッケージ内で生成・保持され、ソフトウェアからは読み出せない設計になっているため、「この証明書はハードウェアが本物である限り偽造できない」という前提が成立します。
暗号化だけでは「本当に期待通りのハードウェア・ソフトウェアで動いているか」を利用者が確認できません。悪意あるクラウド事業者がSEV-SNP非対応の偽ハイパーバイザ上で「機密計算です」と偽ることも理論上は起こり得ます。リモートアテステーションによる測定値の検証があって初めて、利用者は機密データを安全に投入する判断を下せます。実運用では鍵配布サーバ(key broker)がアテステーションを検証してから復号鍵を渡す構成が一般的です。
既存のハードウェア仮想化拡張との違い
VT-x/AMD-Vの拡張がVM entry/exitとEPT/NPTによる二段アドレス変換で実現したのは「ゲストを無改変・高速に走らせつつホストが管理できる」ことでした。この枠組みではホスト(ハイパーバイザ)はゲストの完全な管理者であり、同時に信頼される主体です。機密計算はこの前提を覆し、ホストを「管理はできるが中身は見えない・勝手に書き換えられない」主体に格下げします。
| 観点 | 従来の仮想化拡張(VT-x/AMD-V+EPT) | 機密計算(SEV-SNP/TDX) |
|---|---|---|
| 脅威モデル | ハイパーバイザは信頼する | ハイパーバイザも脅威に含める |
| メモリの可視性 | ホストは物理メモリを平文で読める | ホストには暗号文しか見えない |
| 完全性保護 | 対象外(改ざんは想定しない) | RMPやS-EPTで改ざん・差し替えを検知 |
| 正当性の外部確認 | 手段なし | リモートアテステーションで検証可能 |
| 主目的 | 性能を落とさず複数ゲストを分離実行 | ホストからもゲストの中身を隠す |
DMA/IOMMUによるデバイス隔離がデバイスからのメモリアクセスをアドレス変換とドメイン分離で制限するのと同様に、機密計算はハイパーバイザからのメモリアクセスを暗号化と所有権検証で制限すると捉えると、両者は「誰の視点からのアクセスを制限するか」が異なるだけで、原理的には親戚関係にあります。
SEV-SNP=RMPというハードウェア台帳で所有権とアドレス対応を検証/TDX=TDXモジュールという第三の特権層がVMMの特権操作を仲介/リモートアテステーション=CPU内蔵鍵で署名した測定値を外部が検証してから機密データを渡す仕組み。三つを混同せず、それぞれ「誰が」「何を」保証しているかで覚えると設計意図がぶれません。
まとめ
- 機密計算はハイパーバイザを含むゲスト外の全てを脅威モデルに入れ、CPUパッケージ内部だけを信頼の起点とする。既存の仮想化拡張はホストを信頼する前提だった。
- AMD SEV-SNPはメモリコントローラの鍵による暗号化に加え、RMPで物理ページの所有権とゲスト物理アドレスの対応を検証し、改ざん・差し替え・リプレイを検知する。
- Intel TDXはTDXモジュールという署名済みソフトウェアをVMX rootより上位の特権層に置き、VMMのTDへの操作をすべて仲介させることでS-EPTと鍵を保護する。
- リモートアテステーションはCPU内蔵の秘密鍵で署名した測定値を提示し、検証側が期待するハッシュと照合してから初めて機密データを渡す設計を可能にし、暗号化だけでは埋まらない「本物であることの確認」を担う。
OS Article
機密計算(Confidential VM・TEE)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
機密計算
比較で見る軸
難易度: advanced / カテゴリ: OS / タグ数: 6
導入後に効く点
AMD SEV-SNPはRMPによる完全性保護、Intel TDXはTDXモジュールという第三の特権層で改ざん・リプレイ・順序入れ替えを検知する。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- OS
- タグ数
- 6
判断チェックリスト
- 自社の用途が「機密計算 / TEE」に近いか確認する。
- 強みである「機密計算はゲストのメモリをCPU内蔵鍵で暗号化し、ハイパーバイザやホストOSを含む「ゲスト外」全てを脅威モデルに入れて保護する。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。