기밀 컴퓨팅(Confidential Computing)란?

처리 중인 데이터를 하드웨어로 보호되는 TEE 안에서 다루어, OS나 하이퍼바이저, 클라우드 사업자의 관리자도 읽을 수 없게 하는 컴퓨팅 방법. 저장 중이나 통신 중인 데이터의 암호화에 더해, 사용 중인 데이터를 보호한다. 가상 머신 전체를 보호하는 VM형(AMD SEV-SNP, Intel TDX, Arm CCA 등)과 애플리케이션의 일부를 보호하는 엔클레이브형(Intel SGX 등)이 있다. 원격 증명으로 내부 상태를 확인한 뒤에 비밀 데이터나 키를 넘겨 사용한다.

일본어 명칭: 機密コンピューティング

기밀 컴퓨팅(Confidential Computing)은(는) 하드웨어 보안의 최신 동향, 하드웨어 보안 등 2개 분야의 연습 문제 4개에 나와요.

분야: 하드웨어 보안의 최신 동향

사용 중인 데이터를 보호한다

데이터는 디스크에 저장되어 있는 동안에는 스토리지 암호화로, 네트워크를 흐르는 동안에는 TLS 등으로 보호할 수 있습니다. 그러나 계산할 때는 메모리 위에서 복호화되므로, 기존에는 OS나 하이퍼바이저, 그것을 관리하는 클라우드 사업자를 신뢰할 수밖에 없었습니다. 기밀 컴퓨팅에서는 CPU가 TEE의 메모리를 CPU 안에만 있는 키로 암호화하고, TEE 밖의 소프트웨어로부터의 접근을 거부합니다. 이로써 이용자는 클라우드 기반을 전면적으로 신뢰하지 않고도 기밀 데이터를 처리할 수 있습니다.

VM형과 엔클레이브형

VM형은 가상 머신 전체의 메모리를 보호하므로 기존 OS나 애플리케이션을 거의 그대로 실행할 수 있지만, 게스트 OS를 포함한 큰 소프트웨어를 신뢰해야 하는 범위(TCB)에 넣게 됩니다. 엔클레이브형은 비밀을 다루는 부분만 보호된 영역에서 실행하므로 TCB는 작아지지만, 애플리케이션을 나누어 다시 만들어야 합니다. VM형에서는 암호화에 더해, 하이퍼바이저가 페이지의 대응 관계를 바꾸거나 오래된 내용을 되쓰는 것을 막는 무결성 보호도 중요합니다. 2020년대 중반 시점에서 CPU의 TEE와 GPU를 조합하여 AI 처리를 기밀 컴퓨팅으로 수행하는 구조도 제공되고 있습니다.

한계와 주의점

기밀 컴퓨팅이 보호하는 것은 주로 소프트웨어나 관리자에 의한 메모리 읽기·쓰기입니다. 캐시나 투기적 실행을 이용하는 사이드 채널 공격, 하이퍼바이저가 자원을 넘겨주지 않음에 따른 서비스 정지(가용성), 동작 중인 메모리 버스에 대한 고도의 물리 공격은 방식에 따라서는 보호 범위 밖입니다. 또한 TEE 안의 소프트웨어에 취약점이 있으면 그곳에서 비밀이 새어 나갑니다. 그래서 증명으로 내부 상태와 펌웨어 버전을 확인하고, TCB를 작게 유지하며, 마이크로코드 등의 업데이트를 계속하는 것이 중요합니다.

도전해 보기: 기밀 컴퓨팅(Confidential Computing) 관련 문제

클라우드에서 사용되는 '기밀 컴퓨팅'에서 가상 머신의 메모리를 CPU가 암호화하는 기능(AMD SEV, Intel TDX 등)의 목적으로 올바른 것은 무엇입니까?

  1. A가상 머신의 동작을 반드시 2배 빠르게 한다
  2. B가상 머신의 메모리 용량을 늘린다
  3. C클라우드 사업자의 하이퍼바이저나 관리자도 가상 머신 안의 데이터를 읽을 수 없게 한다
정답과 해설 보기

정답: C. 클라우드 사업자의 하이퍼바이저나 관리자도 가상 머신 안의 데이터를 읽을 수 없게 한다

보통 가상 머신의 메모리는 그것을 실행하는 하이퍼바이저가 자유롭게 읽고 쓸 수 있으므로, 이용자는 클라우드 사업자를 신뢰해야 합니다. 메모리를 암호화하는 기능에서는 가상 머신별 키를 CPU 안에서만 관리하고, 메모리 내용을 CPU 밖에서는 암호화된 상태로 유지하므로, 하이퍼바이저나 메모리를 직접 읽는 공격자에게도 내용이 보이지 않습니다. 원격 증명과 조합하여 사용합니다.

기밀 컴퓨팅에 쓰이는 TEE 중 가상 머신 전체를 보호하는 VM형(AMD SEV-SNP, Intel TDX 등)과 애플리케이션의 일부를 보호하는 엔클레이브형(Intel SGX 등)의 차이에 대한 설명으로 올바른 것은?

  1. AVM형은 가상 머신의 메모리를 암호화하지 않고 접근 권한 확인만으로 보호하며, 메모리를 암호화하여 보호하는 것은 엔클레이브형뿐이다
  2. BVM형은 기존 OS나 애플리케이션을 거의 그대로 실행할 수 있지만, 게스트 OS 전체를 신뢰해야 하는 범위(TCB)에 포함하게 된다
  3. C엔클레이브형에서는 OS나 하이퍼바이저도 신뢰해야 하는 범위에 포함되지만, VM형에서는 CPU만 신뢰하면 된다
정답과 해설 보기

정답: B. VM형은 기존 OS나 애플리케이션을 거의 그대로 실행할 수 있지만, 게스트 OS 전체를 신뢰해야 하는 범위(TCB)에 포함하게 된다

엔클레이브형은 애플리케이션 안에서 비밀을 다루는 부분만 보호된 영역에서 실행하므로, 신뢰해야 하는 범위(TCB: Trusted Computing Base)가 CPU와 엔클레이브의 코드로까지 작아지지만, 애플리케이션을 나누어 다시 만들어야 합니다. VM형은 가상 머신 전체의 메모리를 암호화하여 하이퍼바이저나 클라우드 사업자의 관리자로부터 보호하므로, 기존 소프트웨어를 거의 그대로 옮길 수 있습니다. 그 대신 게스트 OS와 그 위의 모든 소프트웨어가 TCB에 들어가며, 그곳에 취약점이 있으면 비밀이 유출됩니다. TCB가 작을수록 검증하기 쉽고 공격받는 면도 좁아지므로, 사용 편의성과 신뢰하는 범위의 크기 사이의 균형을 고려해 선택합니다.

자주 묻는 질문

메모리를 암호화하고 있는데 왜 증명(attestation)이 필요한가요?

암호화는 밖에서 읽을 수 없게 할 뿐, 안에서 무엇이 동작하고 있는지는 보여 주지 않습니다. 가짜 TEE나 변조된 게스트 OS, 취약점 수정 전의 펌웨어로 동작하고 있을지도 모르므로, CPU의 키로 서명된 측정값과 버전 번호를 확인한 뒤에 데이터를 복호화하는 키를 넘겨줍니다.

클라우드 사업자를 전혀 신뢰하지 않아도 되게 되나요?

메모리 내용을 읽힐 걱정은 크게 줄어들지만, CPU 제조사와 그 펌웨어는 신뢰해야 하며, 사업자는 자원을 멈춰 서비스를 방해할 수는 있습니다. 무엇을 신뢰하고 무엇으로부터 보호되는지를 방식별로 확인하고 사용합니다.

기밀 컴퓨팅(Confidential Computing)이(가) 나오는 문제 (4)

  1. 클라우드에서 사용되는 '기밀 컴퓨팅'에서 가상 머신의 메모리를 CPU가 암호화하는 기능(AMD SEV, Intel TDX 등)의 목적으로 올바른 것은 무엇입니까?
  2. 기밀 컴퓨팅에 쓰이는 TEE 중 가상 머신 전체를 보호하는 VM형(AMD SEV-SNP, Intel TDX 등)과 애플리케이션의 일부를 보호하는 엔클레이브형(Intel SGX 등)의 차이에 대한 설명으로 올바른 것은?
  3. 기밀 컴퓨팅에서 이용자의 검증 서버(검증자)가 VM형 TEE로부터 받은 증명(attestation) 보고서를 확인한 뒤에 데이터를 복호화하는 키를 넘겨준다. 검증자가 확인하는 내용의 조합으로 가장 적절한 것은?
  4. 2020년대 중반 시점에서 데이터센터용 일부 GPU는 CPU의 TEE와 조합하여 기밀 컴퓨팅에 사용할 수 있는 기능을 갖추고 있다. 이 구조의 개념으로 올바른 것은?

관련 용어

하이퍼바이저(Hypervisor) TEE(신뢰 실행 환경) 원격 증명(Remote Attestation) 엔클레이브(Enclave) 논스(Nonce) GPU 추론(Inference) 레이저 오류 주입(Laser Fault Injection) 로직 로킹(Logic Locking) 섀도 스택(Shadow Stack)

용어집으로 돌아가기