>> 연구실 연구 환경 소개 <<

[Current Research] Hardware support to ensure the security of computing devices

하드웨어에 기반한 보안 솔루션에 대한 연구를 수행한다. 아키텍쳐를 수정하는 연구, 아키텍쳐의 수정 없이 외부에 하드웨어 모듈을 추가하는 방식의 연구, 아키텍쳐 수정 없이 기존 아키텍쳐에서 제공하는 특수한 하드웨어 기능들을 이용한 보안 솔루션 연구로 크게 나눌 수 있다.
아키텍처를 수정하는 연구
Instruction Set, pipeline 등 CPU 내부 로직을 수정하여 컴퓨팅 디바이스의 보안을 강화한다. 소프트웨어 만으로는 불가능한 높은 수준의 보안이 가능하며 소프트웨어보다 효율적인 솔루션 구현이 가능하다. UC Berkeley 에서 시작되어 학계와 산업체에서도 많은 관심을 받고 있는 오픈소스 아키텍쳐인 Risc-V 아키텍쳐를 주로 수정하여 FPGA에서 실험을 하고 있다.

Hardware Kernel Integrity Monitor(Dongil Hwang, Donghyun Kwon, Myunghoon Yang, Seongil Jeon)
riskim.png
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 (Jangseop Shin, Dongil Hwang)

hard.png

기존의 많은 프로그램들은 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 외부에서 호스트의 동작을 감시하거나 기타 다른 보안 기능을 수행하는 하드웨어 모듈을 설계한다.

Event Monitoring based External Hardware for Attack Detection (Donghyun Kwon, Junmo Park)

monitoring.png
컴퓨팅 시스템은 동작하는 동안 특정 프로그램의 코드가 프로세서에서 수행된다든지, 어떠한 데이터가 저장된 메모리 영역을 프로세서가 접근한다든지 등 다양한 행위를 보인다. 본 연구는 이렇게 컴퓨팅 시스템이 동작하는 중에 보이는 행위들을 감시하는 방법을 통해 특정 규칙을 벗어난 비정상적인 행위가 나타날 경우 이를 통해 컴퓨팅 시스템에 대한 공격을 탐지하려는 것이다. 이 때 이러한 행위들을 효율적으로 추출하기 위해 본 연구에서는 프로세서의 디버그 인터페이스를 활용하거나 시스템 버스 상에 나타나는 이벤트들을 감시하는 전용 하드웨어를 개발하고 있다.  또한 이러한 수행중에 추출되는 방대한 양의 이벤트들을 효율적으로 처리하기 위해 이를 위한 전용 코프로세서를 설계하고 있다. 한편 이러한 보안 기능을 위한 전용 코프로세서를 설계함으로써 보안 연산의 가속 뿐만 아니라 공격으로부터 안전한 수행 환경을 보안 연산에 제공할 수 있을 것을 기대하고 있다.

Code based Hot Hardware Wallet (Junmo Park, Seongil Jeon, Hyunjun Kang)

wallet.png
최근 암호 화폐가 보편화 됨으로 인해, 개인 혹은 거래소가 소유하고 있는 암호화폐를 안전하게 보관하는 이슈가 함께 떠오르고 있다. 온 라인(서버)에서 개인 키를 관리하는 핫 월렛을 사용할 때, 어디서나 사용자의 계정 정보를 통해 사용자의 지갑에 접근 가능하다는 장점이 있지만 개인 키가 온 라인 상에 있다는 점이 보안 상 취약하다는 단점이 있다. 이를 극복하기 위해, 물리적인 하드웨어 토큰 형태로 만들어진 콜드 월렛이 등장한다. 이는 개인 키가 하드웨어에 저장되어 오프 라인 상에만 존재하기 때문에 핫 월렛보다는 안전하다고 볼 수 있다. 하지만, 콜드 월렛은 사용자가 항상 하드웨어 토큰을 지니고 다녀야만 거래를 할 수 있다는 불편한 점이 있다.
이에 연구실에서는 하드웨어 월렛의 안정성을 유지함과 동시에 핫 월렛의 편의성을 유지할 수 있도록 서버와 독립된 하드웨어인 FPGA에 암호화폐 월렛의 기능을 구현한다. 

Oblivious RAM (Hyunyoung Oh)

oram.png

Cloud 등 서버의 저장 공간을 사용자가 사용하는 경우 어디서나 손쉽게 데이터에 접근하고 수정할 수 있다는 장점이 있지만, 서버 운영자 혹은 데이터 탈취를 목적으로 하는 공격에 노출될 수 있어 데이터의 기밀성을 지키기 위한 추가 조치가 필요하다. 데이터를 암호화하는 방법이 대표적으로 사용되지만 이것만으로는 그 비밀을 보장하기 어렵다. 최근 연구에 의하면 데이터에 접근하는 패턴만으로도 개인의 민감한 정보를 알아낼 수 있으며, 심지어 암호화에 사용된 키의 유추까지 가능함이 증명이 되었다. 따라서 데이터 값 뿐만 아니라 데이터 접근 패턴까지 보호해야하는데, 그 방법 중의 하나인 ORAM (Oblivious RAM)에 대한 연구가 활발하다.
ORAM에서는 각각의 접근 패턴이 구별되지 않도록 더미 접근을 추가하고 데이터 저장 위치를 매번 랜덤하게 바꿔주는 등의 동작을 추가하여, 예를 든다면, 현재 A라는 데이터에 접근하고 있는지 B라는 데이터에 접근하고 있는지 외부에서는 구별할 수 없도록 한다. 하지만 이러한 추가 동작으로 인해 기존 시스템에 많은 성능 부하를 유발하며, 또한 이러한 동작을 실시하는 ORAM 컨트롤러를 공격으로부터 안전한 곳에 구축해야하기 때문에 위 그림처럼 (a) Cloud 서버와 remote로 떨어진 안전한 저장공간을 제공하는 client를 사용하거나, (b) 기존 CPU architecture를 수정하여 CPU chip안에 내장해야한다는 제약이 존재한다. 하지만 (a)의 경우에는 매 데이터에 대한 접근이 네트워크 대역폭에 의해 제약을 받는다는 단점이 있고, (b)의 경우에는 기존 CPU 하드웨어를 수정해야되서 바로 적용되기 어렵다는 단점이 있다. 이에 본 연구실에서는 FPGA를 활용하여 ORAM의 성능을 개선하는 동시에 실제 시스템에 적용하기 용이한 하드웨어 아키텍쳐에 대한 연구를 수행하고 있다.

기존 아키텍쳐의 특수 기능을 이용하는 연구
하드웨어를 설계 또는 수정하는 연구들은 기존의 하드웨어 설계에 제한되지 않는 보안 솔루션을 제시할 수 있는 장점이 있는 반면, 실제 솔루션을 현장에 적용하기가 매우 어렵다는 단점이 있다. 한편, Intel, ARM와 같은 널리 쓰이는 CPU 아키텍쳐도 오랜 기간 개발되면서 다양한 기능이 들어가 있다. 이들 기능 중에는 존재하지만 잘 알려지지 않거나 쓰이지 않는 기능, 보안과는 상관없는 목적을 위해 개발된 기능, 보안을 목적으로 개발되었지만 효과적인 사용을 위한 연구가 필요한 기능 등이 있을 수 있다. 연구실에서는 이러한 기능들을 분석하고 이를 이용한 효율적인 보안 솔루션에 대해 연구를 수행하고 있다. 

Instruction level data isolation (Donghyun Kwon, Jangseop Shin, Giyeol Kim)

많은 프로그램들이 보안상 중요한 데이터를 다룬다. 예를 들면, 기밀성이 유지되는 통신을 위한 SSL 프로토콜에서 쓰이는 Private key와 Session key 등이 대표적이다. 이러한 키들이 유출되면 인터넷에서 보내고 받는 메시지들이 노출이 될 수 있고, 악의를 가진 누군가가 타인을 사칭할 수도 있다. 문제는 일반적으로 프로세스는 하나의 가상 메모리 공간을 가지고, 프로그램의 어느 부분에서든지 아무 메모리 공간에 접근이 가능하기 때문에, 프로그램에 있는 취약점을 통해 메모리 공간 어딘가에 저장되어 있는 중요한 데이터가 유출되거나 조작될 가능성이 있다는 것이다. 이를 방지하기 위해 프로그램에서 해당 데이터를 꼭 접근해야만 하는 부분에서만 접근을 허용하고 나머지 부분에서는 접근을 못하도록 하는 방법이 있다. 하지만 일반적으로는 이러한 메모리 접근 권한을 제어하기 위해서는 어플리케이션에서 OS로의 시스템 콜이 필요하여 결과적으로 중요 데이터를 접근해야 할 때마다 시스템 콜을 필요로 하게 되고 이는 상당한 성능 오버헤드를 유발하게 된다. ARM에는 unprivileged load/store 라는 특별한 load/store 명령어가 있어 이를 이용하여 시스템 콜 없이도 제한적인 메모리 접근 권한 제어가 가능하다. 본 연구에서는 이를 이용하여 중요 데이터에 대한 접근을 제어하는 보안 솔루션을 제시한다.

Secure OS Privatization for Trusted Execution Environment (Donghyun Kwon, Jiwon Seo)
pros.png
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로 전이되는 것을 막을 수 있을 것을 기대한다.

0
0

Research

연구실 공동 연구 네트워크



링크: 경북대학교 순천대학교 영남대학교 숭실대학교 UNIST