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)
Что вам понадобится
- Проект Google Cloud Platform
- Базовые знания Google Compute Engine и Confidential VM.
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 от оборудования.
- Перейдите в консоль 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> на уникальный идентификатор вашего проекта.
- Подключитесь к CVM.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
- Настройте среду 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
- Установите инструменты
go-tdx-guest.
Клонируйте репозиторий и соберите инструмент attest , который генерирует TDX-запрос.
git clone https://github.com/google/go-tdx-guest.git cd go-tdx-guest/tools/attest go build
- Получите расчётную сумму для аттестации 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, для предотвращения атак повторного воспроизведения.
- Перейдите в каталог инструмента
checkи выполните его сборку:
cd ~/go-tdx-guest/tools/check go build
- Запустите инструмент для проверки криптографических подписей и 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.
- Клонируйте общедоступный репозиторий
gce-tcb-verifierс GitHub:
cd ~ git clone https://github.com/google/gce-tcb-verifier.git
- Перейдите в каталог инструмента командной строки и выполните сборку:
cd gce-tcb-verifier/gcetcbendorsement/cli go build -o gcetcbendorsement
- Для удобства добавьте созданный инструмент в переменную 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!
Что происходит под капотом?
- Извлечение : Инструмент анализирует
quote.binи извлекает данные измерений прошивки (MRTD) из тела котировки TD. - Загрузка : Она формирует URL-адрес GCS, используя
MRTD, и загружает соответствующийVMLaunchEndorsementиз общедоступного хранилища Google (gs://gce_tcb_integrity). - Проверка подписи : Она получает публичный корневой сертификат центра сертификации Google (
https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) и криптографически проверяет подпись Google на загруженном подтверждении. - Проверка измерений : Она сравнивает
MRTDподтвержденное оборудованием TDX в вашем коммерческом предложении, с эталонными измерениями, указанными в подтверждении Google.
Если все проверки пройдут успешно, команда завершится с кодом 0 без уведомления об ошибке (или выведет Validation Succeeded! с помощью цепочки команд echo), что подтвердит, что на вашей виртуальной машине установлена подлинная прошивка, одобренная Google!
6. Проверка происхождения хоста и экземпляра GCE TDX
В то время как аттестация и проверка прошивки подтверждают, что ваша виртуальная машина работает на подлинном оборудовании Intel TDX с одобренной Google прошивкой UEFI, проверка происхождения GCE TDX напрямую связывает ваше аттестационное предложение с инфраструктурой Google Cloud двумя важными способами:
- Проверка происхождения хоста : идентифицирует физическую машину Google Cloud, на которой работает ваша виртуальная машина, путем извлечения уникального PPID (Platform Provisioning ID) платформы из сертификата PCK, указанного в коммерческом предложении. Затем она получает запись реестра хост-платформы из Google Cloud Storage (
confidential-host-registry), которая содержит информацию о физической зоне и о том, когда Google Cloud в последний раз выдал сертификаты подтверждения для хоста. - Проверка происхождения экземпляра (привязка PZID) : Google Cloud криптографически привязывает идентификатор вашей конкретной виртуальной машины (
ProjectNumber,ZoneиInstanceID) к региструMR_OWNERв коммите TDX. Проверка этой привязки гарантирует, что коммерческое предложение принадлежит исключительно вашему экземпляру , и предотвращает атаки повторного воспроизведения или подмены коммерческого предложения на разных виртуальных машинах или в разных проектах.
Инструмент командной строки gceprovenance (также расположенный в репозитории go-tdx-guest ) автоматизирует полную проверку происхождения — проверку подлинности цитаты, проверку актуальности, запись в реестре хоста и привязку PZID экземпляра одной командой.
- Перейдите в каталог
gceprovenanceи соберите инструмент:
cd ~/go-tdx-guest/tools/gceprovenance go build
- Выполните полную проверку происхождения с помощью команды
verify. Мы передадим файл цитат (quote.bin) и сгенерированный ранее nonce-код ($nonce):
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
- Если все проверки пройдут успешно, инструмент выдаст отчет о проверке, аналогичный следующему:
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в цитате.
- Проверьте полученный документ реестра хоста:
По умолчанию команда 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 .