[Current Research] Hardware-based Security
- 0
- 0
- 07-16
Hardware support to ensure the security of computing devices
하드웨어에 기반한 보안 솔루션에 대한 연구를 수행한다. 아키텍처를 수정하는 연구, 아키텍처의 수정 없이 외부에 하드웨어 모듈을 추가하는 방식의 연구, 아키텍처 수정 없이 기존 아키텍처에서 제공하는 특수한 하드웨어 기능들을 이용한 보안 솔루션 연구로 크게 나눌 수 있다.
아키텍처를 수정하는 연구
Instruction Set, pipeline 등 CPU 내부 로직을 수정하여 컴퓨팅 디바이스의 보안을 강화한다. 소프트웨어 만으로는 불가능한 높은 수준의 보안이 가능하며 소프트웨어보다 효율적인 솔루션 구현이 가능하다. UC Berkeley 에서 시작되어 학계와 산업체에서도 많은 관심을 받고 있는 오픈소스 아키텍처인 Risc-V 아키텍처를 주로 수정하여 FPGA에서 실험을 하고 있다.
Hardware Kernel Integrity Monitor(Dongil Hwang)
Kernel rootkit은 malware 중에서도 kernel을 공격하기 위해 만들어진 특별한 유형의 malware이다. Kernel이 장악 당할 경우 공격자는 임의로 kernel object를 수정하고 파일 접근 권한을 변경하는 등 시스템을 자신이 원하는 대로 조작할 수 있게 된다. 따라서 이러한 공격으로부터 OS kernel을 보호하기 위한 기존의 연구들이 있었으나, 소프트웨어 방식은 오버헤드가 매우 커 실제 사용이 어려웠으며, 외부에 하드웨어를 두어 감시하는 방식 역시 HW support의 부족으로 비효율적이고 보안성 또한 부족했다. 본 연구에서는 프로세서에 Security Interface를 추가하여 필요한 프로세서의 status를 추출하고 이를 사용해 Kernel Integrity를 검증하는 외부 하드웨어 모듈을 설계하였다.
Hardware-assisted Data Randomization for Mitigating Memory Vulnerabilities (Dongil Hwang)
기존의 많은 프로그램들은 C/C++로 짜여져 있고, 아직까지도 성능이 중요한 분야에서는 C/C++가 널리 사용되고 있다. 그런데 C/C++은 Buffer overflow나 Use-after-free와 같은 메모리 취약점으로 인해 공격자가 공격할 수 있어서 보안적으로 문제가 많다. Hardware-Assisted Randomization of Data 연구에서는 ISA에 특수한 load/store 명령어를 추가하여 이를 통해 모든 프로그램 데이터를 XOR key로 암호화하여 메모리에 저장한다. 이렇게 하면 공격자가 메모리 취약점을 이용하더라도 공격자가 원하는 값으로 메모리를 변조하기가 매우 힘들어진다. 성능 오버헤드를 최소화하기 위해 그림처럼 XOR key를 위한 캐시를 추가하고 파이프라인을 수정하였다.
외부 하드웨어 보안 모듈 설계
모바일 기기의 대부분에서 사용되는 ARM 아키텍처 기반 컴퓨팅 시스템은 CPU에 더하여 다양한 기능을 수행하는 하드웨어 모듈들과 코프로세서(Coprocessor)가 통합된 시스템온칩(SOC: System-On-Chip) 형태를 주로 갖는다. 이러한 SOC 형태의 디바이스에서는 CPU를 수정하는 것보다 외부에서 보안 기능을 수행하는 별도의 하드웨어 모듈을 설계하여 SOC에 통합하는 것이 현실적인 경우가 많다 (CPU는 다양한 기능으로 이미 매우 복잡한데다, 높은 클럭을 맞추기 위해 정교하게 설계가 되어 새로운 로직을 추가하는 것이 어렵고, ARM과 같은 상용 CPU는 소스가 공개되어 있지 않아 수정이 불가하다). 이러한 제약을 고려하여 CPU 외부에서 호스트의 동작을 감시하거나 기타 다른 보안 기능을 수행하는 하드웨어 모듈을 설계한다. 또한 본 연구에서는 최근 고성능, 고효율의 연산장치로 널리 사용되고 있는 FPGA를 보안 용도로 활용하여 좀 더 시스템에 손쉽게 설치할 수 있는 보안 시스템을 개발한다.
External Monitoring Hardware for Attack Detection (Hyunyoung Oh)
컴퓨팅 시스템은 동작하는 동안 특정 프로그램의 코드가 프로세서에서 수행된다든지, 어떠한 데이터가 저장된 메모리 영역을 프로세서가 접근한다든지 등 다양한 행위를 보인다. 본 연구는 이렇게 컴퓨팅 시스템이 동작하는 중에 보이는 행위들을 감시하는 방법을 통해 특정 규칙을 벗어난 비정상적인 행위가 나타날 경우 이를 통해 컴퓨팅 시스템에 대한 공격을 탐지하려는 것이다. 이 때 이러한 행위들을 효율적으로 추출하기 위해 본 연구에서는 프로세서의 디버그 인터페이스를 활용하거나 시스템 버스 상에 나타나는 이벤트들을 감시하는 전용 하드웨어를 개발하고 있다. 또한 이러한 수행중에 추출되는 방대한 양의 이벤트들을 효율적으로 처리하기 위해 이를 위한 전용 코프로세서를 설계하고 있다. 본 연구실에서는 전용 코프로세서를 SoC의 형태로 CPU와 결합하는 형태 뿐만 아니라 FPGA에 구현하여 CPU+FPGA 하이브리드 아키텍처에 적용할 수 있는 접근 모두를 연구하고 있다. 한편 이러한 보안 기능을 위한 전용 코프로세서를 설계함으로써 보안 연산의 가속 뿐만 아니라 공격으로부터 안전한 수행 환경을 보안 연산에 제공할 수 있을 것을 기대하고 있다.
FPGA-based secure storage and execution environments (Hyunyoung Oh, Dongil Hwang, Jiwon Chang, Kevin Nam, Myunghyun Cho)
클라우드 등 서버의 저장 공간을 사용자가 사용하는 경우 어디서나 손쉽게 데이터에 접근하고 수정할 수 있다는 장점이 있지만, 서버 운영자 혹은 데이터 탈취를 목적으로 하는 공격에 노출될 수 있어 데이터의 기밀성을 지키기 위한 추가 조치가 필요하다. 데이터를 암호화하는 방법이 대표적으로 사용되지만 이것만으로는 그 비밀을 보장하기 어렵다. 최근 연구에 의하면 데이터에 접근하는 패턴만으로도 개인의 민감한 정보를 알아낼 수 있으며, 심지어 암호화에 사용된 키의 유추까지 가능함이 증명이 되었다. 이에 본 연구실에서는 현재 Intel, Amazon, Microsoft와 같은 상용 클라우드에서 널리 사용되고 있는 FPGA를 활용하여 그 안에 데이터를 안전하고 효율적으로 저장하는 시스템을 설계하였다. 현재는 데이터에 대한 보호 뿐만 아니라 프로그램 수행시 노출되는 메모리 트레이스 등을 보호하여 안전한 프로그램 수행까지 지원하는 FPGA 기반의 SW/HW 통합 보안 시스템에 대한 연구를 진행하고 있다.
FPGA-based Trusted Execution Environment (TEE) on Mobile Device (Dongil Hwang)
최근들어 다양한 모바일 기기들에 FPGA가 탑재됨에 따라, 이를 활용하는 다양한 보안 연구를 진행 중이다. CPU+FPGA hybrid 시스템에서는 기본적으로는 특정 연산들의 가속을 위해서 FPGA 를 사용하지만, FPGA의 모든 자원이 항상 사용되고 있는 것은 아니므로, 남는 자원을 보안 연구의 목적으로 사용하는 것이다. 그 중에서도 최근에는 FPGA를 사용하여 Trusted Execution Environment (TEE)를 제공하고 FPGA 위에서 Trusted Application (TA)을 실행하기 위한 연구를 진행하였다. 기존의 ARM TrustZone이나 Intel SGX 역시 TEE를 제공하지만 TrustZone은 Third-party developer의 TA의 실행이 제한적이고 SGX는 TA와 주변기기(peripheral)들 간에 trusted path를 형성하는 것이 불가능하다. 본 연구에서는 FPGA 상에서 TA를 실행하고 각각을 샌드박싱하기 위한 메커니즘을 구현함으로써 기존 TEE들의 문제점을 해결하였다.
Fully homomorphic encryption acceleration (Hyunyoung Oh, Kevin Nam)
클라우드 컴퓨팅이 널리 사용됨에 따라 클라우드 서버에 저장된 혹은 서버로 전송된 사용자의 민감한 데이터에 대한 privacy 문제가 중요하게 부각되고 있다. 데이터에 대한 컨트롤 권한 뿐만 아니라 암호화 키와 같은 관리 권한까지 데이터의 원 소유자가 아닌 클라우드 관리자에게 있기 때문에 기존의 데이터 암호화 방식으로는 완벽한 보안을 제공하기 힘들다. 완전동형암호 (FHE)는 기존 암호 방식과 다르게 암호화된 데이터에 대한 연산이 가능하도록 지원하기 때문에 이러한 데이터의 privacy 문제를 해결할 수 있다. 하지만 완전동형암호의 연산은 큰 성능오버헤드를 유발하기 때문에 실제 시스템에 실용적으로 적용하기 어려운 한계를 지니고 있다. 이에 본 연구실에서는 최근 AI, 빅데이터와 같이 여러 복잡한 연산의 가속용도로 많이 활용되고 있는 FPGA 아키텍처를 기반으로 완전동형암호를 고속으로 처리할 수 있는 HW 엔진을 연구하고 있다.
기존 아키텍처의 특수 기능을 이용하는 연구
하드웨어를 설계 또는 수정하는 연구들은 기존의 하드웨어 설계에 제한되지 않는 보안 솔루션을 제시할 수 있는 장점이 있는 반면, 실제 솔루션을 현장에 적용하기가 매우 어렵다는 단점이 있다. 한편, Intel, ARM와 같은 널리 쓰이는 CPU 아키텍처도 오랜 기간 개발되면서 다양한 기능이 들어가 있다. 이들 기능 중에는 존재하지만 잘 알려지지 않거나 쓰이지 않는 기능, 보안과는 상관없는 목적을 위해 개발된 기능, 보안을 목적으로 개발되었지만 효과적인 사용을 위한 연구가 필요한 기능 등이 있을 수 있다. 연구실에서는 이러한 기능들을 분석하고 이를 이용한 효율적인 보안 솔루션에 대해 연구를 수행하고 있다.
Compiler-based Memory Safety using Hardware Memory Tagging Extension (Jiwon Seo, Inyoung Bang, Yungi Cho)
Spatial Memory Safety 는 여전히 중요한 문제이다. 최근 여러 아키텍처에서 이러한 Spatial Memory Safety 문제의 효율적인 완화를 위해 Memory Tagging Extension 하드웨어를 도입하였다. 예를 들면, SPARC 는 ADI (Application Data Integrity), ARM 에서는 v8.5에 MTE 를 추가하였다. MTE는 pointer와 memory location에 각각 tag를 부여할 수 있도록 하며, 매 memory access 시, dereferencing되는 pointer의 tag와 대상 memory location의 tag가 일치할 경우에만 메모리 access를 허용한다. 즉 memory object와 이에 접근이 허용된 pointer들에 동일한 tag를 할당함으로써, 잘못된 memory access를 차단할 수 있게 된다. 기존의 bounds checking 방식에서는 memory access 시마다 base와 bound를 explicit 하게 check하는 데에 상당한 오버헤드가 발생한다. 본 연구에서는 이를 해결하기 위해 MTE 와 컴파일러로 코드 분석을 통해 latency 증가 없이 legitimacy가 체크할 수 있는 보안 솔루션을 제시한다.
Secure OS Privatization for Trusted Execution Environment (Jiwon Seo)
ARM TrustZone은 ARM 아키텍처에서 제공하는 보안을 위한 하드웨어 기능으로, 시스템의 모든 하드웨어 및 소프트웨어들을 normal world와 secure world라고 하는 두개의 world로 나누고 secure world에 더 상대적으로 더 높은권한을 주어서 normal world에서 동작하는 소프트웨어 및 하드웨어로부터 secure world를 안전하게 지킬 수 있도록 한다. 따라서 기존의 ARM 기반의 컴퓨팅 기기들은 이를 활용해 일반 어플리케이션들과 운영체제는 normal world에 설치하고 secure world에는 secure OS라고 하는 전용 OS와 신뢰할 수 있는 어플리케이션들(Trusted Applications, TAs)만을 설치하여 이러한 TA들이 안전하게 수행할 수 있게 하는 방식을 취하고 있다. 하지만 모든 TA들이 하나의 secure OS에 설치될 경우 하나의 TA가 secure OS를 공격하는데 성공하면 그 secure OS 상에도 동작하는 모든 TA가 공격을 받게되는 위험이 존재한다. 따라서 본 연구에서는 TrustZone을 활용해 개별 TA들에게 보다 안전한 수행 환경을 제공하기 위해 각각의 TA마다 자신만의 secure OS를 가지도록 하는 Secure OS Privatization 기술을 개발하는 연구를 진행하고 있다. 이를 통해 하나의 TA를 통해 secure OS가 공격받더라도 그 피해가 다른 TA로 전이되는 것을 막을 수 있을 것을 기대한다.