KR102105760B1 - 하드웨어 보안 기술 기반 gpu 컴퓨팅 보호 기법 - Google Patents

하드웨어 보안 기술 기반 gpu 컴퓨팅 보호 기법 Download PDF

Info

Publication number
KR102105760B1
KR102105760B1 KR1020180070169A KR20180070169A KR102105760B1 KR 102105760 B1 KR102105760 B1 KR 102105760B1 KR 1020180070169 A KR1020180070169 A KR 1020180070169A KR 20180070169 A KR20180070169 A KR 20180070169A KR 102105760 B1 KR102105760 B1 KR 102105760B1
Authority
KR
South Korea
Prior art keywords
gpu
enclave
data
mmio
user
Prior art date
Application number
KR1020180070169A
Other languages
English (en)
Other versions
KR20190142910A (ko
Inventor
허재혁
장인수
김태훈
Original Assignee
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술원 filed Critical 한국과학기술원
Priority to KR1020180070169A priority Critical patent/KR102105760B1/ko
Publication of KR20190142910A publication Critical patent/KR20190142910A/ko
Application granted granted Critical
Publication of KR102105760B1 publication Critical patent/KR102105760B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data

Abstract

하드웨어 보안 기술 기반 GPU 컴퓨팅 보호 기법이 개시된다. 일 실시예에 따른 컴퓨터로 구현되는 컴퓨팅 보호 시스템에 의해 수행되는 컴퓨팅 보호 방법은, 이종 컴퓨팅을 사용하는 환경에서 CPU 및 GPU의 데이터를 보호하기 위하여, GPU 엔클레이브(Enclave)에서 GPU MMIO 영역에 액세스하여 GPU를 관리 및 제어하는 단계를 포함하고, 상기 GPU를 관리 및 제어하는 단계는, GPU 엔클레이브를 생성하여 GPU MMIO영역을 등록하면, 상기 GPU 엔클레이브에서 상기 GPU MMIO영역을 통해 명령을 전송하여 GPU를 단독으로 제어하고, 상기 GPU MMIO영역에 의해 액세스되는 PCIe 인터커넥트를 통하여 GPU에 대한 명령 및 데이터 경로가 보호될 수 있다.

Description

하드웨어 보안 기술 기반 GPU 컴퓨팅 보호 기법{HETEROGENEOUS ISOLATED EXECUTION FOR COMMODITY GPUS}
아래의 설명은 컴퓨팅 보호 기술에 관한 것이다.
기존의 CPU 기반 컴퓨팅에서는 Intel SGX 및 ARM TrustZone과 같은 하드웨어 기반의 trusted execution environments(신뢰가능한 실행환경)(TEE)이 사용자 어플리케이션에 신뢰 가능한 격리된 컴퓨팅 환경을 제공하고 있다. 이러한 HW 기반 TEE는 TEE내에서 실행되는 프로세서 계산 및 중요한 코드에 대한 TCB(Trusted Computing Base)의 크기를 줄인다. TEE지원을 통해, 보안에 중요한 애플리케이션을 권한이 있는 악의적인 소프트웨어뿐만 아니라 메모리 및 시스템 버스에 대한 HW기반 공격으로부터 보호할 수 있으므로, 신뢰할 수 없는 원격 클라우드 서버에서 컴퓨팅을 실행하는데 보안을 제공한다.
범용 GPU컴퓨팅이 기존 고성능 컴퓨팅에서 최신 머신러닝 응용으로 확대됨에 따라, 보안에 민감한 데이터를 보호하기 위해 GPU컴퓨팅 보호가 중요해졌다. 그러나, GPU에서 점점 더 많은 중요한 데이터가 처리되고 있지만, GPU컴퓨팅에서는 이러한 신뢰 가능한 컴퓨팅이 아직 지원되지 않고 있다. 현재 시스템 아키텍처에서, GPU는 PCI Express(PCIe)버스와 같은 I/O인터커넥트를 통해 CPU와 통신하고, 운영 체제의 일부인 GPU드라이버는 GPU를 제어한다. 이 권한이 있는 운영 체제는 HW I/O인터커넥트와 GPU드라이버를 완전히 제어할 수 있으므로, GPU의 컴퓨팅은 운영 체제에 대한 잠재적인 공격에 취약하다. GPU기반 컴퓨팅 외에도, 다양한 가속기 기반 컴퓨팅 모델의 확산으로 인해 권한을 가진 악성 소프트웨어에 대한 가속기의 보다 높은 수준의 보안 지원에 대한 수요가 증가하고 있다.
도 1은 SGX enclave 메모리 매핑 구조를 설명하기 위한 도면이다. Intel SGX(Intel Software Guard Extensions)는 하드웨어 기반 보호 기술로, 권한있는 소프트웨어 및 직접적인 하드웨어 공격으로부터 보호되는 엔클레이브(enclave)라 불리는 신뢰 가능한 실행 환경(TEE)을 제공한다. 프로세서는 엔클레이브 메모리와 실행 상황정보(context)의 보호와 같은 격리된 실행을 제공한다. SGX 하드웨어 기반의 격리 실행은 엔클레이브에서 실행되는 코드의 무결성을 확인하는 증명 서비스에 의해 강화된다. SGX위협 모델에서는 기본 메모리를 신뢰할 수 없지만, SGX는 메모리 암호화 및 액세스 제한 메커니즘을 제공하여 enclave page cache(EPC)라고 하는 기본 메모리의 작은 영역을 보호한다. SGX는 신뢰할 수 없는 운영 체제에서 제공하는 가상 메모리 지원을 사용하지만, 하드웨어 기반의 검증을 통해 EPC페이지에 무단으로 액세스하지 못하도록 보호한다. 도 1을 참고하면, SGX메모리 주소 공간의 구조를 나타낸 것으로, 엔클레이브가 생성되면, 시스템 소프트웨어는 EADD SGX명령을 사용하여 보호된 메모리에 페이지의 가상 주소와 해당 EPC물리적 주소를 등록한다. 도 1에서, ELRANGE(Enclave Linear Address Range)는 엔클레이브에서 보호되는 가상 주소 범위이며, 해당 범위의 페이지는 EPC페이지로 매핑되도록 보장된다. EADD명령을 처리하는 동안, 하드웨어는 MMU에서 주소 변환 중에 페이지에 액세스 할 수 있는지 확인하기 위해 매핑 정보를 EPCM(Enclave Page Cache Map)에 저장한다.
도 2는 PCI Express 시스템 아키텍쳐의 I/O 경로를 설명하기 위한 도면이다. 최신 GPU는 PCIe(PCI Express)인터페이스를 통해 시스템에 연결될 수 있다. PCIe 인터페이스는 소프트웨어를 위하여 PCIe장치에 MMIO(메모리 매핑 I/O)액세스가 되도록 한다. MMIO메커니즘이 장치의 하드웨어 레지스터와 메모리를 소프트웨어용 시스템 메모리 주소공간에 매핑하기 때문에, 소프트웨어가 일반 메모리 주소를 사용하여 PCIe장치에 투명하게 액세스할 수 있다. 도 2를 참고하면, 시스템 메모리 주소 맵을 사용하여 시스템이 장치 액세스 요청을 전용 장치로 전송하는 것을 나타낸 것이다. CPU는 MMIO 영역 및 주메모리에 대한 액세스를 식별한다. 이에, 시스템 부팅시간에 BIOS에 의해 초기화된 내부 하드웨어 레지스터를 사용하여 MMIO및 메인 메모리에 대한 액세스 요청이 적절하게 라우팅될 수 있다. 메모리 액세스의 주소가 MMIO영역에 대한 것이면, PCIe루트 콤플렉스가 요청을 받는다. PCIe장치가 시스템에 트리로 연결되면, PCIe루트 콤플렉스가 루트가 되며, 루트 콤플렉스는 하드웨어 라우팅 레지스터를 사용하여 PCIe transaction 패킷을 생성하여 원하는 장치로 라우팅한다. 이러한 레지스터는 시스템 부팅 시 BIOS에 의해서도 초기화되어, 연결된 장치의 전체 물리적 주소 범위를 처리한다. 최신 PCIe장치는 DMA(Direct Memory Access)를 사용하여 CPU개입 없이 메인 메모리에 직접 액세스한다. 또한, 도 2를 참고하면, 시스템이 DMA요청을 라우팅하는 방법을 나타낸 것이다. 장치가 DMA를 통해 메인 메모리에 액세스 할 때, DMA주소의 가상화를 위해 주소 변환을 사용할 수도 있다. 입출력 메모리 관리 장치(IOMMU)는 PCIe장치 버스 주소를 물리적 주소로 변환한다. IOMMU를 사용하면 추가 변환에 대한 성능 오버헤드가 발생하므로, GPU와 같은 고성능 가속기는 일반적으로 IOMMU를 사용하지 않는다. 기본 하드웨어 I/O경로를 고려할 때, GPU드라이버는 GPU MMIO영역에 대한 메모리 액세스를 통해 GPU를 제어할 수 있다. 장치 드라이버는 먼저 MMIO물리적 주소를 MMIO가상 주소에 매핑한다. GPU 2진수 코드나 입력데이터와 같은 데이터를 GPU에 전달하려면, 제조업체가 제공하는 GPU라이브러리를 사용하여 사용자 공간에서 실행되는 사용자 프로세스에서 ioctl()을 호출한다. 그런 다음 GPU장치 드라이버는 데이터를 운영 체제 커널 공간(kernel space)에 복사한 다음, PCIe패킷을 GPU메모리로 라우팅 되도록 MMIO영역에 다시 복사하거나, 데이터를 복사하기 위해 DMA를 호출한다. 제로 복사 최적화 기술(A zero copy optimization technique)은 사용자 공간에서 MMIO로 직접 데이터를 복사할 수 있다. 그러나, 이러한 복사 작업은 운영 체제 공간에서 장치 드라이버에 의해 수행되어야 한다.
이와 같이, 기존 아키텍처에서 GPU의 모든 코드와 데이터는 권한 있는 공격자에 의해 손상될 수 있다. 최근의 연구에 따르면, GPU코드의 무결성이 런타임에서의 코드를 기성품인 역방향 엔지니어링 도구로 교체하고 중단함으로써 쉽게 손상될 수 있다는 것이 입증되었다. 코드 외에도, GPU의 데이터가 노출되거나 유출될 가능성이 있다. 기밀성 공격에 취약한 GPU데이터는, GPU로 전송되거나 그로부터 전송되는 통신 데이터와 GPU에서 처리되는 데이터로 구성된다. 기존 GPU의 기밀성 및 무결성 공격에 대한 취약성은, I/O 인터커넥트 및 메모리매핑 된 I/O주소와 같은 인터페이스에 대한 액세스 제어 부족에서 비롯된다.
이에 따라 GPU의 보안 컴퓨팅을 지원하기 위해, 잠재적인 악성 운영 체제 및 사용자 애플리케이션으로부터 GPU를 격리하는 새로운 HW 및 SW아키텍처를 제안하는 기술이 요구되고 있다.
참고자료: US 8972746, US9087200, US20170024569
GPU 아키텍쳐를 수정하지 않고 CPU와 GPU간의 I/O 상호 연결을 수정하고, CPU의 신뢰된 환경 내에서 작동하도록 GPU 장치 드라이버를 리팩토링하여 보안을 제공하는 컴퓨팅 보호 방법 및 시스템을 제공할 수 있다.
컴퓨터로 구현되는 컴퓨팅 보호 시스템에 의해 수행되는 컴퓨팅 보호 방법은, 이종 컴퓨팅을 사용하는 환경에서 CPU 및 GPU의 데이터를 보호하기 위하여, GPU 엔클레이브(Enclave)에서 GPU MMIO 영역에 액세스하여 GPU를 관리 및 제어하는 단계를 포함하고, 상기 GPU를 관리 및 제어하는 단계는, GPU 엔클레이브를 생성하여 GPU MMIO영역을 등록하면, 상기 GPU 엔클레이브에서 상기 GPU MMIO영역을 통해 명령을 전송하여 GPU를 단독으로 제어하고, 상기 GPU MMIO영역에 의해 액세스되는 PCIe 인터커넥트를 통하여 GPU에 대한 명령 및 데이터 경로가 보호될 수 있다.
상기 GPU를 관리 및 제어하는 단계는, 상기 GPU에 대한 사용자 액세스 인터페이스를 제공하여 단일의 사용자 엔클라이브에서 상기 GPU가 실행되도록 제한하는 독점 실행 모드를 통하여 복수의 사용자의 GPU 실행으로 발생하는 데이터의 유출을 방지할 수 있다.
상기 GPU를 관리 및 제어하는 단계는, 상기 사용자 엔클레이브로부터 명령 메시지 큐(queue)를 통해 상기 GPU 엔클레이브에게 GPU 사용을 위한 요청 패킷이 전송됨에 따라 상기 사용자 엔클레이브의 GPU 사용 요청이 승인되고, 상기 GPU 엔클레이브에서 상기 승인된 사용자 엔클레이브의 GPU 실행이 완료될 때까지 다른 사용자 엔클레이브의 연결 요청을 거부하는 것을 포함하고, 상기 사용자 엔클레이브에서, GPU 실행이 완료됨에 따라 GPU 메모리, 공유 메모리 및 레지스터와 같은 내부 스토리지가 0으로 채워질 수 있다.
상기 GPU를 관리 및 제어하는 단계는, 상기 GPU 엔클레이브에서 상기 GPU MMIO 영역을 등록하기 위하여 새로운 명령어를 만들고, GPU 관리를 위한 내부 데이터 구조를 EPC 메모리 페이지에 저장할 수 있다.
상기 GPU를 관리 및 제어하는 단계는, 상기 GPU 엔클레이브의 프로세스가 초기화되면 GPU버스, 디바이스 및 기능번호와 EGCREATE명령을 사용하여 GPU 엔클레이브를 생성하고, 상기 GPU 엔클레이브를 생성함에 따라 획득된 GPU enclave ID와 GPU번호 쌍이 GECS(GPU Enclave Control Structure)에 저장될 수 있다.
상기 GPU를 관리 및 제어하는 단계는, 상기 생성된 GPU 엔클레이브에서 상기 MMIO영역에 매핑된 가상 주소를 GPU장치 드라이버에 요청하고, EGADD명령으로 가상 주소와 GPU MMIO 영역의 물리적 주소 쌍을 포함하는 주소 정보를 하드웨어에 등록하고, CPU에서 상기 등록된 주소 정보가 상기 GPU장치에 포함되는지 확인하여 상기 주소 정보를 TGMR테이블에 저장할 수 있다.
상기 GPU를 관리 및 제어하는 단계는, 상기 GPU 엔클레이브가 생성되어 로드됨에 따라 GPU 상태를 초기화하여 GPU의 잠재적인 악성 코드를 정리하고, 상기 GPU엔클레이브가 생성되기 전에 손상 가능성이 있는 GPU BIOS를 읽고 측정하는 것을 포함하고, 상기 사용자 엔클라이브는 상기 GPU 엔클레이브를 검증하고, 상기 GPU엔클라이브에서 측정된 GPU BIOS의 결과를 수신할 수 있다.
상기 GPU를 관리 및 제어하는 단계는, 상기 GPU MMIO 영역의 액세스의 유효 여부를 확인하기 위하여 GECS 및 TGMR 데이터 구조를 사용하여 상기 GPU MMIO 영역의 주소 변환을 보호할 수 있다.
상기 GPU를 관리 및 제어하는 단계는, 사용자 엔클레이브와 상기 GPU 엔클레이브 간에 전송된 데이터의 기밀성과 무결성을 보장하는 통신 채널을 구축할 수 있다.
상기 GPU를 관리 및 제어하는 단계는, 상기 사용자 엔클레이브와 상기 GPU 엔클레이브에서 접근 가능한 공유 메모리 영역이 통신에 사용되고, 상기 사용자 엔클레이브와 상기 GPU 엔클레이브 간 하드웨어 지원 로컬 증명을 수행할 수 있다.
상기 GPU를 관리 및 제어하는 단계는, 상기 로컬 증명을 통해 신뢰를 구축함에 따라 키 교환 프로토콜을 사용하여 공유 대칭 키를 생성하고, 상기 사용자 엔클레이브와 상기 GPU 엔클레이브에서 접근 가능한 공유 메모리 간에 기록된 데이터가 공유 대칭 키로 암호화되고, 상기 암호화된 데이터가 복호화될 경우, 메시지 인증 코드(MAC)를 통하여 데이터에 대한 무결성을 검증할 수 있다.
상기 GPU를 관리 및 제어하는 단계는, GPU 메모리에 매핑된 GPU MMIO 영역에 데이터를 쓰거나, GPU DMA 엔진을 사용하여 데이터를 상기 사용자 엔클레이브 및 상기 GPU 엔클레이브 간 공유 메모리에서 GPU 메모리로 복사할 수 있다.
컴퓨터로 구현되는 컴퓨팅 보호 시스템은, 컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 이종 컴퓨팅을 사용하는 환경에서 CPU 및 GPU의 데이터를 보호하기 위하여, GPU 엔클레이브(Enclave)에서 GPU MMIO 영역에 액세스하여 GPU를 관리 및 제어하는 과정을 처리하고, 상기 GPU를 관리 및 제어하는 과정은, GPU 엔클레이브를 생성하여 GPU MMIO영역을 등록하면, 상기 GPU 엔클레이브에서 상기 GPU MMIO영역을 통해 명령을 전송하여 GPU를 단독으로 제어하고, 상기 GPU MMIO영역에 의해 액세스되는 PCIe 인터커넥트를 통하여 GPU에 대한 명령 및 데이터 경로가 보호될 수 있다.
하드웨어와 소프트웨어의 수정을 통하여 공격범위를 최소화하여 이종 컴퓨팅 데이터를 보호할 수 있다. 새로운 시스템 소프트웨어 레이어를 추가하지 않고, 데이터를 보호하여 효율성을 높이고 공격범위를 최소화할 수 있다.
이종 컴퓨팅을 사용하는 환경에서 CPU 및 GPU의 데이터를 보호할 수 있고, 악의적인 시스템 소프트웨어의 공격에 대하여 데이터를 보호할 수 있다. 또한, 현존하는 하드웨어 보안 기술을 이용하여 이종 컴퓨팅(CPU-GPU)의 데이터를 보호할 수 있다.
컴퓨팅 보호 시스템은 이종 컴퓨팅 환경(CPU-GPU)에서의 데이터 보호를 통해 클라우드를 사용하는 사용자의 데이터를 안전하게 보호할 수 있다.
도 1은 SGX enclave 메모리 매핑 구조를 설명하기 위한 도면이다.
도 2는 PCI Express 시스템 아키텍쳐의 I/O 경로를 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 컴퓨팅 보호 시스템의 구조를 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 컴퓨팅 보호 시스템에서 MMIO 등록을 위한 데이터 구조에 데이터가 저장되는 방법을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 컴퓨팅 보호 시스템에서 GPU 엔클레이브 영역 주소 공간을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 컴퓨팅 보호 시스템에서 MMIO 액세스 및 DMA 액세스를 위한 하드웨어 I/O경로를 나타낸 도면이다.
도 7은 일 실시예에 따른 컴퓨팅 보호 시스템의 소프트웨어 아키텍처를 나타낸 도면이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
아래의 실시예에서는 Intel SGX 기술을 이용하여 CPU와 GPU의 데이터를 보호하는 컴퓨팅 보호 기술에 대하여 설명하기로 한다. GPU에서 격리된 원격실행을 지원하기 위해, 실시예에 따른 컴퓨팅 보호 시스템은 HIX(Heterogeneous Isolated eXecution)라 불리는 새로운 하드웨어 및 소프트웨어 아키텍처를 제안한다. 컴퓨팅 보호 시스템은 보호 기능을 제공하기 위해 GPU 아키텍처를 수정하지 않고, CPU와 GPU 간의 I/O 상호 연결을 수정하고 CPU 신뢰된 환경 내에서 작동하도록 GPU 장치 드라이버를 리팩토링하여 보안을 제공할 수 있다. 이때, 컴퓨팅 보호 시스템에서 제안하는 HIX는 GPU 외에 다른 오프로드 가속기에도 적용될 수도 있다.
실시예에서 제안하는 컴퓨팅 보호 기술을 실시하는 컴퓨팅 보호 시스템은 3가지의 주요 하드웨어 및 소프트웨어의 구성 요소로 이루어질 수 있다. 보안 GPU드라이버가 완전히 시작되고 측정되면, 운영 체제의 라우팅 맵 변경을 방지하기 위해 PCIe 인터커넥트 아키텍처의 일부가 수정될 수 있다. GPU에 매핑된 I/O주소 메모리도 동시에 고정되므로 변경할 수 없다. 둘째, GPU드라이버의 주요기능이 운영 체제(OS)에서 제거되고 자체 GPU 엔클레이브(enclave)에서 별도의 프로세스로 재배치될 수 있다. GPU 엔클레이브는 GPU를 단독으로 관리하도록 설계된 현재의 SGX enclave를 확장한 것이다. 메모리 매핑된 I/O영역은 GPU 엔클레이브에 의해서 액세스될 수 있으며, 운영 체제를 포함한 나머지 시스템 소프트웨어로부터 격리될 수 있다. 셋째, GPU애플리케이션의 CPU대응 프로세스는 SGX enclave에서 실행되고, SGX enclave 와 GPU엔클레이브에 의하여 설정된 신뢰할 수 있는 통신 경로를 통하여 통신하여 가능한 운영체제의 손상에 대비할 수 있다.
컴퓨팅 보호 시스템은 GPU의 수정 없이 GPU에 대한 보안 실행환경을 지원할 수 있다. 컴퓨팅 보호 시스템은 CPU의 하드웨어 TEE와 비교하여 지원되는 보안 수준이 낮아지더라도, 가속기 자체를 수정하지 않고도 일반 가속기 지원으로 확장할 수 있다. 가속기에 대한 메모리 매핑 I/O영역은 운영 체제에서 분리되며, 가속기에서의 보안 통신 및 계산은 가속기 드라이버가 자체 엔클레이브(enclave)에서 실행되는 경우에 지원될 수 있다. 컴퓨팅 보호 시스템은 보안 및 성능 측면에서 제안된 아키텍처를 평가할 수 있다.
실시예에 따른 컴퓨팅 보호 시스템은 하드웨어 GPU아키텍처의 추가 지원 없이, GPU계산을 위한 하드웨어 기반 보안 컴퓨팅을 제공하는 최초의 작업으로서, 주요 업적은 다음과 같다. 컴퓨팅 보호 시스템은 GPU계산에 대한 attack surface 평가를 제공할 수 있다. PCIe인터커넥트, 메모리 매핑된 I/O영역 및 GPU드라이버와 같은 권한이 있는 SW로부터 공격 당할 수 있는 주요 GPU구성 요소를 식별한다. 또한, 컴퓨팅 보호 시스템은 GPU초기화 후 라우팅 변경을 차단하고 GPU에 대한 메모리 매핑 I/O영역의 불변성을 더욱 보장하기 위해, PCIe인터커넥트 설계를 강화한다. 또한, 컴퓨팅 보호 시스템은 GPU 엔클레이브(enclave)를 지원하기 위해 현재 SGX인터페이스를 확장한다. GPU 엔클레이브는 SGX enclave와 달리 GPU의 메모리 매핑 I/O영역에 액세스할 수 있어야 한다. 한편, 현재 SGX에서는 GPU의 메모리 매핑 I/O영역에 대해서 운영체제의 non-enclave privileged 코드에 의해서만 액세스할 수 있을 뿐이다. 또한, 컴퓨팅 보호 시스템은 성능 오버 헤드를 평가하기 위하여, KVM및 QEMU로 에뮬레이트된 시스템에서 프로토타입을 구현할 수 있다. 하드웨어의 필수 변경 사항으로 에뮬레이션 되지만, 하드웨어 및 소프트웨어의 아키텍처에서 필요한 변경 사항을 반영할 수 있다.
도 3은 일 실시예에 따른 컴퓨팅 보호 시스템의 구조를 설명하기 위한 도면이다.
컴퓨팅 보호 시스템은 Intel SGX아키텍처와 PCI Express표준을 기반으로 구축될 수 있다. Intel SGX아키텍처와 PCI Express에 대한 설명은 도 1 및 도 2를 참고하기로 한다. GPU에 의해 처리될 데이터의 기밀성과 무결성을 파괴하는 것을 목표로 하는 공격자 모델이 존재할 경우, 공격자가 목표 시스템에 대한 소프트웨어 권한을 가지고 있다고 가정한다. 이때, 사용자 애플리케이션에서 GPU로의 하드웨어 및 소프트웨어 I/O데이터 경로로 구성되는 공격 벡터에 초점을 맞출 수 있다. 특히, 공격자는 커널 공간 내에서, 운영 체제 커널 및 장치 드라이버와 같은 모든 권한 있는 소프트웨어 구성 요소를 제어할 수 있다. 공격자는 이러한 구성 요소의 코드 실행을 제어할 수 있을 뿐만 아니라, 주 메모리의 데이터를 검사 및 관찰하고 주 메모리 액세스 요청 및 MMIO 액세스 요청을 라우팅해야하는 위치를 나타내는 일련의 정보인 시스템 주소 맵을 관리할 수 있다. 또한 CPU패키지와 GPU카드도 신뢰할 수 있다고 가정한다.
도 3을 참고하면, 컴퓨팅 보호 시스템은 사용자 애플리케이션에서 GPU로의 소프트웨어 및 하드웨어 수준의 공격으로부터 명령 및 데이터 경로를 보호할 수 있다. 일반적으로 보호되지 않는 셋팅에서는, 운영 체제 내의 GPU장치 드라이버가 신뢰할 수 없는 영역에 있으므로 공격이 발생할 가능성이 있다. 도 3(a)은 기존 아키텍처, 도 3(b)는 실시예에서 제안하는 컴퓨팅 보호 시스템의 구조(HIX)를 나타낸 것이다. 도 3(a)에서 GPU드라이버는 운영 체제(OS)의 일부이며, MMIO를 통한 GPU의 I/O경로는 OS에서 제어된다. 도 3(b)는 GPU드라이버가 운영체제와 분리되어 보안이 유지되는 엔클레이브(enclave)에서 실행된다. 이때, 커널은 MMIO매핑 및 GPU라우팅에 영향을 미칠 수 없다. 보안 컴퓨팅을 제공하려면, 다음과 같은 소프트웨어 및 하드웨어의 구성 요소가 지원되어야 한다.
컴퓨팅 보호 시스템은 GPU 엔클레이브에서 독점적으로 GPU를 관리할 수 있다. 취약한 운영 체제의 보안 GPU컴퓨팅을 위해, GPU드라이버를 운영체제 공간에서 분리한다. GPU드라이버는 그림 3(b)에 도시된 바와 같이, GPU 엔클레이브라고 하는 TEE환경에서 실행된다. GPU 엔클레이브의 실행에서 GPU MMIO영역에 대한 액세스를 허용하려면 SGX enclave메커니즘을 추가로 변경해야 한다.
컴퓨팅 보호 시스템은 보안 하드웨어 I/O 경로를 제공할 수 있다. GPU 엔클레이브는 GPU MMIO 영역를 통해 명령을 전송하여 GPU를 독점적으로 관리하므로, MMIO를 통한 통신은 운영체제 및 기타 애플리케이션에서 보호되어야 한다. 이때, PCIe아키텍처뿐만 아니라 SGX지원까지 여러 하드웨어 확장이 필요하다. 첫째, 엔클레이브 메모리 보호와 같이, GPU 엔클레이브에 대한 매핑이 설정되면, 운영 체제는 GPU MMIO영역에 대한 주소 매핑정보를 변경할 수 없다. 둘째, GPU 엔클레이브를 제외한 모든 영역으로부터 GPU MMIO영역으로의 액세스를 금지해야 한다. 셋째, GPU 엔클레이브가 초기화된 후, PCIe루트 콤플렉스의 GPU MMIO매핑 및 라우팅 구성을 변경하지 않는다. 마지막으로 GPU에 대한 DMA를 운영 체제에서 보호해야 한다.
컴퓨팅 보호 시스템은 신뢰할 수 있는 응용 프로그램과 GPU 간의 통신을 지원할 수 있다. 보안 GPU계산을 위해 SGX enclave에서 실행되는 사용자 프로세스에서 GPU애플리케이션이 시작된다. 요청 및 데이터를 안전하게 전송하려면, 사용자 애플리케이션에서 실행 중인 사용자 엔클레이브가 GPU 엔클레이브와 안전하게 통신할 수 있어야 한다. 컴퓨팅 보호 시스템은 증명 및 대칭 암호화를 활용하여, 사용자 엔클레이브와 GPU 엔클레이브 간의 통신의 기밀성과 무결성을 보장한다. 이때, 데이터 기밀성은 GPU커널 코드가 포함된 모든 사용자 데이터를 애플리케이션에서 엔클레이브 및 GPU의 외부의 엔티티에서 읽을 수 없는 것으로 보장된다. 신뢰할 수 있는 엔클레이브 및 GPU에서만 데이터는 암호 해독된 상태로 남아 있고, 다른 곳에서도 암호화된 상태로 저장된다. 신뢰할 수 있는 엔티티에 대한 액세스는 신뢰할 수 있는 하드웨어에서 모니터 될 수 있다. 또한, 데이터 무결성은 사용 중인 데이터(enclave 또는 GPU내) 또는 전송 중인 데이터는 검색 없이 수정할 수 없는 것으로 보장된다. 전송된 데이터는 MAC에 대한 무결성 검사가 성공하는 경우에만 신뢰할 수 있는 엔티티에서 허용되고 해독되므로, 무단 수정이 보장되지 않는다.
컴퓨팅 보호 시스템은 하드웨어 및 소프트웨어 지원을 통해 중요 데이터에 대한 보증을 수행하여 신뢰할 수 있는 GPU서비스를 사용자 엔클레이브에게 제공할 수 있다.
GPU 엔클레이브는 GPU에 대한 단독 제어하는 기능, GPU에 대한 단독 사용자 액세스 인터페이스 기능을 담당할 수 있다. attack surface를 줄이기 위해, GPU를 제어하는 중요한 기능을 운영체제에 존재하는 드라이버에서 분리하고, GPU 엔클레이브에 격리시킨다. 이에, 운영체제에서 나머지 드라이버의 역할은 지정된 MMIO지역의 가상 주소를 GPU 엔클레이브로 설정하는 메모리 주소 할당과 같은 중요하지 않은 서비스 기능으로 축소될 수 있다. 초기화 시에, GPU 엔클레이브는 GPU명령을 전송하여 GPU상태를 재설정하여 GPU에서 신뢰할 수 없는 GPU프로그램을 제거할 수 있다.
SGX를 확장하여, GPU 엔클레이브는 분리된 사용자 공간 프로세스로 실행되며 GPU관리와 관련된 코드와 데이터를 보호할 수 있다. GPU 엔클레이브는 GPU MMIO 영역을 통해 GPU 엔클레이브 메모리 주소 공간에 매핑된 GPU하드웨어 레지스터에 명령어 세트를 작성하여 GPU를 제어할 수 있다. GPU 엔클레이브만 독점적으로 GPU MMIO영역에 액세스 할 수 있도록 하여 다른 모든 소프트웨어가 GPU MMIO영역을 사용하지 못하도록 하는 것이 중요하다.
보안을 유지하기 위해, SGX 엔클레이브는 인터럽트(interrupts)와 익셉션(exceptions)을 직접 처리할 수 없다. 이 제한 요소를 해결하기 위해서, GPU 엔클레이브는 GPU에 태그가 지정된 특정 MMIO주소를 폴링하여 GPU를 제어한다. GPU에 대한 이러한 중단 없는 제어를 통하여 GPU 엔클레이브 내에서 인터럽트 처리를 지원할 필요가 없어진다.
GPU 엔클레이브는 다중 사용자 애플리케이션에 대한 GPU계산 보안을 제공할 수 있다. GPU 엔클레이브는 독점 실행 모드로 여러 사용자의 GPU실행 간에 사용자 데이터가 유출되지 않도록 보장할 수 있다. 기존 GPU는 GPU활용을 개선하기 위하여 다중 사용자 상황정보(context)의 동시 실행을 지원하기 시작했다. 그러나 GPU하드웨어 리소스의 일부를 다른 GPU컨텍스트에서 직접 또는 간접적으로 액세스 할 수 있는 현재의 설계 제한으로 서로 다른 호스트 프로세스에서의 인터리브(interleaved) 실행으로 인해 현재의 GPU아키텍쳐 하에서 데이터가 유출될 수 있다는 문제점이 있다. 이에 따라, GPU 엔클레이브는 한번에 하나의 사용자 엔클레이브가 GPU에서 실행되도록 제한하여, 취약성의 원인을 제거할 수 있다. GPU를 먼저 사용하려는 사용자 엔클레이브는, 명령 메시지큐를 통해 GPU 엔클레이브에게 요청 패킷을 전송하고, GPU 엔클레이브에서 사용자 엔클레이브의 GPU 사용이 승인함에 따라 허용된 사용자 엔클레이브로부터 GPU 실행이 완료될 때까지, 서로 다른 사용자 엔클레이브의 연결 요청을 거부할 수 있다. 사용자 프로세스가 실행을 완료하면, GPU메모리와 공유 메모리 및 레지스터와 같은 내부 스토리지가 0으로 채워진다.
컴퓨팅 보호 시스템에서 운영 체제는 애플리케이션에 GPU를 사용할 수 있는 권한을 부여하거나 취소할 수 있는 기능을 유지할 수 있다. 사용자 프로세스의 악의적인 사용으로부터 시스템 리소스를 보호할 수 있다. 운영 체제는 CPU, GPU 및 메모리와 같은 시스템 리소스를 할당할 수 있다. 운영 체제가 사용자 응용 프로그램에서 GPU사용 권한을 취소하도록 결정하면, GPU 엔클레이브에서 사용자 응용 프로그램을 중지하도록 요청하고, GPU 엔클레이브는 GPU의 나머지 데이터에 대한 정리 절차를 시작할 수 있다.
GPU 엔클레이브는 GPU MMIO 등록할 수 있다. 컴퓨팅 보호 시스템은 GPU관리 및 데이터 복사와 관련된 GPU MMIO영역을 안전하게 관리하기 위한 확장 SGX명령어를 제공할 수 있다. 하드웨어는 어느 MMIO 영역을 보호해야 하는지(MMIO의 물리적 주소), GPU 엔클레이브의 가상 주소 공간(MMIO의 해당 가상 주소)에 매핑되는 곳, 승인되지 않은 액세스로부터 하드웨어 I/O 경로를 보호하기 위해 어느 GPU 엔클레이브가 액세스해야 하는지 확인해야 한다.
GPU MMIO영역을 등록하기 위해 표 1에 있는 새로운 명령어가 추가될 수 있다. Intel SGX는 SGX내부 데이터 구조를 소프트웨어에서 액세스할 수 없는 EPC메모리 페이지에 저장한다. 마찬가지로, 컴퓨팅 보호 시스템은 GPU관리를 위한 추가적인 내부 데이터 구조를 EPC메모리 페이지에 저장하고, 소프트웨어에서 액세스될 수 없음을 표시할 수 있다. 숨겨진 데이터 구조 중 두 가지는 GECS(GPU Enclave Control Structure)와 TGMR(Trusted GPU MMIO region)테이블이다. 이때, GECS(GPU Enclave Control Structure)에는 하드웨어 GPU번호 및 enclave ID를 포함하는 GPU 엔클레이브와 관련된 제어 정보가 포함될 수 있다. 신뢰할 수 있는 GPU MMIO영역(TGMR)에는 GPU MMIO영역의 가상 및 물리적 주소 매핑 정보가 포함될 수 있다. TGMR은 EPCM을 사용하여 SGX에서 보호된 EPC영역에 대한 매핑을 확인하기 때문에, MMIO영역의 주소 매핑을 확인하는 데 사용될 수 있다.
표 1:
Figure 112018059961957-pat00001
도 4를 참고하면, MMIO 등록을 위한 데이터 구조에 데이터가 저장되는 방법을 나타낸 것이다. GPU 엔클레이브 프로세스가 초기화되면 GPU버스, 디바이스 및 기능번호와 함께 EGCREATE명령을 사용하여 GPU 엔클레이브를 생성할 수 있다. 생성된 GPU 엔클레이브의 ID와 GPU번호 쌍이 GECS에 저장될 수 있다. 컴퓨팅 보호 시스템의 하드웨어는 GECS검색과 동시에 두 개의 GPU 엔클레이브에 GPU가 등록되지 않도록 한다. GPU 엔클레이브가 생성됨에 따라 GPU 엔클레이브는 GPU MMIO영역에 매핑된 가상 주소를 운영 체제의 신뢰할 수 없는 GPU장치 드라이버에 요청하고, EGADD명령으로 가상 주소와 MMIO 물리적 주소 쌍을 하드웨어에 등록할 수 있다. CPU는 지정된 주소가 실제로 소유 GPU장치에 포함되는지 확인하고, 해당 주소를 TGMR테이블에 저장할 수 있다.
기존 SGX의 EPC 페이지에 대한 가상주소 대 물리주소의 매핑을 제한하는 것 외에도, GPU 엔클레이브는 TGMR 테이블, GECS 및 MMIO 영역을 포함하는 메모리 영역이 임의로 변경되지 않도록 하기 위해 유사한 가상주소 대 물리주소의 매핑을 보호할 수 있다. 도 5를 참고하면, GPU 엔클레이브 영역 주소 공간을 나타낸 것으로, GPU 엔클레이브 메모리 및 GPU MMIO영역의 매핑에 대한 예시를 나타낸 것이다. 이를 통해, 일반 엔클레이브와 GPU 엔클레이브의 차이를 확인할 수 있다. GPU MMIO 영역의 가상주소 뒤에는, TGMR, GECS 및 GPU enclave에 대한 나머지 EPC페이지의 가상주소가 포함된 ELRANGE 영역이 이어진다. EPC 매핑 ELRANGE는 현재 SGX메커니즘에 의해 액세스 보호되며, MMIO 영역은 TGMR에 저장된 MMIO 정보를 사용하여 검증을 통해 MMIO 영역을 액세스 보호할 수 있다.
또한, GPU 엔클레이브가 생성되어 로드됨에 따라 GPU상태를 초기화하여 GPU의 잠재적인 악성 코드를 정리할 수 있다. 또한 GPU 엔클레이브는 GPU 엔클레이브가 생성되기 전에 손상되었을 수 있는 GPU BIOS를 읽고 측정할 수 있다. 사용자 엔클레이브는 지원되는 엔클레이브 측정 및 검증 메커니즘을 통해 GPU 엔클레이브를 검증할 수 있다. 또한 사용자 엔클레이브는 GPU 엔클레이브에서 GPU BIOS측정 결과를 가져올 수 있다. GPU 엔클레이브가 생성되면, GPU 엔클레이브가 GPU를 단독으로 제어하므로 운영 체제로도 GPU의 BIOS를 변경할 수 없다.
컴퓨팅 보호 시스템은 I/O 경로 및 MMIO를 보호할 수 있다. GPU컴퓨팅 보안을 위한 다음 단계는 GPU에 대한 명령 및 데이터 경로를 보호하는 것이다. GPU에 대한 기본 명령 및 데이터 경로는 MMIO에 의해 액세스되는 PCIe 인터커넥트를 통해 이루어진다. 도 6을 참고하면, MMIO 액세스 DMA 액세스를 위한 하드웨어 I/O 경로를 나타낸 것이다. MMIO 액세스 보호는 하드웨어 페이지 테이블 워커에 의해 수행되고, PCIe 루트 콤플렉스에 의한 보안 I/O 라우팅이 제공될 수 있다. 도 6의 GPU의 I/O경로에서 MMIO의 I/O 경로, DMA의 I/O 경로를 나타낸 것을 확인할 수 있다. 컴퓨팅 보호 시스템은 MMIO 잠금 및 보안 I/O 라우팅을 제공할 수 있다. 기존 아키텍처에서 권한이 부여된 시스템 소프트웨어는 MMIO영역 또는 패킷 라우팅에 대한 정보를 저장하는 BAR과 같은 PCIe 장치 레지스터를 수정하여 MMIO 영역을 다시 매핑하거나 PCIe 패킷 라우팅 방향을 악의적으로 수정할 수 있다. MMIO영역 매핑 및 GPU의 PCIe메시지 라우팅이 악성 소프트웨어에 의해 수정되지 않도록 하기 위하여 컴퓨팅 보호 시스템은 PCIe루트 컴플렉스에 MMIO잠금 메커니즘을 제공한다.
MMIO주소 맵을 고정하기 위해, EGCREATE를 호출하면 MMIO잠금 기능이 활성화될 수 있다. 프로세서는 EGCREATE 절차 중에 GPU MMIO영역의 루트 컴플렉스에 있는 MMIO구성 레지스터를 고정해야 한다. 이때, MMIO영역 및 PCIe라우팅에 대한 모든 정보는 하드웨어 레지스터에 저장될 수 있다. 잠금이 설정되면, PCIe루트 콤플렉스는 MMIO주소 맵 및 라우팅 구성을 수정하려고 하는 모든 PCIe구성 쓰기 요청을 거부한다. 루트 콤플렉스는 PCIe구성 트랜잭션 패킷에서 대상 장치번호와 레지스터 오프셋을 검사하여, 레지스터 값을 수정하려고 하는 쓰기 요청의 대상을 검사할 수 있다. 패킷이 PCIe라우팅 또는 MMIO매핑과 관련된 레지스터를 수정하기 위한 것이라면, 루트 콤플렉스는 이 요청을 제거한다. 컴퓨팅 보호 시스템은 EGCREATE 동안에, SGX를 확장하여 GPU 엔클레이브 측정의 일부로 MMIO구성 레지스터 값을 안전하게 측정할 수 있다.
컴퓨팅 보호 시스템은 애플리케이션과 GPU간 통신을 지원할 수 있다. GPU 엔클레이브가 GPU를 제어하는 것만으로, GPU서비스를 위한 신뢰할 수 있는 인터페이스를 여러 보안 문제들을 고려해 사용자 엔클레이브에 제공해야 한다. 도 7을 참고하면, 사용자 엔클레이브와 GPU 엔클레이브 간의 통신 경로를 나타낸 것이다.
안전하게 엔클레이브 간의 통신이 가능하다. GPU관리 및 GPU서비스 기능이 OS장치 드라이버에서 별도의 사용자 공간 프로세스로 실행되는 GPU 엔클레이브로 이동된다. 사용자 엔클레이브와 GPU 엔클레이브 간에 전송된 데이터의 기밀성과 무결성을 보장하는 통신 채널이 구축되어야 한다. SGX의 엔클레이브 간의 통신에 의해 사용되는 것처럼, 양쪽 엔클레이브에서 접근할 수 있는 공유 메모리 영역이 통신에 사용될 수 있다. 공유 메모리는 신뢰할 수 없는 운영 체제에서 액세스할 수 있으므로, 컴퓨팅 보호 시스템은 대칭 암호화와 메시지 인증 코드를 사용하여 기밀성과 무결성을 제공한다. 사용자 엔클레이브와 GPU 엔클레이브는 서로 확인하기 위해, 하드웨어 지원 로컬 증명을 수행할 수 있다. 증명을 통해 신뢰를 구축한 후에는, Diffie-Hellman key 교환 프로토콜을 사용하여 공유 대칭 키를 생성할 수 있다. 엔클레이브 공유 메모리 간에 기록된 모든 데이터는 키로 암호화되어야 하며, 암호 해독은 사용자 엔클레이브, GPU 엔클레이브 및 GPU 내에서만 수행될 수 있다. 데이터의 암호가 해독되면, 연결된 MAC(메시지 인증 코드)를 사용하여 무결성도 확인한다.
일반적으로 사용자 엔클레이브와 GPU 엔클레이브 간의 신뢰는 SGX에서 이미 사용 가능한 인증과 키 교환 메커니즘을 통해 확립될 수 있다. 신뢰를 설정하고 키를 교환하면, 공유 메모리와 같은 안전하지 않은 매체를 통해 두개의 enclave가 안전하게 통신할 수 있다. GPU 엔클레이브와 GPU 자체 사이에는, 보안 통신 경로가 신뢰할 수 있는 MMIO를 통해 GPU장치로 설정될 수 있다. GPU enclave는 신뢰할 수 있는 MMIO를 통해 GPU로 키를 안전하게 전송할 수 있으므로, GPU와 GPU 엔클레이브 간의 DMA기반 데이터 전송도 보호될 수 있다.
GPU메모리를 복사할 수 있다. 메모리 복사 작업은 사용자의 중요한 데이터를 GPU로 전송한다. 컴퓨팅 보호 시스템은 GPU 메모리에 매핑된 신뢰할 수 있는 MMIO에 직접 데이터를 쓰는 것, GPU DMA 엔진을 사용하여 데이터를 enclave 간 공유 메모리에서 GPU 메모리로 복사하는 것을 포함하는 데이터 복사를 위한 두 가지 방법을 지원할 수 있다. 사용자 엔클레이브, GPU 엔클레이브 및 GPU를 통한 보안 데이터 전송을 위해, 세 개의 엔티티가 데이터 공유를 공유 키로 조정할 수 있다.
이러한 데이터 전송을 위한 안전하지만 간단한 방법은, 암호화된 데이터를 공유 메모리를 통해 전송하고, GPU 엔클레이브가 암호화된 데이터를 GPU로 다시 전송하는 것이다. 사용자 애플리케이션이 암호화된 데이터를 저장하면, GPU 엔클레이브에서 공유 키를 사용하여 데이터의 암호를 해독하고 GPU와 GPU 엔클레이브 간에 공유된 다른 키로 데이터를 다시 암호화하여, MMIO 또는 DMA를 통해 GPU 메모리로 데이터를 전송할 수 있다. DMA채널은 non-enclave 메모리에 기록되기 때문에 안전하지 않고, 데이터는 DMA에 암호화되어야 한다. 그러나 이 방법을 사용하려면 비효율적인 중복 암호화 작업이 요구된다. 이러한 이중 암호화를 방지하기 위해, 컴퓨팅 보호 시스템은 임시 공유 키를 공유하도록 사용자 엔클레이브, GPU 엔클레이브 및 GPU를 조정할 수 있다. 사용자 엔클레이브가 암호화된 데이터를 공유 메모리에 저장하면, GPU 엔클레이브에 의해 초기화된 DMA또는 MMIO를 통해 데이터를 GPU로 직접 전송할 수 있다. GPU는 데이터를 암호 해독하고 데이터의 무결성을 확인한다.
파이프 라인 방식으로 대규모 데이터 통신을 수행하면, 엄청난 성능 이점을 획득할 수 있다. 암호화 작업과 데이터 전송은 동시에 실행할 수 있으므로, 큰 데이터를 4MB청크로 나누고 전송과 암호화를 동시에 수행할 수 있다. 다시 말해서, n번째 청크를 전송하는 동안, n+1청크는 암호화된다. 이는 Intel SGX의 대용량 데이터 오버헤드를 완화한다. 지정된 데이터가 L3캐시 사이즈보다 클 경우, SGX enclave의 암호화 작업 오버헤드는 그 보안 모델로 인해 증가한다. L3캐시 누락이 발생하여 캐시에서 제거할 대상을 enclave content로 선택하면, 메모리 암호화 엔진(MEE)은 캐시 라인을 투명하게 암호화하여 메인 메모리로 전송한다. 4MB 소프트웨어 기반의 Chunking메커니즘을 사용하면 이러한 오버헤드가 제거된다.
컴퓨팅 보호 시스템은 사용자 데이터를 GPU에 복사하여 작업을 보호할 수 있다. SGX에 대한 중요한 제한은 보안을 위해 엔클레이브 메모리에서 DMA를 비활성화하는 것이다. 이에 따라 DMAed 데이터는 보호되지 않은 메모리 영역을 통해 전송되어야 한다. DMAed 데이터의 기밀성과 무결성을 지원하려면, DMA를 통해 전송된 데이터를 암호화하고 MAC(메시지 인증 코드)로 무결성을 보호해야 한다. 모든 DMA작업은 GPU enclave에서 시작되므로, GPU 엔클레이브는 사용자 엔클레이브와 GPU간에 필요한 키를 교환하는 역할을 수행한다.
GPU에 DMA작업을 요청하려면, 물리적 주소는 운영 체제에만 알려져 있으므로 GPU 엔클레이브는 대상 버퍼의 물리적 주소를 가져와야 한다. 이때, 운영 체제는 잘못된 물리적 주소를 제공하거나 물리적 메모리 영역에 잘못된 데이터를 덮어씀으로써 통신을 중단하려고 시도할 수 있다. 그러나, 암호화된 DMA데이터만 보호되지 않은 버퍼에 존재하고 무결성은 MAC및 nonce를 통해 리플레이 공격에 대해 검사되므로, 운영 체제는 DMA데이터의 기밀성과 무결성을 깰 수 없다. 동일한 메커니즘으로 IOMMU가 사용되는 경우에도 DMA데이터의 보호가 지원된다. 컴퓨팅 보호 시스템은 사용자 엔클레이브, GPU 엔클레이브 및 GPU에서 키를 안전하게 교환할 수 있기 때문에, 운영 체제에 의해 IOMMU페이지 테이블이 손상된 경우에도 데이터 보안을 제공할 수 있다.
일 실시예에 따른 컴퓨팅 보호 시스템은 CPU와 GPU의 데이터를 보호할 수 있고, GPU 하드웨어의 수정없이 악의적인 시스템 소프트웨어로부터 데이터를 보호할 수 있다. 구체적으로, 컴퓨팅 보호 시스템은 보호 메커니즘을 통하여 GPU 드라이버를 보호영역에서 수행하여 악의적인 GPU 제어를 차단하고, I/O 경로 수정을 차단하여 악의적인 GPU 제어 명령 경로 수정을 방지하고, CPU와 GPU간의 송/수신 경로에서 데이터를 암호화하고 무결성을 확인할 수 있다. 이에 따라, 컴퓨팅 보호 시스템은 이종 컴퓨팅 클라우드 환경에서 악의적인 관리자/시스템 소프트웨어에 의한 데이터 변조 및 누출을 방지할 수 있다. 더 나아가, GPU 뿐만 아니라 I/O로 연결되는 디바이스에 대하여 적용할 수도 있다.
또한, 컴퓨팅 보호 시스템은 이종 컴퓨팅 환경(CPU-GPU)에서의 데이터 보호를 통해 클라우드를 사용하는 사용자의 데이터를 안전하게 보호할 수 있고, 다양한 종류의 가속기나 I/O로 연결되는 디바이스를 사용하는 환경에서도 데이터를 안전하게 보호할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (13)

  1. 컴퓨터로 구현되는 컴퓨팅 보호 시스템에 의해 수행되는 컴퓨팅 보호 방법에 있어서,
    이종 컴퓨팅을 사용하는 환경에서 CPU 및 GPU의 데이터를 보호하기 위하여, GPU 엔클레이브(Enclave)에서 GPU MMIO 영역에 액세스하여 GPU를 관리 및 제어하는 단계
    를 포함하고,
    상기 GPU를 관리 및 제어하는 단계는,
    GPU엔클레이브를 생성하여 GPU MMIO영역을 등록하면, 상기 GPU 엔클레이브에서 상기 GPU MMIO영역을 통해 명령을 전송하여 GPU를 단독으로 제어하고, 상기 GPU MMIO영역에 의해 액세스되는 PCIe 인터커넥트를 통하여 GPU에 대한 명령 및 데이터 경로가 보호되고, 상기 생성된 GPU 엔클레이브에서 상기 GPU에 대한 사용자 액세스 인터페이스를 제공하여 단일의 사용자 엔클레이브에서 상기 GPU가 실행되도록 제한하는 독점 실행 모드를 통하여 복수의 사용자의 GPU 실행으로 발생하는 데이터의 유출을 방지하는
    것을 특징으로 하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 GPU를 관리 및 제어하는 단계는,
    상기 GPU를 사용하려는 사용자 엔클레이브로부터 명령 메시지 큐(queue)를 통해 상기 GPU 엔클레이브에게 GPU 사용을 위한 요청 패킷이 전송됨에 따라 상기 사용자 엔클레이브의 GPU 사용 요청이 승인되고, 상기 GPU 엔클레이브에서 승인된 사용자 엔클레이브의 GPU 실행이 완료될 때까지 다른 사용자 엔클레이브의 연결 요청을 거부하는
    것을 포함하고,
    상기 사용자 엔클레이브에서, GPU 실행이 완료됨에 따라 GPU 메모리, 공유 메모리 및 레지스터와 같은 내부 스토리지가 0으로 채워지는
    것을 특징으로 하는 방법.
  4. 컴퓨터로 구현되는 컴퓨팅 보호 시스템에 의해 수행되는 컴퓨팅 보호 방법에 있어서,
    이종 컴퓨팅을 사용하는 환경에서 CPU 및 GPU의 데이터를 보호하기 위하여, GPU 엔클레이브(Enclave)에서 GPU MMIO 영역에 액세스하여 GPU를 관리 및 제어하는 단계
    를 포함하고,
    상기 GPU를 관리 및 제어하는 단계는,
    GPU엔클레이브를 생성하여 GPU MMIO영역을 등록하면, 상기 GPU 엔클레이브에서 상기 GPU MMIO영역을 통해 명령을 전송하여 GPU를 단독으로 제어하고, 상기 GPU MMIO영역에 의해 액세스되는 PCIe 인터커넥트를 통하여 GPU에 대한 명령 및 데이터 경로가 보호되고, 상기 GPU 엔클레이브에서 상기 GPU MMIO 영역을 등록하기 위하여 새로운 명령어를 만들고, GPU 관리를 위한 내부 데이터 구조를 EPC 메모리 페이지에 저장하는
    것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 GPU를 관리 및 제어하는 단계는,
    상기 GPU 엔클레이브의 프로세스가 초기화되면 GPU버스, 디바이스 및 기능번호와 EGCREATE명령을 사용하여 GPU 엔클레이브를 생성하고, 상기 GPU 엔클레이브를 생성함에 따라 획득된 GPU enclave ID와 GPU번호 쌍이 GECS(GPU Enclave Control Structure)에 저장되는
    것을 특징으로 하는 방법.
  6. 제5항에 있어서,
    상기 GPU를 관리 및 제어하는 단계는,
    상기 생성된 GPU 엔클레이브에서 상기 MMIO영역에 매핑된 가상 주소를 GPU장치 드라이버에 요청하고, EGADD명령으로 가상 주소와 GPU MMIO 영역의 물리적 주소 쌍을 포함하는 주소 정보를 하드웨어에 등록하고, CPU에서 상기 등록된 주소 정보가 상기 GPU장치에 포함되는지 확인하여 상기 주소 정보를 TGMR테이블에 저장하는
    것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 GPU를 관리 및 제어하는 단계는,
    상기 GPU 엔클레이브가 생성되어 로드됨에 따라 GPU 상태를 초기화하여 GPU의 잠재적인 악성 코드를 정리하고, 상기 GPU엔클레이브가 생성되기 전에 손상 가능성이 있는 GPU BIOS를 읽고 측정하는 것을 포함하고,
    상기 사용자 엔클레이브는 상기 GPU 엔클레이브를 검증하고, 상기 GPU엔클레이브에서 측정된 GPU BIOS의 결과를 수신하는
    것을 특징으로 하는 방법.
  8. 컴퓨터로 구현되는 컴퓨팅 보호 시스템에 의해 수행되는 컴퓨팅 보호 방법에 있어서,
    이종 컴퓨팅을 사용하는 환경에서 CPU 및 GPU의 데이터를 보호하기 위하여, GPU 엔클레이브(Enclave)에서 GPU MMIO 영역에 액세스하여 GPU를 관리 및 제어하는 단계
    를 포함하고,
    상기 GPU를 관리 및 제어하는 단계는,
    GPU엔클레이브를 생성하여 GPU MMIO영역을 등록하면, 상기 GPU 엔클레이브에서 상기 GPU MMIO영역을 통해 명령을 전송하여 GPU를 단독으로 제어하고, 상기 GPU MMIO영역에 의해 액세스되는 PCIe 인터커넥트를 통하여 GPU에 대한 명령 및 데이터 경로가 보호되고, 상기 GPU MMIO 영역의 액세스의 유효 여부를 확인하기 위하여 GECS 및 TGMR 데이터 구조를 사용하여 상기 GPU MMIO 영역의 주소 변환을 보호하는
    것을 특징으로 하는 방법.
  9. 제1항, 제4항, 제8항 중 어느 한 항에 있어서,
    상기 GPU를 관리 및 제어하는 단계는,
    사용자 엔클레이브와 상기 GPU 엔클레이브 간에 전송된 데이터의 기밀성과 무결성을 보장하는 통신 채널을 구축하는
    것을 특징으로 하는 방법.
  10. 제9항에 있어서,
    상기 GPU를 관리 및 제어하는 단계는,
    상기 사용자 엔클레이브와 상기 GPU 엔클레이브에서 접근 가능한 공유 메모리 영역이 통신에 사용되고, 상기 사용자 엔클레이브와 상기 GPU 엔클레이브 간 하드웨어 지원 로컬 증명을 수행하는
    것을 특징으로 하는 방법.
  11. 제10항에 있어서,
    상기 GPU를 관리 및 제어하는 단계는,
    상기 로컬 증명을 통해 신뢰를 구축함에 따라 키 교환 프로토콜을 사용하여 공유 대칭 키를 생성하고, 상기 사용자 엔클레이브와 상기 GPU 엔클레이브에서 접근 가능한 공유 메모리 간에 기록된 데이터가 공유 대칭 키로 암호화되고, 상기 암호화된 데이터가 복호화될 경우, 메시지 인증 코드(MAC)를 통하여 데이터에 대한 무결성을 검증하는
    것을 특징으로 하는 방법.
  12. 제1항에 있어서,
    상기 GPU를 관리 및 제어하는 단계는,
    GPU 메모리에 매핑된 GPU MMIO 영역에 데이터를 쓰거나, GPU DMA 엔진을 사용하여 데이터를 상기 사용자 엔클레이브 및 상기 GPU 엔클레이브 간 공유 메모리에서 GPU 메모리로 복사하는
    것을 특징으로 하는 방법.
  13. 컴퓨터로 구현되는 컴퓨팅 보호 시스템에 있어서,
    컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세

    를 포함하고,
    상기 적어도 하나의 프로세서는,
    이종 컴퓨팅을 사용하는 환경에서 CPU 및 GPU의 데이터를 보호하기 위하여, GPU 엔클레이브(Enclave)에서 GPU MMIO 영역에 액세스하여 GPU를 관리 및 제어하는 과정을 처리하고,
    상기 GPU를 관리 및 제어하는 과정은,
    GPU 엔클레이브를 생성하여 GPU MMIO영역을 등록하면, 상기 GPU 엔클레이브에서 상기 GPU MMIO영역을 통해 명령을 전송하여 GPU를 단독으로 제어하고, 상기 GPU MMIO영역에 의해 액세스되는 PCIe 인터커넥트를 통하여 GPU에 대한 명령 및 데이터 경로가 보호되고, 상기 생성된 GPU 엔클레이브에서 상기 GPU에 대한 사용자 액세스 인터페이스를 제공하여 단일의 사용자 엔클레이브에서 상기 GPU가 실행되도록 제한하는 독점 실행 모드를 통하여 복수의 사용자의 GPU 실행으로 발생하는 데이터의 유출을 방지하는
    것을 특징으로 하는 시스템.
KR1020180070169A 2018-06-19 2018-06-19 하드웨어 보안 기술 기반 gpu 컴퓨팅 보호 기법 KR102105760B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180070169A KR102105760B1 (ko) 2018-06-19 2018-06-19 하드웨어 보안 기술 기반 gpu 컴퓨팅 보호 기법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180070169A KR102105760B1 (ko) 2018-06-19 2018-06-19 하드웨어 보안 기술 기반 gpu 컴퓨팅 보호 기법

Publications (2)

Publication Number Publication Date
KR20190142910A KR20190142910A (ko) 2019-12-30
KR102105760B1 true KR102105760B1 (ko) 2020-04-29

Family

ID=69103135

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180070169A KR102105760B1 (ko) 2018-06-19 2018-06-19 하드웨어 보안 기술 기반 gpu 컴퓨팅 보호 기법

Country Status (1)

Country Link
KR (1) KR102105760B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11048800B2 (en) * 2018-12-17 2021-06-29 Intel Corporation Composable trustworthy execution environments

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949369A (zh) * 2020-08-03 2020-11-17 上海交通大学 面向图形处理器的可信执行环境构建方法及系统
KR102365263B1 (ko) * 2020-11-23 2022-02-21 한국과학기술원 하드웨어 기반의 gpu 메모리 보호를 위한 효율적인 암호화 방법 및 장치
CN113591098B (zh) * 2021-06-11 2024-03-26 浙江大学 一种基于sgx的远程安全异构计算方法和系统
CN114359015B (zh) * 2021-12-08 2023-08-04 北京百度网讯科技有限公司 数据传输方法、装置和图形处理服务器
CN116611124B (zh) * 2023-05-25 2024-04-05 南京恒木兴信息科技有限公司 一种gpu可信执行环境构建方法、系统及数据传输方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140337983A1 (en) 2013-05-10 2014-11-13 Xiaozhu Kang Entry/Exit Architecture for Protected Device Modules
US20180114012A1 (en) 2016-10-20 2018-04-26 Kapil Sood Trusted packet processing for multi-domain separatization and security

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140337983A1 (en) 2013-05-10 2014-11-13 Xiaozhu Kang Entry/Exit Architecture for Protected Device Modules
US20180114012A1 (en) 2016-10-20 2018-04-26 Kapil Sood Trusted packet processing for multi-domain separatization and security

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Miao Yu et al, "Trusted Display on Untrusted Commodity Platforms", Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security(2015.10.)
나선진, "이종 컴퓨팅 환경에서 안전한 실행 환경 제공을 위한 GPU 아키텍처 연구", 석사학위논문(2018.02.)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11048800B2 (en) * 2018-12-17 2021-06-29 Intel Corporation Composable trustworthy execution environments

Also Published As

Publication number Publication date
KR20190142910A (ko) 2019-12-30

Similar Documents

Publication Publication Date Title
KR102105760B1 (ko) 하드웨어 보안 기술 기반 gpu 컴퓨팅 보호 기법
US11836276B2 (en) Peripheral device with resource isolation
Jang et al. Heterogeneous isolated execution for commodity gpus
Evtyushkin et al. Iso-x: A flexible architecture for hardware-managed isolated execution
US9989043B2 (en) System and method for processor-based security
Champagne et al. Scalable architectural support for trusted software
US11775659B2 (en) Cryptographic separation of memory on device with use in DMA protection
US10073977B2 (en) Technologies for integrity, anti-replay, and authenticity assurance for I/O data
US10095862B2 (en) System for executing code with blind hypervision mechanism
US10860718B2 (en) Protecting computer systems used in virtualization environments against fileless malware
Li et al. Secure virtual machine execution under an untrusted management OS
KR101268767B1 (ko) 정보 흐름 추적 및 보호
US11755753B2 (en) Mechanism to enable secure memory sharing between enclaves and I/O adapters
Richter et al. Isolating operating system components with Intel SGX
Deng et al. Strongbox: A gpu tee on arm endpoints
US20050165783A1 (en) Secure direct memory access through system controllers and similar hardware devices
Zaidenberg Hardware rooted security in industry 4.0 systems
Kornaros et al. Hardware support for cost-effective system-level protection in multi-core socs
Dubrulle et al. Blind hypervision to protect virtual machine privacy against hypervisor escape vulnerabilities
Sahita et al. Security analysis of confidential-compute instruction set architecture for virtualized workloads
Kaplan Hardware VM Isolation in the Cloud: Enabling confidential computing with AMD SEV-SNP technology
Yu An I/O Separation Model and its Applications to On-Demand I/O on Commodity Platforms
KR102192328B1 (ko) Sgx 상의 입력 채널을 보호하기 위한 고립된 인터럽트 핸들러를 포함하는 프로세서 및 인터럽트 처리 방법
Liu et al. Secure-Turtles: Building a Secure Execution Environment for Guest VMs on Turtles System.
US20230098991A1 (en) Systems, methods, and media for protecting applications from untrusted operating systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant