원격 증명
원격 증명 (Remote Attestation)
원격 증명과 Passport 모델이 Intel Trust Authority와 함께 Model Vault Encrypted 배포 내부에서 어떤 코드가 실행 중인지 어떻게 증명하는지 설명해요.
출처: 문서
본문
원격 증명(remote attestation)을 통해 데이터를 보내기 전에 Model Vault Encrypted 배포가 여러분이 기대하는 정확한 코드를 실행하는 진짜 신뢰 실행 환경(TEE)이라는 것을 암호학적으로 확인할 수 있어요. "우리를 믿으세요"를 "직접 검증하세요"로 바꿔 주는 것이죠.
TEE에 대한 배경 지식은 Confidential Computing Primer를 참조하세요.
Note
아래 흐름은 증명 서비스로 Intel Trust Authority를 사용하는 Model Vault Encrypted의 Intel TDX 배포를 설명해요. 다른 기밀 VM 플랫폼(예: AMD SEV-SNP)도 플랫폼별 증거 형식과 검증자를 사용해 동일한 보장을 메커니즘을 통해 제공해요.
증명이 증명하는 것
TEE가 시작되면 하드웨어가 그 안에 로드된 것을 측정하고 서명된 증거(evidence)(흔히 quote라고 함)를 생성하는데, 이는 칩에 내장된 키에 뿌리를 두고 있어요. 그러면 증명 서비스가 이 증거를 평가하고, 클라이언트가 검증할 수 있는 서명된 **증명 결과(attestation result)**를 발행해요. Model Vault Encrypted는 CPU와 GPU를 모두 다루는 **복합 증명(composite attestation)**을 사용해서, 함께 세 가지 질문에 답해요:
- 이게 진짜 TEE 하드웨어인가? 증거는 하드웨어 제조사(Intel은 TDX CPU, NVIDIA는 GPU)가 내장한 키에 뿌리를 두므로, 보안 환경인 척하는 소프트웨어가 위조할 수 없어요.
- 안전하게 구성되었나? 증거는 보안에 중요한 구성을 확인해요: Intel TDX VM이 디버그 불가능한지, GPU가 디버그 비활성 상태로 부팅되었는지, 기밀 컴퓨팅 모드가 활성화되어 있는지.
- 기대하는 코드를 실행하고 있나? 증거에는 로드된 펌웨어, 커널, 추론 워크로드, 컨테이너 정책의 암호화 측정값(사실상 지문)과 GPU 펌웨어 및 드라이버 측정값이 포함돼요. 무엇이라도 다르면 지문이 달라져요.
Intel Trust Authority와 함께하는 Passport 모델
Model Vault Encrypted는 Passport 증명 모델을 사용해요. 각 신뢰 환경은 Intel이 운영하는 외부 증명 서비스인 **Intel Trust Authority(ITA)**로부터 서명된 증명 토큰(그 "여권")을 얻어요. 클라이언트는 원시 하드웨어 증거를 직접 재평가하는 대신 그 여권을 검증해요.
클라이언트와 배포 사이의 엔드투엔드 암호화는 **Oblivious HTTP(OHTTP)**를 사용하므로, 로드 밸런서와 네트워크는 오직 암호문만 볼 수 있어요. OHTTP 키는 기밀 VM 내부에서 생성되고 Cohere와 절대 공유되지 않아요.
엔드투엔드 증명 및 요청 흐름
보안 환경 시작
배포는 보호된 CPU 실행과 기밀 컴퓨팅 모드의 GPU가 있는 기밀 컴퓨팅 환경 안에서 시작돼요. 시작 중에 플랫폼이 펌웨어, 커널, 런타임 구성, 워크로드, GPU 상태를 측정해요. 그 측정값은 나중에 승인된 정책에 대해 확인되는 증거가 돼요. 증거는 CPU와 GPU에 내장된 하드웨어 키에 뿌리를 두므로, 호스트나 애플리케이션 소프트웨어가 다른 측정값을 위조해서 유효한 것처럼 보이게 할 수 없어요.
ITA 증명 (VM별)
배포는 신뢰 환경 내부에서 OHTTP 키 쌍을 생성하고 공개 키를 증명 증거에 바인딩해요. Intel Trust Authority는 하드웨어 제공업체의 신뢰 루트에 대해 CPU와 GPU 증거를 검증하고, 측정값을 등록된 정책에 대조해 확인해요. 증거가 일치하면 ITA가 서명된 증명 토큰을 반환해요. 토큰은 주기적으로 갱신돼요.
플릿 수준 신뢰
여러 레플리카가 있는 배포의 경우, 동일한 증명 정책을 통과한 환경만 암호화된 트래픽을 서빙하도록 신뢰돼요. OHTTP 키는 증명된 환경 안에 남아 있고 Cohere나 호스트 인프라에 절대 제공되지 않아요. 이로써 동일한 클라이언트 측 검증과 엔드투엔드 암호화 보장을 유지하면서 서비스가 확장될 수 있어요.
클라이언트 키 발견
클라이언트 측 Cohere OHTTP 프록시는 배포의 OHTTP 공개 키와 증명 토큰을 가져와요. 토큰이 ITA가 서명했는지, 측정값이 승인된 정책과 일치하는지, OHTTP 키가 증명된 환경에 암호학적으로 바인딩되었는지 검증해요. 이 검사가 모두 통과한 후에만 클라이언트가 키를 신뢰해요.
암호화된 요청 서빙
클라이언트는 증명된 공개 키로 OHTTP를 사용해 요청을 암호화하고 로드 밸런서를 통해 보내요. 페이로드는 엔드투엔드로 암호화된 상태를 유지하고, 중간 인프라는 요청을 라우팅할 수 있지만 복호화할 수는 없어요. 요청은 증명된 환경 안에서만 복호화되고, 추론이 거기서 실행되며, 응답은 떠나기 전에 암호화돼요. 클라이언트 측 Cohere OHTTP 프록시가 응답을 복호화해요. 로드 밸런서는 어느 시점에도 평문을 보지 못해요.
Intel Trust Authority가 검증하는 방법
ITA는 각 증명 토큰을 **PS384로 서명된 JSON Web Token(JWT)**으로 발행해요. 클라이언트는 ITA가 게시한 공개 키(JWKS)에 대해 그 토큰의 서명을 검증해서, Cohere나 호스트를 신뢰하지 않고도 결과를 확인할 수 있어요. 일치하는 정책의 비어 있지 않은 집합이 가장 중요한 신호예요. 그것은 하드웨어가 진짜이고 측정된 소프트웨어가 승인된 값과 일치한다는 뜻이에요. 정책이 일치하지 않으면 토큰이 발행되지 않고 연결이 거부돼요.
검증자 검증하기
Intel은 Faithful Verification 서비스도 제공해요. 증명 토큰을 Intel에 제출하면, 그것을 발행한 모든 ITA 마이크로서비스가 진짜 Intel SGX enclave 안에서 수정되지 않은 코드로 실행되고 있었다는 암호학적 증명(SGX quote)을 받을 수 있어요. 이를 통해 손상되거나 악의적인 증명 운영자로부터도 보호받을 수 있어요.
연결을 환경에 바인딩하기
증명은 연결 중간에 끼어들어 환경인 척 하려는 호스트로부터도 보호해요:
- 시작 시 기밀 VM이 OHTTP 암호화 키 쌍을 생성해요. 개인 키는 TEE의 보호된 메모리 안에 남고, 공개 키는 증명 증거에 바인딩되어요(report의 data 필드에 담김).
- 클라이언트는 증명된 공개 키로 요청을 암호화하므로, 진짜이고 증명된 TEE만 복호화할 수 있어요.
공개 키가 서명된 증명으로 보호되기 때문에, 클라이언트는 그 키가 호스트나 로드 밸런서가 아니라 증명된 환경에 정말 속한다는 것을 알아요. 확장 배포에서는 이 신뢰 모델이 중간 인프라에 평문을 노출하지 않으면서 서빙 플릿 전체로 확장돼요.
측정값을 기대 코드와 대응시키기
지문은 그것이 무엇이어야 하는지 알아야만 의미가 있어요. ITA 정책은 주어진 소프트웨어 버전에 대한 기대 측정값을 인코딩하는데, 이는 볼트 이미지의 재현 가능한 빌드로 생성되고 배포 전에 등록돼요. 그래서 증명 통과는 볼트가 정확히 그 승인된 스택을 실행하고 있다는 뜻이에요. 토큰은 또한 검사할 수 있는 세부 정보(예: TDX 측정 레지스터 MRTD, RTMR0~RTMR3, GPU 펌웨어 및 드라이버 측정 결과, TEE의 보안 버전·패치 수준, 평가된 정책)도 보고해요. 각 필드가 무엇을 의미하는지는 Verifying Your Deployment를 참조하세요.
실제로 신뢰하는 것
증명은 어떤 코드가 실행 중인지 증명하지만, 그 코드는 여전히 신뢰할 만해야 해요. TEE 안에서 실행되는 것은 무엇이든 여러분의 평문을 볼 수 있으므로 신뢰 컴퓨팅 베이스의 일부가 돼요. Cohere가 그 코드를 작성하지만, 그 신뢰성은 Cohere의 말에 기대지 않아요. 두 가지 속성이 스스로 검증할 수 있게 해 줘요:
- 코드는 오픈소스이고 재현 가능하게 빌드돼요. Cohere가 볼트 이미지, 컨테이너 정책, 워크로드를 작성하지만 이들은 오픈이고 재현 가능하게 빌드되어, 여러분(또는 독립적인 당사자)이 아티팩트를 다시 빌드해서 증명 정책의 측정값이 블랙박스가 아닌 검사 가능한 소스에 대응함을 확인할 수 있어요.
- 독립적인 당사자가 검사를 강제해요. 기대 측정값이 Intel Trust Authority에 등록되고, ITA가 증거를 평가해 토큰을 발행해요. Cohere가 정책을 제공하지만 통과 결과를 위조할 수 없고, Intel의 Faithful Verification 서비스로 검증자 자체를 검증할 수 있어요.
다시 말해, 올바른 코드가 실행 중이라는 Cohere의 말을 신뢰하는 것이 아니라, 하드웨어 루트, 독립적인 검증자, 그리고 검사할 수 있는 소스를 신뢰하는 거예요.
증명이 언제 실행되나요
- 세션별: 클라이언트가 데이터를 교환하기 전에 증명을 검증하고, 증거가 유효하지 않거나 측정값이 일치하지 않으면 연결을 거부해요.
- 수명이 짧고 갱신됨: 증명 토큰은 단 몇 분 동안만 유효하고 주기적으로 갱신되므로, 결과는 배포 시점의 일회성 검사가 아니라 환경의 현재 상태를 반영해요.
- Model Vault 앱에서: Encrypted 볼트는 현재 증명 상태를 반영하는 검증 배지를 가지므로, 다른 볼트와 함께 한눈에 볼 수 있어요.
- API를 통해 사용 가능: 검증은 Model Vault 앱에만 국한되지 않아요. 모든 추론 응답에는 증명 인증서가 포함되어 클라이언트가 프로그래매틱하게 확인할 수 있으며, 응답을 신뢰하기 전에 정책, CPU, GPU, 소프트웨어의 증거를 확인해요.