2020.03.05

“내부자 위협까지 막는다” 애저 기밀 컴퓨팅의 이해

Simon Bisson | InfoWorld
현대적인 클라우드 네이티브 애플리케이션을 만들고 실행하는 데는 위험이 따른다. 큰 위험요소 중 하나는 몇 명인지 모를 다른 사용자와 컴퓨팅 자원을 공유한다는 점이다. 메모리와 CPU가 공유되고, 데이터가 우발적으로 경계선을 넘어, 조직 외부에서 액세스가 가능한 지점으로 유출될 가능성이 상존한다.
 
ⓒ GettyImagesBank

우발적이라 해도 유출은 유출이다. 애저 또는 다른 클라우드 플랫폼을 사용해서 개인 식별 정보를 다루거나 자체 금융 데이터를 처리하는 경우, 유출은 곧 규정 위반이 된다. 사용자나 금융 데이터만 위험한 것이 아니다. 코드 역시 지적 재산이며 미래의 사업 운영을 위한 중요한 자산이다. 아무리 잘 관리하는 시스템이라 해도 오류는 발생하며, 네트워킹 문제나 컨테이너 장애로 인해 애플리케이션의 메모리가 외부로 노출될 수 있다.

악의적인 행위자의 위험도 있다. 애저는 프로세서 캐시를 통해 데이터를 유출할 수 있는 것으로 알려진 CPU 수준의 버그를 수정하기 위해 서버를 패치했지만, 마이크로코드 수준의 문제는 계속해서 발견되는 중이다. 따라서 정부의 후원을 받거나 조직화된 사이버 범죄자가 이런 문제를 사용해서 클라우드 테넌트를 염탐할 것임을 충분히 예상할 수 있다.

애저의 사이버 보안 인프라는 최고 수준이다. 다양한 신호를 사용해서 머신러닝 기반 위협 탐지로 악의적인 활동을 찾고 조사해야 할 영역을 신속하게 파악한다. 보안과 암호화는 기본 플랫폼에 내장돼 있다. 그러나 일부 고객은 기본 보안 이상, 가능한 한 최상의 보안을 원한다. 최첨단 금융 기술을 클라우드에 구축하거나 클라우드를 사용해서 건강 데이터를 처리하고 관리하는 기업들이다. 정부 또는 군대도 그렇다.
 

애저 기밀 컴퓨팅의 등장

기본적으로 애저는 보관 중일 때와 이동 중일 때 데이터의 안전을 확보한다. 사용자는 암호화된 스토리지와 네트워크 연결에는 익숙하지만, 정작 유출 위험이 가장 높은 곳에서는 암호화를 풀고 원시 상태로 데이터를 처리해야 한다. 기밀 컴퓨팅 개념은 바로 이 문제를 처리한다. 하드웨어와 소프트웨어를 조합하고 마이크로소프트 리서치의 작업을 거쳐 TEE(Trusted Execution Environment, 신뢰할 수 있는 실행 환경)를 구축했다. TEE는 애플리케이션에 필요한 컴퓨팅 및 메모리 리소스를 모두 보호하는 안전한 컨테이너라고 생각하면 된다. 이 메모리 공간에서 신뢰할 수 없는 코드의 실행을 차단해 다른 사용자로부터 리소스를 보호한다.

CPU와 메모리를 모두 보호함으로써 컴퓨트를 통제해 사용자 본인의 신뢰할 수 있는 코드만 실행되도록 하고 코드가 메모리 경계를 넘어 보호되는 영역으로 이동하지 못하도록 하는 승인 방법을 제공할 수 있다. 애플리케이션이 TEE를 해제하면 TEE가 정리되면서 프로세서 캐시나 메모리에 데이터가 남지 않도록 한다. 외부 애플리케이션은 이 메모리를 읽거나 수정할 수 없으므로 보호 경계를 넘어 코드를 주입할 수도 없다.
 

애저에서 SGX 사용하기

애저는 가상 보안 모드(Virtual Secure Mode)와 인텔 SGX의 두 가지 TEE 모델을 제공한다. 가상 보안 모드는 마이크로소프트 자체의 하이퍼-V를 기반으로 수정된 버전을 사용해 코드가 하이퍼바이저 경계를 넘지 못하도록 함으로써 격리 수준을 더 높인다. 여기에는 애저 관리자가 TEE로 코드를 주입하는 행위도 포함되므로 은밀한 내부자 공격이 차단된다. 

인텔 SGX 보안 확장은 TEE에 하드웨어 보호를 추가하며, 애저는 마이크로소프트 또는 다자간(multiparty) 애플리케이션을 신뢰하지 않는 애플리케이션을 위해(이 애플리케이션만 신뢰할 수 있으며, 각 당사자는 다른 당사자의 데이터에 액세스할 권한이 없음. 예를 들어 여러 업체의 의료 데이터를 사용한 머신러닝) SGX가 활성화된 서버에 대한 액세스 기능을 제공한다. 

SGX 지원 프리뷰 버전은 DCv2 시리즈 애저 가상머신에서 2세대 VM 이미지로 사용해볼 수 있다. vCPU는 1~8개, 데이터는 최대 32GB다. 프리뷰 버전이므로 현재 애저 분류상 영국 남부에 해당하는 지역에서만 제공한다. 2세대 VM은 더 새로운 하드웨어를 사용하며, 인텔 SGX 지원을 비롯해 1세대 애저 VM에 비해 더 많은 하드웨어 기능을 이용할 수 있다. 기존 VM을 2세대로 변환할 수 있지만 그 반대는 불가능하다.
 

오픈 인클레이브로 SGX TEE 구축하기

마이크로소프트는 자체 인클레이브 기술의 대부분을 코코 프레임워크(Coco Framework) 블록체인 플랫폼에서 개발했다. 애저 SQL에서 인클레이브는 올웨이즈 인크립티드(Always Encrypted)의 일부로 제공된다. 프리뷰 버전에서는 직접 TEE를 구축해 사용할 수 있다. 애저 마켓플레이스에 안전한 인클레이브 지원 VM을 만들기 위한 툴이 있고, TEE 내에서 실행되도록 코드를 개발하기 위한 C/C++ SDK도 제공된다.

오픈 인클레이브(Open Enclave) SDK의 목적은 가용한 모든 TEE 구현에서 작동하는 코드를 구축하는 단일화된 방법을 제공하는 데 있다. 계층적 접근 방식으로 애플리케이션 개발을 보호하고, TEE 내에서 실행되는 신뢰할 수 있는 구성요소와 사용자 및 다른 애플리케이션과의 상호작용을 처리하는 신뢰할 수 없는 호스트를 혼합한다. 기밀 애플리케이션은 모든 비밀 데이터를 TEE 내에 보관하면서 호스트 애플리케이션에 결과를 전달한다. 따라서 코드는 어떠한 비밀도 노출하지 않으면서 안전하게 결과를 제공할 수 있다.

데이터를 사용해 머신러닝을 실행하는 애플리케이션은 호스트를 사용해서 결과를 보고하고 TEE에서 추론을 처리할 수 있다. TEE를 사용하지 않는 환경에서는 공격자가 원시 데이터를 볼 가능성이 있다. TEE를 사용하면 공격자는 호스트가 결과를 받았다는 것 외에는 아무것도 알 수 없다. 이 접근 방법은 처리되는 데이터에 조직 외부로의 유출이 금지되는 규제 대상 데이터가 포함되는 다자간 애플리케이션에 이상적이다.

SDK는 무슨 역할을 할까? 인클레이브 ID 관리를 포함해 TEE를 만들고 관리하기 위한 툴을 제공한다. 그 외에 TEE 경계 간에 결과와 데이터를 전송하기 위한 표준 방법과 인클레이브 내 코드 빌드를 간소화하기 위한 프리미티브를 제공한다. 마지막으로, 인클레이브 내의 비밀 데이터를 봉인하고 인클레이브 ID를 검증하기 위한 암호화 툴을 제공한다. 오픈 인클레이브 SDK는 윈도우 버전과 리눅스 버전 모두 있고 코드에 SGX 지원을 추가해주며, 기밀 컴퓨팅 VM 배포의 일부로 DC 시리즈 애저 VM에 사전 설치된다.
 

윈도우에서 오픈 인클레이브 SDK 사용하기

오픈 인클레이브 SDK를 사용한 작업은 다른 C++ SDK의 경우와 같다. 깃허브에서 다운로드하거나, 클랭(Clang)과 함께 비주얼 스튜디오를 사용하는 경우 누겟(NuGet)에서도 받을 수 있다. 현재 SDK는 단일 바이너리 인클레이브만 지원하며 빌드를 구성할 때는 올바르게 하도록 주의를 기울여야 한다. 빌드한 후에는 증명(attestation)과 비밀 봉인을 위한 서명이 필요하다. SDK는 여러 샘플 앱을 설치하므로 신속하게 오픈 인클레이브를 시작해 SGX TEE를 사용할 수 있다.

기밀 컴퓨팅은 아직 초창기다. TEE는 설정하기 쉽지 않고 SGX에 따른 제약으로 인해 많은 생각을 요한다. 그러나 특히 클라우드에서 규제 대상 데이터를 처리해야 하는 경우 살펴볼 만한 가치는 충분하다. 보관 및 이동 중인 데이터는 물론 사용 중인 데이터에도 암호화를 추가하는 기능은 애플리케이션 및 데이터 보안 측면에서 중대한 업그레이드이며, 공용 클라우드에서 민감한 애플리케이션을 사용하는 경우 필수적인 요구사항이다. 애저가 핀테크와 정부 클라이언트에 대한 경쟁력을 강화하고 있는 만큼 기밀 컴퓨팅 플랫폼은 앞으로 계속 업그레이드되면서 하이퍼-V 보안에 대한 지원이 확장되고 인텔 SGX 명령어 집합도 업그레이드될 것이다.  editor@itworld.co.kr


2020.03.05

“내부자 위협까지 막는다” 애저 기밀 컴퓨팅의 이해

Simon Bisson | InfoWorld
현대적인 클라우드 네이티브 애플리케이션을 만들고 실행하는 데는 위험이 따른다. 큰 위험요소 중 하나는 몇 명인지 모를 다른 사용자와 컴퓨팅 자원을 공유한다는 점이다. 메모리와 CPU가 공유되고, 데이터가 우발적으로 경계선을 넘어, 조직 외부에서 액세스가 가능한 지점으로 유출될 가능성이 상존한다.
 
ⓒ GettyImagesBank

우발적이라 해도 유출은 유출이다. 애저 또는 다른 클라우드 플랫폼을 사용해서 개인 식별 정보를 다루거나 자체 금융 데이터를 처리하는 경우, 유출은 곧 규정 위반이 된다. 사용자나 금융 데이터만 위험한 것이 아니다. 코드 역시 지적 재산이며 미래의 사업 운영을 위한 중요한 자산이다. 아무리 잘 관리하는 시스템이라 해도 오류는 발생하며, 네트워킹 문제나 컨테이너 장애로 인해 애플리케이션의 메모리가 외부로 노출될 수 있다.

악의적인 행위자의 위험도 있다. 애저는 프로세서 캐시를 통해 데이터를 유출할 수 있는 것으로 알려진 CPU 수준의 버그를 수정하기 위해 서버를 패치했지만, 마이크로코드 수준의 문제는 계속해서 발견되는 중이다. 따라서 정부의 후원을 받거나 조직화된 사이버 범죄자가 이런 문제를 사용해서 클라우드 테넌트를 염탐할 것임을 충분히 예상할 수 있다.

애저의 사이버 보안 인프라는 최고 수준이다. 다양한 신호를 사용해서 머신러닝 기반 위협 탐지로 악의적인 활동을 찾고 조사해야 할 영역을 신속하게 파악한다. 보안과 암호화는 기본 플랫폼에 내장돼 있다. 그러나 일부 고객은 기본 보안 이상, 가능한 한 최상의 보안을 원한다. 최첨단 금융 기술을 클라우드에 구축하거나 클라우드를 사용해서 건강 데이터를 처리하고 관리하는 기업들이다. 정부 또는 군대도 그렇다.
 

애저 기밀 컴퓨팅의 등장

기본적으로 애저는 보관 중일 때와 이동 중일 때 데이터의 안전을 확보한다. 사용자는 암호화된 스토리지와 네트워크 연결에는 익숙하지만, 정작 유출 위험이 가장 높은 곳에서는 암호화를 풀고 원시 상태로 데이터를 처리해야 한다. 기밀 컴퓨팅 개념은 바로 이 문제를 처리한다. 하드웨어와 소프트웨어를 조합하고 마이크로소프트 리서치의 작업을 거쳐 TEE(Trusted Execution Environment, 신뢰할 수 있는 실행 환경)를 구축했다. TEE는 애플리케이션에 필요한 컴퓨팅 및 메모리 리소스를 모두 보호하는 안전한 컨테이너라고 생각하면 된다. 이 메모리 공간에서 신뢰할 수 없는 코드의 실행을 차단해 다른 사용자로부터 리소스를 보호한다.

CPU와 메모리를 모두 보호함으로써 컴퓨트를 통제해 사용자 본인의 신뢰할 수 있는 코드만 실행되도록 하고 코드가 메모리 경계를 넘어 보호되는 영역으로 이동하지 못하도록 하는 승인 방법을 제공할 수 있다. 애플리케이션이 TEE를 해제하면 TEE가 정리되면서 프로세서 캐시나 메모리에 데이터가 남지 않도록 한다. 외부 애플리케이션은 이 메모리를 읽거나 수정할 수 없으므로 보호 경계를 넘어 코드를 주입할 수도 없다.
 

애저에서 SGX 사용하기

애저는 가상 보안 모드(Virtual Secure Mode)와 인텔 SGX의 두 가지 TEE 모델을 제공한다. 가상 보안 모드는 마이크로소프트 자체의 하이퍼-V를 기반으로 수정된 버전을 사용해 코드가 하이퍼바이저 경계를 넘지 못하도록 함으로써 격리 수준을 더 높인다. 여기에는 애저 관리자가 TEE로 코드를 주입하는 행위도 포함되므로 은밀한 내부자 공격이 차단된다. 

인텔 SGX 보안 확장은 TEE에 하드웨어 보호를 추가하며, 애저는 마이크로소프트 또는 다자간(multiparty) 애플리케이션을 신뢰하지 않는 애플리케이션을 위해(이 애플리케이션만 신뢰할 수 있으며, 각 당사자는 다른 당사자의 데이터에 액세스할 권한이 없음. 예를 들어 여러 업체의 의료 데이터를 사용한 머신러닝) SGX가 활성화된 서버에 대한 액세스 기능을 제공한다. 

SGX 지원 프리뷰 버전은 DCv2 시리즈 애저 가상머신에서 2세대 VM 이미지로 사용해볼 수 있다. vCPU는 1~8개, 데이터는 최대 32GB다. 프리뷰 버전이므로 현재 애저 분류상 영국 남부에 해당하는 지역에서만 제공한다. 2세대 VM은 더 새로운 하드웨어를 사용하며, 인텔 SGX 지원을 비롯해 1세대 애저 VM에 비해 더 많은 하드웨어 기능을 이용할 수 있다. 기존 VM을 2세대로 변환할 수 있지만 그 반대는 불가능하다.
 

오픈 인클레이브로 SGX TEE 구축하기

마이크로소프트는 자체 인클레이브 기술의 대부분을 코코 프레임워크(Coco Framework) 블록체인 플랫폼에서 개발했다. 애저 SQL에서 인클레이브는 올웨이즈 인크립티드(Always Encrypted)의 일부로 제공된다. 프리뷰 버전에서는 직접 TEE를 구축해 사용할 수 있다. 애저 마켓플레이스에 안전한 인클레이브 지원 VM을 만들기 위한 툴이 있고, TEE 내에서 실행되도록 코드를 개발하기 위한 C/C++ SDK도 제공된다.

오픈 인클레이브(Open Enclave) SDK의 목적은 가용한 모든 TEE 구현에서 작동하는 코드를 구축하는 단일화된 방법을 제공하는 데 있다. 계층적 접근 방식으로 애플리케이션 개발을 보호하고, TEE 내에서 실행되는 신뢰할 수 있는 구성요소와 사용자 및 다른 애플리케이션과의 상호작용을 처리하는 신뢰할 수 없는 호스트를 혼합한다. 기밀 애플리케이션은 모든 비밀 데이터를 TEE 내에 보관하면서 호스트 애플리케이션에 결과를 전달한다. 따라서 코드는 어떠한 비밀도 노출하지 않으면서 안전하게 결과를 제공할 수 있다.

데이터를 사용해 머신러닝을 실행하는 애플리케이션은 호스트를 사용해서 결과를 보고하고 TEE에서 추론을 처리할 수 있다. TEE를 사용하지 않는 환경에서는 공격자가 원시 데이터를 볼 가능성이 있다. TEE를 사용하면 공격자는 호스트가 결과를 받았다는 것 외에는 아무것도 알 수 없다. 이 접근 방법은 처리되는 데이터에 조직 외부로의 유출이 금지되는 규제 대상 데이터가 포함되는 다자간 애플리케이션에 이상적이다.

SDK는 무슨 역할을 할까? 인클레이브 ID 관리를 포함해 TEE를 만들고 관리하기 위한 툴을 제공한다. 그 외에 TEE 경계 간에 결과와 데이터를 전송하기 위한 표준 방법과 인클레이브 내 코드 빌드를 간소화하기 위한 프리미티브를 제공한다. 마지막으로, 인클레이브 내의 비밀 데이터를 봉인하고 인클레이브 ID를 검증하기 위한 암호화 툴을 제공한다. 오픈 인클레이브 SDK는 윈도우 버전과 리눅스 버전 모두 있고 코드에 SGX 지원을 추가해주며, 기밀 컴퓨팅 VM 배포의 일부로 DC 시리즈 애저 VM에 사전 설치된다.
 

윈도우에서 오픈 인클레이브 SDK 사용하기

오픈 인클레이브 SDK를 사용한 작업은 다른 C++ SDK의 경우와 같다. 깃허브에서 다운로드하거나, 클랭(Clang)과 함께 비주얼 스튜디오를 사용하는 경우 누겟(NuGet)에서도 받을 수 있다. 현재 SDK는 단일 바이너리 인클레이브만 지원하며 빌드를 구성할 때는 올바르게 하도록 주의를 기울여야 한다. 빌드한 후에는 증명(attestation)과 비밀 봉인을 위한 서명이 필요하다. SDK는 여러 샘플 앱을 설치하므로 신속하게 오픈 인클레이브를 시작해 SGX TEE를 사용할 수 있다.

기밀 컴퓨팅은 아직 초창기다. TEE는 설정하기 쉽지 않고 SGX에 따른 제약으로 인해 많은 생각을 요한다. 그러나 특히 클라우드에서 규제 대상 데이터를 처리해야 하는 경우 살펴볼 만한 가치는 충분하다. 보관 및 이동 중인 데이터는 물론 사용 중인 데이터에도 암호화를 추가하는 기능은 애플리케이션 및 데이터 보안 측면에서 중대한 업그레이드이며, 공용 클라우드에서 민감한 애플리케이션을 사용하는 경우 필수적인 요구사항이다. 애저가 핀테크와 정부 클라이언트에 대한 경쟁력을 강화하고 있는 만큼 기밀 컴퓨팅 플랫폼은 앞으로 계속 업그레이드되면서 하이퍼-V 보안에 대한 지원이 확장되고 인텔 SGX 명령어 집합도 업그레이드될 것이다.  editor@itworld.co.kr


X