암호화 및 키 관리
암호화 및 키 관리 (Encryption & Key Management)
Model Vault Encrypted가 전송 중, 저장 중, 사용 중에 데이터를 어떻게 보호하는지, 그리고 암호화 키와 ZDR(제로 데이터 보존)이 어떻게 처리되는지 설명해요.
출처: 문서
본문
Model Vault Encrypted는 전송 중, 저장 중, 사용 중에 걸쳐 데이터의 전체 수명주기를 보호해요. 이 페이지는 암호화 모델과 키가 어떻게 생성·보유·회전되는지 설명해요.
가장 중요한 속성을 기억하세요: 여러분의 데이터를 보호하는 키는 신뢰 실행 환경(TEE) 내부에서 생성되며 Cohere와 절대 공유되지 않아요.
전송 중 데이터
요청은 Oblivious HTTP(OHTTP)를 사용해 클라이언트에서 TEE 안까지 엔드투엔드로 암호화돼요:
- 클라이언트는 각 요청을 볼트의 OHTTP 공개 키로 암호화하는데, 이 키는 증명된 환경에 암호학적으로 바인딩돼요 (Remote Attestation 참조).
- 암호화된 요청은 신뢰할 수 없는 로드 밸런서와 네트워크를 통과하는데, 이들은 오직 암호문만 볼 수 있어요. OHTTP에서는 라우팅 헤더가 평문으로 남는 동안 페이로드가 암호화된 상태를 유지해요.
- 진짜이고 증명된 TEE만 일치하는 개인 키를 가지므로, 그 TEE만 요청을 복호화할 수 있어요. 응답도 동일하게 클라이언트로 다시 암호화돼요.
클라이언트가 암호화하기 전에 증명을 검증하기 때문에, 오직 검증된 환경에만 암호화할 뿐 호스트나 중간자(man-in-the-middle)에게는 절대 암호화하지 않아요.
사용 중 데이터
이것이 Encrypted Vault를 일반적인 전송 보안과 구분 짓는 점이에요. 모델이 실행되는 동안 프롬프트와 응답은 TEE 안에서 보호된 상태를 유지해요:
- CPU: 기밀 VM(예: Intel TDX 또는 AMD SEV-SNP)이 프로세서 내부에서 생성되어 결코 떠나지 않는 키로 메모리를 암호화해요. 호스트 운영 체제, 하이퍼바이저, 운영자는 VM 메모리를 읽을 수 없어요.
- GPU: NVIDIA GPU가 기밀 컴퓨팅 모드로 실행되고, CPU TEE와 GPU 사이의 링크는 SPDM 기반 보안 세션으로 인증·암호화되므로, GPU 메모리로 오가는 데이터가 호스트에 평문으로 노출되지 않아요.
기본 개념은 Confidential Computing Primer를 참조하세요.
저장 중 데이터
볼트 이미지는 무결성이 보호돼요. 부팅 시 측정값이 검증되고 증명 중에 확인되는 읽기 전용 루트 파일시스템에서 부팅하므로, 실행 중인 소프트웨어를 조용히 수정할 수 없어요. ZDR(제로 데이터 보존, 아래)과 결합하면 프롬프트와 응답이 평문으로 영구 저장소에 기록되지 않아요.
키 관리
여러 개의 서로 다른 키가 볼트를 보호하며, 이들은 모두 기밀 환경 내에서 관리돼요:
- 메모리 암호화 키(CPU 및 GPU): 프로세서 내부에서 생성되고, TEE 외부의 소프트웨어에 절대 노출되지 않으며, 환경이 종료되면 파괴돼요.
- OHTTP 키: 각 기밀 VM은 부팅 시 로컬에서 OHTTP 키 쌍을 생성해요. 개인 키는 TEE 보호 메모리 안에 남고, 공개 키는 증명 증거에 바인딩돼요. 키는 주기적으로 회전돼요.
- 증명 게이트 키 공유: VM은 증명을 통과한 피어에게만 OHTTP 키를 공유하므로, 공유 키를 가진다는 것 자체가 검증받았다는 증거예요. 이를 통해 어떤 레플리카든 요청을 복호화할 수 있고, 데이터가 보호 경계를 벗어나지 않으면서 플릿이 확장될 수 있어요. 전체 키 공유 흐름은 Remote Attestation을 참조하세요.
Cohere는 인프라를 운영하지만 이 경계 밖에 있어요. 개인 키나 그것이 보호하는 데이터를 읽을 수 없죠.
ZDR (Zero Data Retention)
ZDR이 활성화되면 Cohere는 추론을 위해 입력과 출력을 처리하지만 어떤 프롬프트나 응답도 보관하지 않아요. 기밀 컴퓨팅과 결합하면 추론 데이터는 요청 기간 동안에만 TEE 안에 평문으로 존재하고, 이후에는 지속되지 않아요.