Аттестация и происхождение TDX CVM

1. Обзор

Конфиденциальные виртуальные машины (CVM) — это тип виртуальных машин Compute Engine , использующих аппаратное шифрование памяти и защиту целостности. Это помогает гарантировать, что ваши данные и приложения не могут быть прочитаны или изменены в памяти во время использования. В этом практическом занятии вы узнаете, как сгенерировать аттестационное письмо Intel TDX для CVM и проверить его локально в демонстрационных целях. Кроме того, вы проверите происхождение CVM от хоста Google Cloud и экземпляра.

Данная практическая работа включает следующие шаги:

  • Настройка конфиденциальной виртуальной машины Intel TDX
  • Получение расчёта на аттестацию TDX
  • Проверка цитирования и одноразового кода подтверждения TDX.
  • Проверка целостности микропрограммы GCE (OVMF).
  • Проверка происхождения хоста и экземпляра GCE TDX

Что вы узнаете

  • Как получить расчётное предложение TDX Attestation на CVM с помощью инструментов go-tdx-guest
  • Как проверить подлинность, актуальность (nonce) и целостность прошивки GCE (OVMF) цитаты.
  • Как проверить происхождение хоста и экземпляра Google Cloud (поиск в реестре PPID и привязка экземпляра PZID )

Что вам понадобится

2. Настройка и требования

Чтобы включить необходимые API, выполните следующую команду в консоли Google Cloud или в локальной среде разработки:

gcloud auth login

gcloud services enable \
    cloudapis.googleapis.com \
    cloudshell.googleapis.com \
    confidentialcomputing.googleapis.com \
    compute.googleapis.com

3. Настройка CVM и получение котировки TDX

На этом этапе вы создадите TDX CVM и получите аттестационное предложение TDX от оборудования.

  1. Перейдите в консоль Google Cloud или в локальную среду разработки. Создайте CVM следующим образом:
gcloud config set project <project-id>

gcloud compute instances create tdx-cvm-attestation-codelab \
    --machine-type=c3-standard-4 \
    --zone=us-central1-c \
    --confidential-compute-type=TDX \
    --maintenance-policy=TERMINATE \
    --image-family=ubuntu-2204-lts \
    --image-project=ubuntu-os-cloud \
    --scopes https://www.googleapis.com/auth/cloud-platform

Замените <project-id> на уникальный идентификатор вашего проекта.

  1. Подключитесь к CVM.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
  1. Настройте среду Go на CVM:
wget https://go.dev/dl/go1.24.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
  1. Установите инструменты go-tdx-guest .

Клонируйте репозиторий и соберите инструмент attest , который генерирует TDX-запрос.

git clone https://github.com/google/go-tdx-guest.git
cd go-tdx-guest/tools/attest
go build
  1. Получите расчётную сумму для аттестации TDX:

Используйте инструмент attest для генерации котировки. Мы передадим nonce (64 байта REPORT_DATA ) и сохраним результат в quote.bin .

nonce=$(head -c 64 /dev/urandom | xxd -p | tr -d '\n' | head -c 128)
sudo ./attest -in $nonce -inform hex -outform bin -out quote.bin

Котировка TDX теперь сохранена в quote.bin !

4. Проверка аттестационной котировки TDX

Теперь, когда мы сгенерировали запрос Intel TDX ( quote.bin ), мы можем проверить его с помощью инструмента check предоставленного в репозитории go-tdx-guest . Этот инструмент проверяет запрос на соответствие спецификациям Intel, сверяет его с данными, загруженными из службы сертификации Intel Provisioning Certification Service (PCS), и проверяет ограничения политики, такие как nonce, для предотвращения атак повторного воспроизведения.

  1. Перейдите в каталог инструмента check и выполните его сборку:
cd ~/go-tdx-guest/tools/check
go build
  1. Запустите инструмент для проверки криптографических подписей и nonce. Мы будем использовать флаг -get_collateral=true для загрузки необходимых сертификатов TEE из PCS Intel, флаг -check_crl=true для проверки аннулирования сертификатов и флаг -report_data для проверки актуальности nonce:
./check -in ~/go-tdx-guest/tools/attest/quote.bin -inform bin \
    -get_collateral=true -check_crl=true \
    -report_data $nonce

Если цитирование криптографически корректно и значение nonce совпадает, инструмент запишет в лог сообщение об успешном завершении, аналогичное приведенному ниже примеру, и завершит работу с кодом 0 :

INFO : TDX Quote verified successfully

5. Проверка целостности микропрограммы GCE (OVMF).

Хотя подтверждающие документы Intel проверяют работоспособность оборудования, они не гарантируют, что виртуальная машина работает под управлением подлинной, неизмененной прошивки Google Compute Engine (GCE).

Google публикует подписанные подтверждения запуска (содержащие эталонные измерения целостности, или RIM) для всех официальных релизов прошивки GCE UEFI (OVMF) в общедоступном хранилище Google Cloud Storage (GCS).

На этом этапе мы воспользуемся общедоступным инструментом Google gce-tcb-verifier для автоматического получения подтверждения прошивки от GCS, проверки подписи Google на нем и сравнения результатов измерения прошивки CVM ( MRTD ) с полученными данными.

1. Создайте инструмент проверки GCE TCB.

  1. Клонируйте общедоступный репозиторий gce-tcb-verifier с GitHub:
cd ~
git clone https://github.com/google/gce-tcb-verifier.git
  1. Перейдите в каталог инструмента командной строки и выполните сборку:
cd gce-tcb-verifier/gcetcbendorsement/cli
go build -o gcetcbendorsement
  1. Для удобства добавьте созданный инструмент в переменную PATH:
export PATH=$PATH:$(pwd)

2. Проверьте правильность расчета стоимости, сравнив ее с данными прошивки GCE.

Теперь запустите инструмент gcetcbendorsement для проверки вашей аттестационной цитаты. Поскольку инструмент автоматически подтверждает успешное прохождение проверки, мы можем добавить к команде && echo "Validation Succeeded!" , чтобы получить понятное и явное подтверждение успеха:

gcetcbendorsement tdx validate ~/go-tdx-guest/tools/attest/quote.bin && echo "Validation Succeeded!"

Выход:

Validation Succeeded!

Что происходит под капотом?

  1. Извлечение : Инструмент анализирует quote.bin и извлекает данные измерений прошивки ( MRTD ) из тела котировки TD.
  2. Загрузка : Она формирует URL-адрес GCS, используя MRTD , и загружает соответствующий VMLaunchEndorsement из общедоступного хранилища Google ( gs://gce_tcb_integrity ).
  3. Проверка подписи : Она получает публичный корневой сертификат центра сертификации Google ( https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt ) и криптографически проверяет подпись Google на загруженном подтверждении.
  4. Проверка измерений : Она сравнивает MRTD подтвержденное оборудованием TDX в вашем коммерческом предложении, с эталонными измерениями, указанными в подтверждении Google.

Если все проверки пройдут успешно, команда завершится с кодом 0 без уведомления об ошибке (или выведет Validation Succeeded! с помощью цепочки команд echo), что подтвердит, что на вашей виртуальной машине установлена ​​подлинная прошивка, одобренная Google!

6. Проверка происхождения хоста и экземпляра GCE TDX

В то время как аттестация и проверка прошивки подтверждают, что ваша виртуальная машина работает на подлинном оборудовании Intel TDX с одобренной Google прошивкой UEFI, проверка происхождения GCE TDX напрямую связывает ваше аттестационное предложение с инфраструктурой Google Cloud двумя важными способами:

  1. Проверка происхождения хоста : идентифицирует физическую машину Google Cloud, на которой работает ваша виртуальная машина, путем извлечения уникального PPID (Platform Provisioning ID) платформы из сертификата PCK, указанного в коммерческом предложении. Затем она получает запись реестра хост-платформы из Google Cloud Storage ( confidential-host-registry ), которая содержит информацию о физической зоне и о том, когда Google Cloud в последний раз выдал сертификаты подтверждения для хоста.
  2. Проверка происхождения экземпляра (привязка PZID) : Google Cloud криптографически привязывает идентификатор вашей конкретной виртуальной машины ( ProjectNumber , Zone и InstanceID ) к регистру MR_OWNER в коммите TDX. Проверка этой привязки гарантирует, что коммерческое предложение принадлежит исключительно вашему экземпляру , и предотвращает атаки повторного воспроизведения или подмены коммерческого предложения на разных виртуальных машинах или в разных проектах.

Инструмент командной строки gceprovenance (также расположенный в репозитории go-tdx-guest ) автоматизирует полную проверку происхождения — проверку подлинности цитаты, проверку актуальности, запись в реестре хоста и привязку PZID экземпляра одной командой.

  1. Перейдите в каталог gceprovenance и соберите инструмент:
cd ~/go-tdx-guest/tools/gceprovenance
go build
  1. Выполните полную проверку происхождения с помощью команды verify . Мы передадим файл цитат ( quote.bin ) и сгенерированный ранее nonce-код ( $nonce ):
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
  1. Если все проверки пройдут успешно, инструмент выдаст отчет о проверке, аналогичный следующему:
GCE TDX provenance verification: OK

Instance: projects/123456789012/zones/us-central1-c/instances/987654321098765

Checks
  Quote verification: OK
  REPORT_DATA challenge: OK
  Host registry document: found
  PZID binding: OK

PPID: 0123456789abcdef0123456789abcdef
Quote: tdx_quote.bin
Host registry: host_registry.json

Что происходит под капотом?

  • Проверка подписи и проверка подлинности : Инструмент проверяет цепочку подписей цитаты по корневому сертификату Intel и подтверждает, что значение REPORT_DATA цитаты соответствует вашему запросу $nonce .
  • Host Provenance ( PPID ) : Извлекает 32-символьный шестнадцатеричный PPID из конечного сертификата PCK и загружает JSON-документ реестра хостов из GCS ( https://storage.googleapis.com/confidential-host-registry/ ). https://storage.googleapis.com/confidential-host-registry/ ).
  • Проверка происхождения экземпляра ( PZID ) : Она запрашивает у локального сервера метаданных GCE числовой идентификатор проекта, зону и идентификатор экземпляра вашего экземпляра, формирует каноническую полезную нагрузку PZID в формате JSON ( {"instanceId":...,"numericalProjectId":...,"zone":...} ), вычисляет ее дайджест SHA-384 и проверяет, совпадает ли она с MR_OWNER в цитате.
  1. Проверьте полученный документ реестра хоста:

По умолчанию команда verify сохраняет полученный JSON-документ реестра хостов в файл host_registry.json . Вы можете просмотреть его, чтобы увидеть метаданные платформы хоста:

cat host_registry.json

Пример выходных данных:

{
  "zone": "us-central1",
  "timestamp": "2026-02-17T11:25:12Z"
}

Эти метаданные описывают свойства хост-машины:

  • zone : Физический регион/зона Google Cloud, где находится хост-машина.
  • timestamp : Дата и время в формате UTC, когда сертификаты аппаратной аттестации для этого хост-машины были в последний раз предоставлены и проверены Google Cloud.

7. Уборка

Выполните следующие команды в облачной консоли или в локальной среде разработки:

# Delete the CVM instance
gcloud compute instances delete tdx-cvm-attestation-codelab --zone=us-central1-c

8. Что дальше?

Узнайте больше о конфиденциальных виртуальных машинах и Compute Engine .