検証用パブリックアーカイブについて

[更新: 2025年12月11日]

機密VMプランで利用可能となる検証用パブリックアーカイブについて記載します。


利用方法

検証用パブリックアーカイブから機密 VM を作成

機密 VM 検証用のパブリックアーカイブを指定した状態でサーバ作成を行います。

機密VMプランの作成方法については 機密VMプランについて をご参照ください。

注意

機密 VM プランを選択した状態でのみ、検証用パブリックアーカイブをご利用いただけます。

使い方

初回ログイン

初回ログインは VNC コンソールから行います。認証情報を投入する手段がないため、SSH 接続はご利用いただけません。

初回ログイン1
以下の初期ログイン情報でログイン後、パスワード変更が求められます。

Current password に初期パスワードを入力後、 New password / Retype new password の入力を求められたら、新規パスワードを設定ください。

  • ユーザ名: ubuntu

  • 初期パスワード: HAau4a9j

初回ログイン2

パスワード設定が完了するとシェル画面が表示されます。 /home/ubuntu/.ssh/authorized_keys に公開鍵を追加することで SSH 接続が可能になります。

初回ログイン3

インストール済みツールについては以下の通りとなります。

ubuntu@ATTESTATION_TARGET:~$ rustup -V
rustup 1.28.2 (e4f3ad6f8 2025-04-28)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.91.0 (f8297e351 2025-10-28)`
ubuntu@ATTESTATION_TARGET:~$ snpguest -V
snpguest 0.9.2

リモートアテステーション概念実証用スクリプト check-attestation.sh について

検証用パブリックアーカイブには、リモートアテステーションの概念実証用スクリプトとして /home/ubuntu/check-attestation.sh がインストールしてあります。これを用いることで、アテステーションレポートの発行要求と取得が簡単に行えます。

なお、check-attestation.sh は以下のリポジトリでも公開しています。スクリプトの内容確認にご利用ください。 https://github.com/sakura-internet/confidential-computing

手元の信頼できるコンピューターで生成した 512bit の乱数からなる nonce ファイルを安全な通信路を介して転送した後、sudo コマンドを通してcheck-attestation.shを実行すると、以下のような出力がされた後 report-(日時)/report-(日時).tar.gz が出力されます。

$ sudo ./check-attestation.sh nonce.bin

>>> Create ephemeral EK
persistent-handle: 0x81010001
action: persisted

>>> Initialize configfs-tsm

>>> Set TSM service_provider to svsm

>>> Set VMPL to 2

>>> Write nonce.bin as inblob

>>> Read attestation report
attestation report (./report-2511200320/attestation_report.bin): 1184 bytes

>>> Read service manifest
service manifest (./report-2511200320/services_manifest.bin): 362 bytes

>>> Create ./report-2511200320.tar.gz
./report-2511200320.tar.gz created

>>> Changing ownership to ubuntu





================================
Done - Report archive saved.
Send ./report-2511200320.tar.gz to the remote machine, and run the following scripts (requires virtee/snpguest binary).
================================

rsync -av ATTESTATION_TARGET:/home/ubuntu/report-2511200320.tar.gz .
tar xvf ./report-2511200320.tar.gz
snpguest fetch vcek der fetched_certs ./report-2511200320/attestation_report.bin
snpguest verify attestation fetched_certs/ ./report-2511200320/attestation_report.bin
snpguest display report ./report-2511200320/attestation_report.bin

report-(日時).tar.gz を手元のコンピューターへ SSH などを介して取り出し、コマンドの出力結果に従い virtee/snpguest を用いて検証操作を行うことで、当該機密 VM が真正なハードウェア環境で実行されているかを確認できます。


check-attestation.sh の注意点

  • SVSM vTPM を含む環境での動作を前提としており、スクリプト内で TPM のクリア操作を行っています。 意図せず TPM の内容が消去される可能性がありますので、一般的な PC 上では実行しないようにしてください。

  • nonce.bin は必ずお客様が信頼しているマシン上で生成してください。少なくともアテステーション操作が完了するまでは機密 VM 内の乱数生成器を信頼すべきではありません。

  • アテステーションレポート取得の度に新しい乱数を生成するようにして、 nonce.bin は使い回さないようにしてください。
    • 使い回しを許容すると、アテステーションレポートのリプレイ攻撃に対する耐性が失われます。

    • 機密 VM の実行基盤や CPU 側では nonce の一意性を確認することはできませんので、お客様責任にて nonce の使い回しを許容しないようなシステム構築をお願いいたします。


実行例

以下に実行例を示します。なお、アテステーション対象となる機密 VM を ATTESTATION_TARGET 、信頼済みのローカルマシンを LOCAL_MACHINE と表記し、信頼済みのローカルマシンには virtee/snpguest v0.9.2 がインストールされていることを前提とします。

user@LOCAL_MACHINE:~$ rsync -av nonce.bin ubuntu@ATTESTATION_TARGET:~
sending incremental file list
nonce.bin

sent 180 bytes  received 35 bytes  143.33 bytes/sec
total size is 64  speedup is 0.30
user@LOCAL_MACHINE:~$ sha512sum nonce.bin
aaa02d609183e25bc359357a8f4119978ed8c8c52262ddbdced222b6b006913508b7281efe228cf864a389c561c815b75a6c5ed1020d36aa624bdbfb87286687  nonce.bin
user@LOCAL_MACHINE:~$

----------------------------

ubuntu@ATTESTATION_TARGET:~$ sha512sum nonce.bin
aaa02d609183e25bc359357a8f4119978ed8c8c52262ddbdced222b6b006913508b7281efe228cf864a389c561c815b75a6c5ed1020d36aa624bdbfb87286687  nonce.bin
ubuntu@ATTESTATION_TARGET:~$ sudo ./check-attestation.sh nonce.bin

>>> Create ephemeral EK
persistent-handle: 0x81010001
action: persisted

>>> Initialize configfs-tsm

>>> Set TSM service_provider to svsm

>>> Set VMPL to 2

>>> Write nonce.bin as inblob

>>> Read attestation report
attestation report (./report-2511200350/attestation_report.bin): 1184 bytes

>>> Read service manifest
service manifest (./report-2511200350/services_manifest.bin): 362 bytes

>>> Create ./report-2511200350.tar.gz
./report-2511200350.tar.gz created

>>> Changing ownership to ubuntu





================================
Done - Report archive saved.
Send ./report-2511200350.tar.gz to the remote machine, and run the following scripts (requires virtee/snpguest binary).
================================

rsync -av ATTESTATION_TARGET:/home/ubuntu/report-2511200350.tar.gz .
tar xvf ./report-2511200350.tar.gz
snpguest fetch vcek der fetched_certs ./report-2511200350/attestation_report.bin
snpguest verify attestation fetched_certs/ ./report-2511200350/attestation_report.bin
snpguest display report ./report-2511200350/attestation_report.bin

----------------------------

user@LOCAL_MACHINE:~$ rsync -av ATTESTATION_TARGET:/home/ubuntu/report-2511200350.tar.gz .
receiving incremental file list
report-2511200350.tar.gz

sent 43 bytes  received 3,451 bytes  2,329.33 bytes/sec
total size is 3,324  speedup is 0.95
user@LOCAL_MACHINE:~$ tar xvf ./report-2511200350.tar.gz
./report-2511200350/
./report-2511200350/ek.ctx
./report-2511200350/attestation_report.bin
./report-2511200350/services_manifest.bin
./report-2511200350/ek.pub
user@LOCAL_MACHINE:~$ snpguest fetch vcek der fetched_certs ./report-2511200350/attestation_report.bin
user@LOCAL_MACHINE:~$ snpguest verify attestation fetched_certs/ ./report-2511200350/attestation_report.bin
Reported TCB Boot Loader from certificate matches the attestation report.
Reported TCB TEE from certificate matches the attestation report.
Reported TCB SNP from certificate matches the attestation report.
Reported TCB Microcode from certificate matches the attestation report.
VEK signed the Attestation Report!
user@LOCAL_MACHINE:~$ snpguest display report ./report-2511200350/attestation_report.bin
Attestation Report:

Version:                      5

Guest SVN:                    0

Guest Policy (0x30000):
  ABI Major:     0
  ABI Minor:     0
  SMT Allowed:   true
  Migrate MA:    false
  Debug Allowed: false
  Single Socket: false
  CXL Allowed:   false
  AEX 256 XTS:   false
  RAPL Allowed:  false
  Ciphertext hiding: false
  Page Swap Disable: false

Family ID:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Image ID:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

VMPL:                         0

Signature Algorithm:          1

Current TCB:

TCB Version:
  Microcode:   84
  SNP:         24
  TEE:         0
  Boot Loader: 10
  FMC:         None

Platform Info (101):
  SMT Enabled:               true
  TSME Enabled:              false
  ECC Enabled:               true
  RAPL Disabled:             false
  Ciphertext Hiding Enabled: false
  Alias Check Complete:      true
  SEV-TIO Enabled:           false

Key Information:
    author key enabled: false
    mask chip key:      false
    signing key:        vcek

Report Data:
95 23 25 3D 74 AA 04 03 32 E4 E2 A1 D7 57 34 E6
DD 4A 2C 56 FD CA 2F 88 42 80 DA D6 F3 C8 A6 58
EF A5 F1 D3 83 25 91 F5 02 A9 AD B3 E3 1D 8E 9A
44 DA D2 2D 0A 6B 43 B5 C5 60 95 59 DA 8E 25 9F

Measurement:
87 35 67 8E 1D A9 8A 81 FC 8F BA 53 14 E5 36 33
81 99 FD A9 52 A4 1B 54 08 D2 45 71 5D 10 94 CD
85 56 67 78 43 83 13 7D 84 4C 5F 78 74 FA EF 01

Host Data:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

ID Key Digest:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Author Key Digest:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Report ID:
80 4E BA 3A 24 B4 51 1F E4 97 ED 2A 5D 93 50 E9
D9 16 7F D9 3C AF 0C 52 AA D5 51 BD B5 6A 8B 9D

Report ID Migration Agent:
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

Reported TCB:

TCB Version:
  Microcode:   84
  SNP:         24
  TEE:         0
  Boot Loader: 10
  FMC:         None

CPUID Family ID:              25

CPUID Model ID:               17

CPUID Stepping:               1

Chip ID:
D6 F2 AD A0 40 F5 E9 55 C3 DB E2 D1 02 C6 38 7A
10 FC B2 1B 35 5E 91 47 19 3F 66 8D BE E6 F7 90
DD 7E 89 A3 4B 73 31 34 8D 9E 59 FA F2 E2 94 D6
5D 1A F9 F1 DF 05 6B F5 D5 F8 A4 79 D4 71 4D 85

Committed TCB:

TCB Version:
  Microcode:   84
  SNP:         24
  TEE:         0
  Boot Loader: 10
  FMC:         None

Current Version:              1.55.42

Committed Version:            1.55.42

Launch TCB:

TCB Version:
  Microcode:   84
  SNP:         24
  TEE:         0
  Boot Loader: 10
  FMC:         None

Launch Mitigation Vector:     0

Current Mitigation Vector:    0

Signature:
  R:
57 2A 77 45 2A 9B 02 F9 D7 88 24 A5 BB 5F 35 DF
BB 37 65 E2 47 A8 59 21 7F 07 B1 E8 B8 AE 7A C8
B4 31 C1 46 4B 0F B0 16 D2 44 60 DF 70 2A 61 A8
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
  S:
84 72 2B 74 4A 4D 1E 58 64 52 0B D2 9F C4 D2 05
A5 9F F7 99 92 AE CB F2 09 28 70 FA 74 8E F5 5C
DE DF F9 F1 B9 BA 3E 51 94 E2 CD 33 CC 45 01 1B
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00

アテステーションレポートの検証

report-(日時).tar.gz として得られたアーカイブ内には、アテステーションレポート (attestation_report.bin)とサービスマニフェスト(services_manifest.bin)が含まれます。 これらのファイルと、アテステーションレポートの発行要求を行った際に機密 VM へ支給したnonce (nonce.bin) を突合・検証を行うことで、機密 VM が真正な環境で動作していることの確証を得ることができます。

得られた attestation_report.bin は virtee/snpguest などのツールで検証が可能です。

アテステーションレポートの以下の3ステップで行います。

  • VCEK 証明書の取得とアテステーションレポートの外形的検証

  • アテステーションレポートの内容検証

VCEK 証明書の取得とアテステーションレポートの外形的検証

VCEK 証明書を用いてアテステーションレポートを検証することで、 当該のアテステーションレポートが真に AMD 社製ハードウェアで生成されたものか を確認します。これにより、CPU 内部でのレポート発行後に改ざんが行われていないことが証明可能となります。

アテステーションレポートの検証に際しては CPU に紐付く非対称鍵を用いて作成された、VCEK 証明書を得る必要があります。VCEK 証明書は Chip ID (CPU 個体ごとに設定されるユニークな ID)を元に AMD KDS (Key Distribution System, AMD 社の運用する鍵配布サーバ) から HTTPS で取得できます。

check-attestation.sh で表示される操作のうち、snpguest fetch vcek コマンドにより VCEK 証明書の取得を行います。以下のようなコマンドを実行すると、./report-2511200350/attestation_report.bin に含まれる Chip ID に基づき AMD KDS により発行された証明書を ./fetched_certs/ ディレクトリへ保存する動作を行います。

$ snpguest fetch vcek der fetched_certs ./report-2511200350/attestation_report.bin

VCEK 証明書の発行は AMD KDS への HTTPS アクセスが可能な環境であればどこからでも行えます。ユーザーの手元にアテステーションレポートと AMD KDS への真正なアクセスが行える環境が存在すれば、レポートの発行元(CPU)が真に AMD 社が製造したものであることを確認できます。

取得した VCEK 証明書を用いてアテステーションレポートを検証するには、snpguest verify attestation コマンドを使用します。以下のようなコマンドを実行すると、./fetched_certs/ ディレクトリに保管されている証明書 (snpguest fetch vcek コマンドで取得したもの) を用いて ./report-2511200350/attestation_report.bin の検証を行い、検証結果を出力します。

user@LOCAL_MACHINE:~$ snpguest verify attestation fetched_certs/ ./report-2511200350/attestation_report.bin
Reported TCB Boot Loader from certificate matches the attestation report.
Reported TCB TEE from certificate matches the attestation report.
Reported TCB SNP from certificate matches the attestation report.
Reported TCB Microcode from certificate matches the attestation report.
VEK signed the Attestation Report!

アテステーションレポート発行後に何らかの改ざんを受けている場合、エラーを出力して終了します。正規のアテステーションレポートを1ビットだけ書き換えて検証を行った際の出力を以下に示します。

user@LOCAL_MACHINE:~$ snpguest verify attestation fetched_certs/ attestation_report_tampered.bin
Reported TCB Boot Loader from certificate matches the attestation report.
Reported TCB TEE from certificate matches the attestation report.
Reported TCB SNP from certificate matches the attestation report.
Reported TCB Microcode from certificate matches the attestation report.
ERROR: VEK did NOT sign the Attestation Report!
Error: VEK did NOT sign the Attestation Report!

検証結果が Error: VEK did NOT sign the Attestation Report! となった場合、アテステーションレポートが破損しているか改ざんを受けていることが考えられます。いずれにせよ機密 VM の状態が正常ではないと考えられるため、アテステーションレポートの発行元となった機密 VM は信用できないと判断し、機密データの取り扱いは避けるべきです。

検証が正常に完了した場合、少なくとも 改ざんを受けていない、正規のアテステーションレポートが取得できた ことが証明できます。この手順では真正な AMD 社製ハードウェア上でレポート取得の手順が行われたことだけが検証可能であるため、例えば攻撃者が用意した真正な AMD 社製ハードウェア上で機密 VM が起動された場合などでもこのチェックは通過してしまいます。 続く手順を実行し、アテステーションレポートに含まれる内容そのものの検証を進めることで、この VM が信用に値するかの判定を進めていく必要があります。


アテステーションレポートの内容検証

アテステーションレポートの外形検証によりレポートが正しく CPU から発行されたものであり、改ざんされていないことが証明できました。次に、アテステーションレポートの内容を確認してアテステーション対象の VM が想定通りの状態となっているか確認します。

アテステーションレポートの内容表示には snpguest display report コマンドが利用できます。各項目の内容を評価し、お客様側で策定したポリシーに従い、アテステーション対象を信頼するか決定してください。

user@LOCAL_MACHINE:~$ snpguest display report ./report-2511200350/attestation_report.bin
Attestation Report:

Version:                      5

Guest SVN:                    0

Guest Policy (0x30000):
ABI Major:     0
ABI Minor:     0
SMT Allowed:   true
Migrate MA:    false
Debug Allowed: false
Single Socket: false
CXL Allowed:   false
AEX 256 XTS:   false
RAPL Allowed:  false
Ciphertext hiding: false
Page Swap Disable: false

Family ID:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Image ID:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

VMPL:                         0

Signature Algorithm:          1

Current TCB:

TCB Version:
Microcode:   84
SNP:         24
TEE:         0
Boot Loader: 10
FMC:         None

Platform Info (101):
SMT Enabled:               true
TSME Enabled:              false
ECC Enabled:               true
RAPL Disabled:             false
Ciphertext Hiding Enabled: false
Alias Check Complete:      true
SEV-TIO Enabled:           false

Key Information:
    author key enabled: false
    mask chip key:      false
    signing key:        vcek

Report Data:
95 23 25 3D 74 AA 04 03 32 E4 E2 A1 D7 57 34 E6
DD 4A 2C 56 FD CA 2F 88 42 80 DA D6 F3 C8 A6 58
EF A5 F1 D3 83 25 91 F5 02 A9 AD B3 E3 1D 8E 9A
44 DA D2 2D 0A 6B 43 B5 C5 60 95 59 DA 8E 25 9F

Measurement:
87 35 67 8E 1D A9 8A 81 FC 8F BA 53 14 E5 36 33
81 99 FD A9 52 A4 1B 54 08 D2 45 71 5D 10 94 CD
85 56 67 78 43 83 13 7D 84 4C 5F 78 74 FA EF 01

Host Data:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

ID Key Digest:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Author Key Digest:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Report ID:
80 4E BA 3A 24 B4 51 1F E4 97 ED 2A 5D 93 50 E9
D9 16 7F D9 3C AF 0C 52 AA D5 51 BD B5 6A 8B 9D

Report ID Migration Agent:
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

Reported TCB:

TCB Version:
Microcode:   84
SNP:         24
TEE:         0
Boot Loader: 10
FMC:         None

CPUID Family ID:              25

CPUID Model ID:               17

CPUID Stepping:               1

Chip ID:
D6 F2 AD A0 40 F5 E9 55 C3 DB E2 D1 02 C6 38 7A
10 FC B2 1B 35 5E 91 47 19 3F 66 8D BE E6 F7 90
DD 7E 89 A3 4B 73 31 34 8D 9E 59 FA F2 E2 94 D6
5D 1A F9 F1 DF 05 6B F5 D5 F8 A4 79 D4 71 4D 85

Committed TCB:

TCB Version:
Microcode:   84
SNP:         24
TEE:         0
Boot Loader: 10
FMC:         None

Current Version:              1.55.42

Committed Version:            1.55.42

Launch TCB:

TCB Version:
Microcode:   84
SNP:         24
TEE:         0
Boot Loader: 10
FMC:         None

Launch Mitigation Vector:     0

Current Mitigation Vector:    0

Signature:
R:
57 2A 77 45 2A 9B 02 F9 D7 88 24 A5 BB 5F 35 DF
BB 37 65 E2 47 A8 59 21 7F 07 B1 E8 B8 AE 7A C8
B4 31 C1 46 4B 0F B0 16 D2 44 60 DF 70 2A 61 A8
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
S:
84 72 2B 74 4A 4D 1E 58 64 52 0B D2 9F C4 D2 05
A5 9F F7 99 92 AE CB F2 09 28 70 FA 74 8E F5 5C
DE DF F9 F1 B9 BA 3E 51 94 E2 CD 33 CC 45 01 1B
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00

本マニュアルでは、最低限以下の値について確認することを推奨します。

  • Report Data

  • Measurement

  • Chip ID

Report Data

Report Data フィールドには、アテステーションレポートの発行要求時に与えた nonce 値を元とするハッシュ値が格納されています。要求時に使用した nonce 値とサービスマニフェスト(services_manifest.bin) を結合したデータの SHA-512 ハッシュを取得し、Report Data フィールドの値と一致するかを確認することで、アテステーションレポート要求時に与えた nonce 値が使われているかを検証できます。

$ cat nonce.bin ./report-2511200350/services_manifest.bin | sha512sum
9523253d74aa040332e4e2a1d75734e6dd4a2c56fdca2f884280dad6f3c8a658efa5f1d3832591f502a9adb3e31d8e9a44dad22d0a6b43b5c5609559da8e259f  -
$ ./snpguest display report ./report-2511200350/attestation_report.bin
Attestation Report:

...略...

Report Data:
95 23 25 3D 74 AA 04 03 32 E4 E2 A1 D7 57 34 E6
DD 4A 2C 56 FD CA 2F 88 42 80 DA D6 F3 C8 A6 58
EF A5 F1 D3 83 25 91 F5 02 A9 AD B3 E3 1D 8E 9A
44 DA D2 2D 0A 6B 43 B5 C5 60 95 59 DA 8E 25 9F

Report Data フィールドの値と、nonce.bin と service_manifest.bin を結合したデータの SHA-512 ハッシュが一致しない場合、アテステーションレポートと nonce の対応が誤っていることが考えられます。この場合、過去に取得した正規のアテステーションレポートを用いたリプレイ攻撃が行われる可能性があるため、アテステーションレポートの発行元となった機密 VM は信用できないと判断し、機密データの取り扱いは避けるべきです。


Measurement

Measurement フィールドには、機密 VM 起動時に使用された UEFI ファームウェアの測定値が格納されています。事前にレビューを行った UEFI ファームウェアの測定値を事前に取得しておき、アテステーションレポートに記載されている本フィールドの内容とを比較することで、レビュー済みの真正な UEFI ファームウェアが使用されているかを確認することができます。

機密 VM プランで使用される UEFI ファームウェアは OVMFcoconut-svsm/svsmIGVM フォーマットで結合したものです。 機密 VM プランでは使用している UEFI ファームウェアのバイナリファイルを公開しておりますので、お客様の手元で測定値の取得やバイナリ解析を行っていただくことにより、起動時に使用される UEFI ファームウェアと SVSM が信用に値するかを検証できます。

coconut-svsm/svsm 内に含まれる igvmmeasure コマンドを用いて真正な UEFI ファームウェア (coconut-qemu.igvm) とアテステーションレポートの測定値を比較する例を以下に示します。

$ ./igvmmeasure coconut-qemu.igvm measure -b
A6A219E744F73C5AF4DED11FFDEA7D7896C9FD33276003156B62AD4F496DCFF6DDA12E1DA9849E14477D33B95D424354
$ ./snpguest display report ./report-2511200350/attestation_report.bin
Attestation Report:

...略...

Measurement:
A6 A2 19 E7 44 F7 3C 5A F4 DE D1 1F FD EA 7D 78
96 C9 FD 33 27 60 03 15 6B 62 AD 4F 49 6D CF F6
DD A1 2E 1D A9 84 9E 14 47 7D 33 B9 5D 42 43 54

使用される可能性がある coconut-qemu.igvm の測定値は以下の通りです。

(2025/12/11~)
A6A219E744F73C5AF4DED11FFDEA7D7896C9FD33276003156B62AD4F496DCFF6DDA12E1DA9849E14477D33B95D424354

coconut-qemu.igvm と OVMF.fd は GitHub の sakura-internet organization 上で公開しています。機密 VM プランで使用している UEFI ファームウェアと SVSM の動作を信用すべきかの判断にご利用ください。

https://github.com/sakura-internet/coconut-svsm/releases

https://github.com/sakura-internet/coconut-svsm-edk2/releases


Chip ID

Chip ID は製造時に CPU 個体ごとに割り当てられるユニークな値です。AMD KDS に対して証明書の発行要求を行うことで AMD 社によって製造された正規のハードウェアであることを確認できるほか、事前に真正な Chip ID のリストを保持しておき、レポート内に記載されている Chip ID との一致を確認することで、弊社が提供しているハードウェア上で機密 VM が実行されているかを判定することができます。

2025/12/11現在、機密VMプラン上で取得したアテステーションレポートに含まれうる Chip ID の値は以下の通りです。1行で1つの Chip ID となっており、機密VMプランでは起動の度にこのリストの中から一つの Chip が選択され、その上で機密 VM が起動します。なお、このリストはホストサーバの新設や保守によって追加・削除が行われる可能性があります。

B6F3CCD6CB03A43D1EEDA56C09471A4DDE1A6BD4DE4752347FD9FDAC6F6DF4608B2CCEC33794594129DC2F5E66E690987BACBC9E4E269BF07D1D9714614FB370
C8349D4E58D9B116A06A5744CEB9CBDF2276AC6A264B9E9FFA65E5286A8556D2D50B120CF3F3F7B6D8B15CD983583565B718F0BF839A43352545A9F00094F041
9EAACD75FFB77E3F2EAC158D99DD7768FD96C7CA94B3DFB1E012BE355CDAB969BCC67ECACB68EA36D903BF655106FEC43D46F100BD437BFC078FF620CFE92978

OS の整合性検証と保護

OS や各種ソフトウェア群の整合性についてはお客様側で担保していただく必要があります。 ソフトウェアアップデートの度に各種測定値は変動しますので、変更を加える前にあらかじめ正しい測定値を取得しておく必要があります。


起動時に使用されたソフトウェアの測定値ログ

アテステーションレポートの検証により SVSM への信頼を確立できた場合、tpm2-tools に含まれる tpm2_eventlog コマンドを用いて起動に用いられたコンポーネントに関わる測定値を読み出すことができます。

読み出せる測定値の例は以下の通りです。

  • grub で実行されたコマンド
    • カーネルに渡すコマンドライン引数

    • 使用する initrd のパス

  • 実際に起動に使用された initrd の SHA-256 / SHA-384 ハッシュ値

以下に取得例を示します。EventNum 109 で取得した Digests に含まれる値が /boot/initrd.img-6.17.0-6-generic の SHA-384 ハッシュと一致することが確認できます。

ubuntu@sakura-cvm-example:~$ sudo tpm2_eventlog /sys/kernel/security/tpm0/binary_bios_measurements
---
version: 1
events:
- EventNum: 0
PCRIndex: 0
EventType: EV_NO_ACTION

...

- EventNum: 109
PCRIndex: 9
EventType: EV_IPL
DigestCount: 2
Digests:
- AlgorithmId: sha256
    Digest: "2d17798d99746aaf5103fbb60bda1ea83d6075c7b224db9e499104c330538a90"
- AlgorithmId: sha384
    Digest: "87c4cff8ab1e03d6ee0192e7956bbd8730c67739b75b5516a485405f7c669009a3bde306cc602ded1ad057304cc1b14b"
EventSize: 29
Event:
    String: "/initrd.img-6.17.0-6-generic\0"

...

ubuntu@sakura-cvm-example:~$ sha384sum /boot/initrd.img-6.17.0-6-generic
87c4cff8ab1e03d6ee0192e7956bbd8730c67739b75b5516a485405f7c669009a3bde306cc602ded1ad057304cc1b14b  /boot/initrd.img-6.17.0-6-generic

なお、ディスク上のファイルとの比較は例示のためのものです。比較対象となる initrd.img のハッシュ値は事前に測定を行っておく必要があります。