1. Tổng quan
Máy ảo bảo mật (CVM) là một loại máy ảo Compute Engine sử dụng tính năng mã hoá bộ nhớ dựa trên phần cứng và bảo vệ tính toàn vẹn. Điều này giúp đảm bảo dữ liệu và ứng dụng của bạn không thể bị đọc hoặc sửa đổi trong bộ nhớ khi đang sử dụng. Trong lớp học lập trình này, bạn sẽ tìm hiểu cách tạo một câu trích dẫn chứng thực TDX của Intel trên CVM và xác minh câu trích dẫn đó cục bộ cho mục đích minh hoạ. Ngoài ra, bạn sẽ xác minh nguồn gốc của máy chủ và phiên bản Google Cloud của CVM.
Lớp học lập trình này bao gồm các bước sau:
- Thiết lập một Máy ảo bảo mật TDX của Intel
- Tìm nạp một TDX Attestation Quote
- Xác minh TDX Attestation Quote và Nonce
- Xác minh tính toàn vẹn của chương trình cơ sở GCE (OVMF)
- Xác minh nguồn gốc của Máy chủ và phiên bản TDX trên GCE
Kiến thức bạn sẽ học được
- Cách tìm nạp Báo giá chứng thực TDX trên CVM bằng các công cụ
go-tdx-guest - Cách xác minh tính xác thực, tính mới (số chỉ dùng một lần) của trích dẫn và tính toàn vẹn của chương trình cơ sở GCE (OVMF)
- Cách xác minh Nguồn gốc của Máy chủ và Phiên bản Google Cloud (tra cứu sổ đăng ký
PPIDvà liên kết phiên bảnPZID)
Bạn cần có
- Một dự án trên Google Cloud Platform
- Kiến thức cơ bản về Google Compute Engine và VM bảo mật
2. Thiết lập và yêu cầu
Để bật các API cần thiết, hãy chạy lệnh sau trong Google Cloud Console hoặc môi trường phát triển cục bộ:
gcloud auth login
gcloud services enable \
cloudapis.googleapis.com \
cloudshell.googleapis.com \
confidentialcomputing.googleapis.com \
compute.googleapis.com
3. Thiết lập CVM và tìm nạp báo giá TDX
Trong bước này, bạn sẽ tạo một CVM TDX và tìm nạp một câu trích dẫn chứng thực TDX từ phần cứng.
- Chuyển đến Google Cloud Console hoặc môi trường phát triển cục bộ. Tạo CVM như sau:
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
Thay thế <project-id> bằng giá trị nhận dạng duy nhất của dự án.
- Kết nối với CVM.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
- Thiết lập môi trường Go trên 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
- Cài đặt các công cụ
go-tdx-guest.
Sao chép kho lưu trữ và tạo công cụ attest. Công cụ này sẽ tạo một trích dẫn TDX.
git clone https://github.com/google/go-tdx-guest.git cd go-tdx-guest/tools/attest go build
- Tìm nạp TDX Attestation Quote:
Sử dụng công cụ attest để tạo báo giá. Chúng ta sẽ truyền một số chỉ dùng một lần (64 byte của REPORT_DATA) và lưu đầu ra vào 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
Giờ đây, bạn có thể lưu báo giá TDX trong quote.bin!
4. Xác minh TDX Attestation Quote
Giờ đây, sau khi tạo một trích dẫn TDX của Intel (quote.bin), chúng ta có thể xác minh trích dẫn đó bằng công cụ check có trong kho lưu trữ go-tdx-guest. Công cụ này kiểm tra trích dẫn dựa trên thông số kỹ thuật của Intel, xác minh trích dẫn dựa trên tài sản thế chấp được tải xuống từ Dịch vụ chứng nhận cung cấp (PCS) của Intel và xác thực các ràng buộc về chính sách như số chỉ dùng một lần để ngăn chặn các cuộc tấn công phát lại.
- Chuyển đến thư mục công cụ
checkrồi tạo thư mục đó:
cd ~/go-tdx-guest/tools/check go build
- Chạy công cụ này để xác minh cả chữ ký mật mã và số chỉ dùng một lần. Chúng tôi sẽ sử dụng cờ
-get_collateral=trueđể tải các chứng chỉ TEE cần thiết xuống từ PCS của Intel, cờ-check_crl=trueđể xác minh việc thu hồi chứng chỉ và cờ-report_datađể xác thực tính mới của số chỉ dùng một lần:
./check -in ~/go-tdx-guest/tools/attest/quote.bin -inform bin \
-get_collateral=true -check_crl=true \
-report_data $nonce
Nếu trích dẫn hợp lệ về mặt mật mã và số chỉ dùng một lần trùng khớp, thì công cụ sẽ ghi lại một thông báo thành công tương tự như ví dụ sau và thoát bằng mã 0:
INFO : TDX Quote verified successfully
5. Xác minh tính toàn vẹn của chương trình cơ sở GCE (OVMF)
Mặc dù tài liệu hỗ trợ tiếp thị của Intel xác minh phần cứng, nhưng không xác minh rằng máy ảo đang chạy một chương trình cơ sở Google Compute Engine (GCE) chính hãng, chưa được sửa đổi.
Google xuất bản Chứng thực khởi động đã ký (chứa các RIM hoặc Giá trị đo lường tính toàn vẹn tham chiếu quan trọng) cho tất cả các bản phát hành phần mềm chính thức GCE UEFI (OVMF) vào một bộ chứa Google Cloud Storage (GCS) công khai.
Trong bước này, chúng ta sẽ sử dụng công cụ gce-tcb-verifier công khai của Google để tự động tìm nạp thông tin chứng thực chương trình cơ sở từ GCS, xác minh chữ ký của Google trên chứng thực đó và xác thực phép đo chương trình cơ sở của CVM (MRTD) dựa trên chứng thực đó.
1. Tạo Công cụ xác minh TCB GCE
- Sao chép kho lưu trữ
gce-tcb-verifiercông khai trên GitHub:
cd ~ git clone https://github.com/google/gce-tcb-verifier.git
- Chuyển đến thư mục công cụ CLI và tạo thư mục đó:
cd gce-tcb-verifier/gcetcbendorsement/cli go build -o gcetcbendorsement
- Thêm công cụ đã tạo vào PATH để thuận tiện:
export PATH=$PATH:$(pwd)
2. Xác thực Quote dựa trên Chứng thực chương trình cơ sở GCE
Bây giờ, hãy chạy công cụ gcetcbendorsement để xác thực câu trích dẫn chứng thực. Vì công cụ này sẽ hoạt động âm thầm khi xác minh thành công, nên chúng ta có thể liên kết lệnh này với && echo "Validation Succeeded!" để nhận được thông báo xác nhận thành công rõ ràng và thân thiện:
gcetcbendorsement tdx validate ~/go-tdx-guest/tools/attest/quote.bin && echo "Validation Succeeded!"
Kết quả:
Validation Succeeded!
Điều gì đang diễn ra ở phía sau?
- Trích xuất: Công cụ này phân tích cú pháp
quote.binvà trích xuất thông tin đo lường phần mềm cố định (MRTD) từ Nội dung trích dẫn TD. - Tìm nạp: Thao tác này tạo một URL GCS bằng cách sử dụng
MRTDvà tảiVMLaunchEndorsementtương ứng xuống từ bộ chứa công khai của Google (gs://gce_tcb_integrity). - Xác minh chữ ký: Thư viện này tìm nạp chứng chỉ CA gốc công khai của Google (
https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) và xác minh chữ ký của Google trên chứng chỉ chứng thực đã tải xuống bằng phương pháp mã hoá. - Xác thực hoạt động đo lường: Tính năng này so sánh
MRTDdo phần cứng TDX ký trong báo giá của bạn với các phép đo tham chiếu chính xác trong chứng thực đã ký của Google.
Nếu tất cả các bước kiểm tra đều thành công, lệnh sẽ thoát bằng mã 0 một cách âm thầm (hoặc in Validation Succeeded! bằng lệnh lặp lại được liên kết), chứng minh rằng máy ảo của bạn đang chạy phần mềm cơ sở chính hãng do Google chứng thực!
6. Xác minh nguồn gốc của Máy chủ và phiên bản TDX trên GCE
Mặc dù quy trình chứng thực và xác minh phần sụn xác nhận rằng VM của bạn đang chạy trên phần cứng Intel TDX chính hãng có phần sụn UEFI được Google chứng thực, nhưng Quy trình xác minh nguồn gốc TDX của GCE kết nối trực tiếp báo giá chứng thực của bạn với cơ sở hạ tầng của Google Cloud theo 2 cách quan trọng:
- Nguồn gốc của máy chủ: Xác định máy chủ Google Cloud hữu hình đang chạy VM của bạn bằng cách trích xuất PPID (Mã nhận dạng cấp phép nền tảng) duy nhất của nền tảng từ chứng chỉ PCK của báo giá. Sau đó, dịch vụ này sẽ truy xuất bản ghi đăng ký của nền tảng lưu trữ từ Google Cloud Storage (
confidential-host-registry), ghi lại vùng thực và thời điểm Google Cloud cung cấp chứng chỉ chứng thực của máy chủ lưu trữ gần đây nhất. - Nguồn gốc của phiên bản (Liên kết PZID): Google Cloud liên kết danh tính cụ thể của VM (
ProjectNumber,ZonevàInstanceID) bằng mật mã vào sổ đăng kýMR_OWNERcủa báo giá TDX. Việc xác minh mối liên kết này đảm bảo rằng chữ ký chỉ thuộc về phiên bản của bạn và ngăn chặn các cuộc tấn công phát lại hoặc thay thế chữ ký trên nhiều VM hoặc dự án.
Công cụ CLI gceprovenance (cũng nằm trong kho lưu trữ go-tdx-guest) tự động hoá quy trình xác minh nguồn gốc đầy đủ – kiểm tra tính xác thực của trích dẫn, thử thách về tính mới, bản ghi sổ đăng ký máy chủ lưu trữ và liên kết PZID của thực thể trong một lệnh.
- Chuyển đến thư mục
gceprovenancevà tạo công cụ:
cd ~/go-tdx-guest/tools/gceprovenance go build
- Chạy quy trình xác minh nguồn gốc đầy đủ bằng lệnh
verify. Chúng ta sẽ truyền tệp trích dẫn (quote.bin) và thử thách số chỉ dùng một lần ($nonce) mà chúng ta đã tạo trước đó:
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
- Khi tất cả các bước kiểm tra đều thành công, công cụ sẽ xuất một báo cáo xác minh tương tự như sau:
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
Điều gì đang diễn ra ở phía sau?
- Quote & Challenge (Báo giá và thử thách): Công cụ này xác minh chuỗi chữ ký của báo giá dựa trên chứng chỉ gốc của Intel và xác nhận rằng
REPORT_DATAcủa báo giá khớp với thử thách$noncecủa bạn. - Nguồn gốc của máy chủ lưu trữ (
PPID): API này trích xuấtPPIDgồm 32 ký tự thập lục phân từ chứng chỉ PCK gốc và tải tài liệu JSON của sổ đăng ký máy chủ lưu trữ xuống từ GCS (https://storage.googleapis.com/confidential-host-registry/). - Nguồn gốc của phiên bản (
PZID): Thao tác này truy vấn Máy chủ siêu dữ liệu GCE cục bộ để lấy mã dự án bằng số, khu vực và mã phiên bản của phiên bản, tạo tải trọng JSON PZID chuẩn ({"instanceId":...,"numericalProjectId":...,"zone":...}), tính toán bản tóm tắt SHA-384 và xác minh rằng bản tóm tắt này khớp vớiMR_OWNERtrong dấu ngoặc kép.
- Kiểm tra tài liệu Host Registry (Sổ đăng ký máy chủ lưu trữ) đã truy xuất:
Theo mặc định, lệnh verify sẽ lưu tài liệu JSON của sổ đăng ký máy chủ lưu trữ đã tìm nạp vào host_registry.json. Bạn có thể kiểm tra để xem siêu dữ liệu của nền tảng lưu trữ:
cat host_registry.json
Ví dụ về đầu ra:
{
"zone": "us-central1",
"timestamp": "2026-02-17T11:25:12Z"
}
Siêu dữ liệu này mô tả các thuộc tính của máy chủ lưu trữ:
zone: Khu vực/vùng Google Cloud thực tế nơi máy chủ lưu trú.timestamp: Ngày và giờ theo giờ UTC khi Google Cloud cung cấp và xác minh lần gần đây nhất các chứng chỉ chứng thực phần cứng của máy chủ này.
7. Dọn dẹp
Chạy các lệnh sau trong bảng điều khiển đám mây hoặc môi trường phát triển cục bộ:
# Delete the CVM instance gcloud compute instances delete tdx-cvm-attestation-codelab --zone=us-central1-c
8. Bước tiếp theo
Tìm hiểu thêm về Máy ảo bảo mật và Compute Engine.