Intel TDX VM 인스턴스가 Google Cloud에서 실행되는지 확인

Intel TDX 컨피덴셜 VM 인스턴스가 실행 중인지 확인하려면 Google Cloud, provenance를 설정해야 합니다. 출처를 설정하려면 다음 검사를 실행합니다.

  • 따옴표 확인 및 챌린지 결합: 삽입된 Intel 루트 인증서를 사용하여 Intel TDX 따옴표의 신뢰성을 확인하고, 필요에 따라 따옴표의 예상되는 챌린지에 대해 새로고침을 확인합니다. REPORT_DATA 필드.

  • 호스트 출처 확인: 플랫폼 프로비저닝 ID (PPID) 를 따옴표의 삽입된 PCK 인증서에서 추출합니다. PPID를 사용하여 Cloud Storage 버킷에서 호스트 레지스트리 JSON 문서를 가져와 출처를 확인합니다.

  • 인스턴스 출처 확인: 컨피덴셜 VM 인스턴스의 프로젝트 번호, 영역, 인스턴스 ID (PZID)를 사용하여 SHA-384 다이제스트를 계산한 후 다이제스트가 MR_OWNER 필드 값과 일치하는지 확인합니다.

원격으로 출처 확인

Intel TDX 머신의 출처를 확인하려면 gceprovenance 도구를 사용하는 것이 좋습니다. 이 도구는 필요한 값을 추출하고 출처 문서를 가져오는 작업을 자동화합니다.

gceprovenance를 사용하여 원격으로 출처를 확인하려면 다음 안내를 따르세요.

  1. go-tdx-guest GitHub 저장소를 원격 검증 도구에 클론합니다.

    git clone https://github.com/google/go-tdx-guest.git
    
  2. 게스트 운영체제에 따라 go-tdx-guest에서 도구를 빌드하기 위해 일부 Go 종속 항목을 설치해야 할 수 있습니다. 이 작업은 운영체제에 따라 다릅니다. 예를 들어 다음 명령어는 Ubuntu에 필요한 종속 항목을 설치합니다.

    sudo apt update
    sudo apt install golang-go build-essential
    
  3. gceprovenance 도구를 빌드합니다.

    go build -C go-tdx-guest/tools/gceprovenance .
    
  4. Intel TDX 컨피덴셜 VM 인스턴스가 따옴표에 결합해야 하는 64바이트 챌린지를 생성합니다.

    head -c 64 /dev/urandom > challenge.bin
    
  5. 확인하려는 Intel TDX 컨피덴셜 VM 인스턴스에 챌린지 파일을 보냅니다.

  6. Intel TDX 컨피덴셜 VM 인스턴스에서 챌린지 파일을 /sys/kernel/config/tsm/report/의 Linux ConfigFS에 입력(inblob)으로 전달합니다.

    sudo mkdir -p /sys/kernel/config/tsm/report/report0
    sudo sh -c 'cat challenge.bin > /sys/kernel/config/tsm/report/report0/inblob'
    

    그러면 시스템에서 챌린지를 따옴표의 REPORT_DATA 필드에 씁니다.

  7. 결과 outblob 파일에서 원시 따옴표 바이트를 가져오고 report0 디렉터리를 정리합니다.

    sudo cat /sys/kernel/config/tsm/report/report0/outblob > quote.bin
    sudo rmdir /sys/kernel/config/tsm/report/report0
    
  8. 로컬 메타데이터 서버를 쿼리하여 컨피덴셜 VM 인스턴스의 인스턴스 ID, 프로젝트 번호, 영역을 가져옵니다.

    PROJECT_NUMBER=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id" -H "Metadata-Flavor: Google")
    INSTANCE_ID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/id" -H "Metadata-Flavor: Google")
    ZONE_PATH=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/zone" -H "Metadata-Flavor: Google")
    ZONE=$(basename "$ZONE_PATH")
    
  9. 따옴표 바이너리 (quote.bin), 프로젝트 번호, 인스턴스 ID, 영역을 원격 검증 도구에 보냅니다.

  10. 원격 검증 도구에서 챌린지를 128자 16진수 문자열로 변환한 후 gceprovenance에 전달합니다. 그러면 도구에서 따옴표의 서명 및 출처 결합을 확인합니다.

    CHALLENGE_HEX=$(hexdump -v -e '/1 "%02x"' challenge.bin)
    ./go-tdx-guest/tools/gceprovenance/gceprovenance verify \
        -quote PATH_TO_QUOTE \
        -instance projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID \
        -challenge $CHALLENGE_HEX
    

    다음을 제공합니다.

    • PATH_TO_QUOTE: 제공된 따옴표 파일의 경로입니다.

    • PROJECT_NUMBER: 제공된 프로젝트 번호입니다.

    • ZONE: 제공된 영역입니다.

    • INSTANCE_ID: 제공된 컨피덴셜 VM 인스턴스 ID입니다.

    go-tdx-guest

    성공적인 응답은 다음과 같습니다.

    GCE TDX provenance verification: OK
    
    Instance
      Zone: ZONE
      Project: PROJECT_NUMBER
      Instance ID: INSTANCE_ID
    
    Checks
      Quote verification: OK
      REPORT_DATA challenge: OK
      Host registry document: found
      PZID binding: OK
    
    PPID: PPID
    Quote: tdx_quote.bin
    Host registry: host_registry.json
    

다른 gceprovenance 명령어는 GitHub 저장소를 참고하세요.