NitroTPM Attestation Document 가져오기

NitroTPM Attestation Document 가져오기

Attestation Document는 NitroTPM attestation 프로세스의 핵심 구성 요소예요. 이 절에서 nitro-tpm-attest 유틸리티를 설치하고 사용해 Attestation Document를 검색하는 방법을 살펴볼게요.

출처: 문서

본문

Attestation Document는 NitroTPM attestation 프로세스의 핵심 구성 요소예요. 이 문서에는 인스턴스의 ID를 확인하고 인스턴스가 신뢰할 수 있는 소프트웨어만 실행하고 있음을 증명하는 데 사용할 수 있는 일련의 암호화 측정값이 포함돼 있어요. Attestation Document는 NitroTPM attestation을 기본 지원하는 AWS KMS와 함께 사용하거나, 자체 암호화 attestation 메커니즘을 구축하는 데 사용할 수 있어요.

nitro-tpm-attest 유틸리티를 사용하면 런타임 중에 Amazon EC2 인스턴스에 대한 서명된 NitroTPM Attestation Document를 검색할 수 있어요.

예시 Amazon Linux 2023 이미지 설명(description)은 빌드된 이미지의 /usr/bin/ 디렉터리에 유틸리티를 자동으로 설치해요. 이는 AMI로 시작된 인스턴스에 유틸리티가 미리 설치되도록 보장해요. 유틸리티를 수동으로 설치할 필요가 없어요. 자세한 내용은 Build the sample Amazon Linux 2023 image description을 참고하세요.

관련 주제

nitro-tpm-attest 유틸리티 설치

Amazon Linux 2023을 사용한다면 Amazon Linux 리포지토리에서 nitro-tpm-attest 유틸리티를 다음과 같이 설치할 수 있어요.

sudo yum install aws-nitro-tpm-tools

nitro-tpm-attest 유틸리티 사용

이 유틸리티는 Attestation Document를 검색하는 단일 명령 nitro-tpm-attest를 제공해요. 이 명령은 CBOR(Concise Binary Object Representation)로 인코딩되고 COSE(CBOR Object Signing and Encryption)로 서명된 Attestation Document를 반환해요.

명령을 실행할 때 다음 선택적 매개 변수를 지정할 수 있어요.

  • public-key — AWS KMS 또는 외부 서비스가 응답 데이터를 반환하기 전에 암호화하는 데 사용할 수 있는 공용 키예요. 이렇게 하면 개인 키를 가진 의도된 수신자만 데이터를 복호화할 수 있어요. 예를 들어 AWS KMS로 attestation을 수행하면 서비스가 Attestation Document의 공용 키로 평문 데이터를 암호화하고, 결과로 나온 암호문을 응답의 CiphertextForRecipient 필드에 반환해요. RSA 키만 지원돼요.
  • user-data — 사용자 데이터를 사용해 추가 서명 데이터를 외부 서비스에 전달할 수 있어요. 이 사용자 데이터는 요청 인스턴스와 외부 서비스 간에 합의된 프로토콜을 완료하는 데 사용할 수 있어요. AWS KMS attestation에는 사용되지 않아요.
  • nonce — nonce를 사용해 인스턴스와 외부 서비스 사이에 challenge-response 인증을 설정해 가장(impersonation) 공격을 막는 데 도움이 돼요. nonce를 사용하면 외부 서비스가 오래된 Attestation Document를 재사용하는 사칭자가 아니라 실시간 인스턴스와 상호작용하고 있음을 확인할 수 있어요. AWS KMS attestation에는 사용되지 않아요.
Attestation Document를 검색하려면

다음 명령과 선택적 매개 변수를 사용합니다.

/usr/bin/nitro-tpm-attest \
--public-key rsa_public_key \
--user-data user_data \
--nonce nonce

RSA 키 페어를 생성하고 공용 키로 attestation을 요청하는 방법을 보여주는 전체 예시는 nitro-tpm-attest GitHub repo를 참고하세요.

더 알아보기