신뢰 실행 환경(TEE)으로 사용 중 데이터 보호하기
조직이 점점 더 멀티 클라우드, 하이브리드 클라우드, 엣지 컴퓨팅을 채택함에 따라, 그들의 애플리케이션은 다양한 환경에서 민감한 사용자 데이터를 추적, 저장, 분석합니다. 규정 준수와 애플리케이션을 사용하는 개인의 프라이버시를 보장하기 위해 데이터는 수명 주기 전반에서 보호되어야 합니다.
우리는 파일 시스템과 스토리지 드라이브를 암호화하고 SSH 프로토콜을 사용하여 저장 데이터(data at rest)와 전송 중 데이터(data in transit)를 안전하게 유지하여, 탈취당해도 암호화 키 없이는 무용지물이 되게 합니다. 그러나 사용 중 데이터(data in use)는 일반적으로 암호화되지 않아 공격과 익스플로잇에 취약합니다.
런타임에 애플리케이션과 데이터를 보호하기 위해 개발자들은 점점 더 신뢰 실행 환경(Trusted Execution Environments), 흔히 "보안 엔클레이브(secure enclaves)"라고 불리는 것에 의존하고 있습니다.
신뢰 실행 환경(TEE)이란 무엇인가?
신뢰 실행 환경(TEE)은 메모리 내에 있는 CPU 암호화 격리된 프라이빗 엔클레이브로, 하드웨어 수준에서 사용 중 데이터를 보호하는 데 사용됩니다.
민감한 데이터가 엔클레이브 내에 있는 동안, 무단 엔티티는 이를 제거, 수정, 추가할 수 없습니다. 엔클레이브의 내용은 외부 당사자에게 보이지 않고 접근할 수 없으며, 외부 및 내부 위협으로부터 보호됩니다.
결과적으로 TEE는 다음을 보장합니다:
벤더와 기본 기술에 따라 TEE는 다음과 같은 추가 기능을 활성화할 수 있습니다:
- 코드 기밀성(Code confidentiality) – 지적 재산으로 간주되는 알고리즘 보호
- 인증된 실행(Authenticated launch) – 검증된 프로세스만 실행하도록 인증 또는 권한 부여 시행
- 프로그래밍 가능성(Programmability) – 제조업체나 다른 안전한 소스에서 TEE 프로그래밍 코드 접근
- 증명(Attestation) – 엔클레이브의 출처와 현재 상태 측정으로 변조 방지
- 복구 가능성(Recoverability) – TEE가 손상된 경우 이전 안전한 상태로 롤백
이 기능들은 개발자에게 애플리케이션 보안에 대한 완전한 제어권을 부여하여, 운영 체제, BIOS, 애플리케이션 자체가 손상되어도 민감한 데이터와 코드를 보호합니다.
보안 엔클레이브는 어떻게 작동하는가?
TEE가 어떻게 작동하는지 이해하기 위해 Intel® Software Guard Extensions(SGX)를 살펴보겠습니다.
Intel® SGX를 사용하면 애플리케이션 데이터가 신뢰할 수 있는 부분과 신뢰할 수 없는 부분으로 분할됩니다. 코드의 신뢰할 수 있는 부분은 보호된 엔클레이브 내부에서 애플리케이션을 실행하는 데 사용됩니다. CPU는 엔클레이브에 대한 다른 모든 접근을 거부합니다. 요청하는 엔티티의 권한에 관계없이 말입니다. 처리되면 신뢰할 수 있는 데이터는 TEE 내에 유지되고 엔클레이브 외부의 애플리케이션에 제공되는 정보는 다시 암호화됩니다.
엔클레이브는 메모리 페이지 생성과 추가, 엔클레이브 초기화, 제거, 측정을 가능하게 하는 하드웨어 명령을 통해 생성되고 프로비저닝됩니다.
플랫폼의 펌웨어는 구성 설정을 사용하여 TEE 영역을 설정합니다. 확장이 활성화되면 CPU는 DRAM의 한 섹션을 프로세서 예약 메모리(PRM)로 예약합니다. PRM 크기는 펌웨어 도구를 통해 지정할 수 있습니다.
그런 다음 CPU는 모델별 레지스터(MSR) 쌍을 설정하여 PRM을 할당하고 구성합니다. 다음으로 엔클레이브 페이지 캐시(EPC)가 PRM 내에 생성되며, 기본 주소, 엔클레이브 크기, 데이터 보안 정보를 포함한 메타데이터를 담습니다.
마지막으로 CPU는 엔클레이브 초기 상태의 암호화 해시를 생성하고 이후 상태들을 기록합니다. 이 해시는 나중에 암호화 키와 하드웨어 신뢰 루트를 통해 증명을 위해 사용됩니다.
초기화되면 엔클레이브는 사용자 애플리케이션을 호스팅할 수 있습니다.
신뢰 실행 환경은 얼마나 안전한가?
TEE가 얼마나 안전한지 가장 잘 설명하기 위해 먼저 CPU 특권(privilege) 링을 다뤄야 합니다.
암호화 키는 전통적으로 애플리케이션 내, 링 3 레벨에 저장되었습니다. 이 모델은 애플리케이션이 손상되면 그 안에 보호된 비밀이 위험해집니다.
현대 아키텍처에서는 특권 링이 커널과 하이퍼바이저를 넘어 시스템 관리 모드(SMM)와 관리 엔진(ME)까지 확장됩니다. 이는 CPU가 TEE가 사용하는 메모리를 보호하여 공격 표면을 하드웨어의 최하위 계층으로 줄이고, 최고 특권 수준을 제외한 모든 접근을 거부하게 합니다.
TEE의 기능과 보안의 또 다른 핵심은 증명(Attestation)입니다. 증명을 통해 데이터가 공유되기 전에 전체 플랫폼과 엔클레이브가 측정되고 검증됩니다.
예를 들어, 엔클레이브는 자신이나 같은 플랫폼의 다른 엔클레이브로부터 로컬 보고서를 요청하여 데이터 확인과 검증에 사용할 수 있습니다. 마찬가지로 원격 검증자는 엔클레이브로부터 민감한 데이터를 요청하기 전에 증명 보고서를 요청할 수 있습니다. 신뢰가 수립되면 외부 당사자에게 보이지 않는 안전한 채널을 통해 세션 키와 데이터를 공유할 수 있습니다.
암호화되지 않은 비밀이 TEE를 절대 떠나지 않으므로, 보안 엔클레이브는 다음으로부터 데이터를 보호합니다:
- 호스트의 다른 애플리케이션
- 호스트 OS 또는 하이퍼바이저
- 시스템 관리자
- 서비스 공급자
인프라 소유자와 하드웨어에 물리적으로 접근할 수 있는 다른 엔티티조차 데이터에 도달할 수 없습니다.
기밀 컴퓨팅(Confidential Computing)에서의 보안 엔클레이브
다른 클라우드 환경에서 프라이빗 워크로드의 안전하고 표준화된 처리를 가능하게 하기 위해, 리눅스 재단은 2019년 기밀 컴퓨팅 컨소시엄(CCC)이라는 커뮤니티를 형성했습니다. 설립 이후 CCC 회원들은 클라우드 컴퓨팅 채택 가속화와 개방형 협업 활성화를 위해 노력해 왔습니다.
그들이 제공하는 높은 수준의 데이터 보호 덕분에 하드웨어 기반 보안 엔클레이브는 이 이니셔티브의 핵심입니다.
TEE가 지원하는 기밀 컴퓨팅을 통해 조직은 단일 암호화 키부터 전체 워크로드까지, 애플리케이션이 사용되는 동안 모든 것을 보호할 수 있습니다.
왜 기밀 컴퓨팅을 채택해야 하는가?
오늘날 비밀은 암호를 훨씬 넘어 의료 기록이나 생체 인식 데이터 같은 매우 기밀이고 대체 불가능한 정보를 포함합니다.
기밀 컴퓨팅은 이 데이터를 보호하고 금전적 손실이나 평판 손상을 방지함으로써 기업에 경쟁 우위를 제공합니다. 그러나 이 진화하는 기술에는 다른 사용 사례도 있습니다.
다자간 연산(Multi-Party Computation)
기밀 컴퓨팅은 조직이 파트너가 되는 당사자들에게 기본 코드, 지적 재산, 프라이빗 클라이언트 정보를 노출하지 않고 여러 소스의 데이터를 처리할 수 있게 합니다. 경쟁 관계이든 아니든, 정부 기관, 의료, 연구 기관은 연합 학습을 목적으로 협업하고 통찰을 공유하기 위해 이 기능을 활용할 수 있습니다.
금융 및 보험(Finance and Insurance)
기밀 컴퓨팅을 활용하여 금융 기관은 자금 세탁 같은 사기 행위를 방지합니다. 한 은행은 네트워크 내부 또는 외부의 다른 은행과 의심스러운 계좌를 공유하여 감사하고 거짓 양성(false positives) 가능성을 최소화할 수 있습니다.
보험 회사도 유사한 접근 방식으로 사기를 방지할 수 있습니다. 의심스러운 청구를 서로 공유하여 패턴 인식을 할 수 있습니다. 민감한 데이터가 엔클레이브에 저장되고 데이터 기록이 서로 다른 소스 간에 공유되므로, 프로세스에서 어떤 기밀 정보도 드러나지 않은 채 결과를 얻을 수 있습니다.
결론(Conclusion)
기밀 컴퓨팅이 진화함에 따라 보안을 강화하기 위한 엔터프라이즈 도구가 끊임없이 개발되고 있습니다. 이는 클라우드 컴퓨팅의 채택, 성장, 보안을 자극하여 그 잠재력을 최대한 발휘하게 합니다.
실행 중인 민감한 데이터와 코드에 전례 없는 보호를 제공함으로써, 신뢰 실행 환경은 조직이 보안 태세를 강화하고 미래 지향적 기술을 오늘날 활용할 수 있게 합니다.