트러스트존의 유래를 설명하기에 앞서 해커가 시스템에 침투해 해킹하는 것을 방지하기 위해 시스템을 설계하는 과정을 언급할 필요가 있습니다.

 

2000 초부터 다양한 소프트웨어 기술들이 소개되고 발전했는데, 이에 비례해 해킹 기술도 업그레이드됩니다. 해커들이 다양한 소프트웨어 기법을 활용해 시스템을 공격하면서 해킹의 공격 루트가 다양해집니다. 디바이스 드라이버를 시작으로 네트워트 패킷이나 서버를 통해 시스템을 침입하는 경로가 늘어났습니다.

 

많은 IT 업체들이 해킹으로 피해를 보면서 보안 환경을 구축할 있는 보안 시스템의 필요성을 절감하기에 이르렀습니다. 그래서 IT업체들은 중요한 데이터를 암호화하거나 해커의 공격으로부터 보호할 있는 시스템을 설계합니다. 고육지책으로 보안과 관련된 기능을 제공하는 하드웨어 부품을 시스템에 탑재합니다. 같은 노력으로 중요한 데이터는 보호할 있으나 회로 설계나 소프트웨어의 복잡도가 늘어나고, 결과로 제품의 가격이 높아집니다.

 

결국 CPU 아키텍처에서 보안과 관련된 기능(데이터 암호화, 복호화) 제공해 처음부터 보안을 고려해 시스템을 설계할 있는 환경이 구축되면 좋겠다는 요구사항이 생겼습니다. 특히 SoC 벤더나 보안 업체가 효율적으로 보안 환경을 구축할 있는 아키텍처가 필요했습니다. 또한  소프트웨어가 공격 당할 있는 취약점이 너무 다양한데, 이를 어떻게 방어할지에 대해 고민했습니다.

 

고민 끝에 아예 보안 수준을 높인 운영체제(Trusted OS) 실행될 있는 보안 실행 영역을 정의해 해커로부터 받는 공격 포인트를 하나로 줄이자는 방향으로 시스템 아키텍처를 설계했고, 과정에서 트러스트존이 만들어졌습니다.

 

그럼 트러스트존은 언제 처음 배포됐을까요? 트러스트존은 2004 Arm1176JZ-S™ 프로세서에 탑재됐으며, 현재 Cortex-A 제품군에 포함돼 있습니다.

 

 

[정보] TEE(Trusted Execution Environment)란?
TEE는 프로세서 내부에서 보안 수준이 높은 소프트웨어 플렛폼이 실행될 수 있는 환경을 뜻합니다. 이를 위한 다양한 표준을 세워야 하는데 이를 TEE Committee 단체에서 진행합니다.  

 

.

 

 

 

트러스트존은 Arm 아키텍처가 제공하는 보안 확장 기술로서 IT 업계에서 많이 활용됩니다. 트러스트존과 관련된 명령어나 레지스터를 활용해 보안 업체나 SoC 벤더는 보안 환경을 구축할 있습니다. 많은 휴대폰과 디지털 TV 트러스트존이 활성화된 상태로 Arm 프로세서가 실행 중입니다.

 

그렇다면 트러스트존이란 어떤 기술일까요? 트러스트존은 다음과 같은 콘셉트로 설계됐다고 설명할 있습니다.

 

소프트웨어나 하드웨어적으로 CPU 내부에 신뢰할 있는 보안 영역을 확보하자!

 

CPU 내부에 신뢰할 있는 보안 영역을 시큐어 월드(secure world)라고 정의하고, 나머지 영역을 논시큐어 월드(non-secure world) 정의합니다. 트러스트존은 시큐어 월드에 보안성이 높은 시큐어 , 시큐어 OS 실행될 있는 환경을 제공하기 위해 설계됐습니다.   

 

ARM 아키텍처는 운영체제에서 다양한 구조로 시스템을 설계할 수 있게 부가 기능(Extensions)을 지원합니다. 그 중 대표적인 기능이 트러스트 존(Trustzone)입니다. 
 
트러스트 존(Trustzone) 소개
 
트러스트 존은 ARM 아키텍처에서 지원하는 Security Extention(보완 확장) 기능으로, 여러 보안 애플리케이션이 ARM의 트러스트 존을 활용해 구현돼 있습니다. 다른 관점으로 보완을 위한 추가 기능이라고 볼 수 있습니다.
 
ARM 아키텍처에서 보완을 위한 트러스트 존을 지원하는 이유는 무엇일까요? 바로 해킹으로부터 시스템을 보호하기 위해서인데요, 사실 예전부터 소프트웨어 분야에서 하드웨어 제조 분야까지 보안을 위협하는 해킹의 위험이 항상 존재했습니다. 컴퓨터의 기술이 발전함에 따라 시스템을 해킹할 수 있는 기법도 업그레이드 되고 있어, 개인정보와 국가 및 기업의 기밀 유출 방지를 위한 보완의 필요성이 계속 강조되고 있습니다. 그래서 해킹과 같이 보안을 위협하는 공격에 대응하기 위해 ARM 프로세서는 신뢰할 수 있는 실행 환경을 위해 소프트웨어 구조를 지원 하는데, 이를 트러스트 존(Trustzone)이라고 합니다. 
노멀 월드와 세큐어 월드란
 
트러스트 존의 개념을 이해하려면 먼저 노멀 월드와 세큐어 월드에 대해 이해를 할 필요가 있습니다. 노멀 월드는 일반적인 운영체제나 커널이 동작하는 실행 환경이며, 세큐어 월드는 트러스트 존이 동작하는 실행 환경입니다. 여기서 월드는 실행 환경 혹은 모드와 유사한 개념으로 사용됩니다.
 
다음 그림을 보면서 노멀 월드와 세큐어 월드에 대해 알아봅시다.
 

 
그림 1.8 트러스트 존의 노멀월드와 세큐어 월드의 개념
 
노멀 월드에서 보안을 필요로 하는 모듈에서 "smc"라는 ARM 어셈블리 명령어를 실행하면 노멀 월드에서 세큐어 월드로 실행 흐름이 바뀝니다. 이어서 오른쪽 박스 아랫 부분을 모니터 모드가 보이는데, 모니터 모드는 노멀 월드에서 세큐어 월드로 진입하거나 반대로 세큐어 월드에서 노멀 월드로 다시 복귀할 때의 게이트 키핑(Gatekeeping)과 같은 역할을 수행합니다.
 
그림을 보면서 트러스트 폰의 주요 개념을 살펴봤는데요, 노멀 월드와 세큐어 월드의 주요 특징은 다음과 같습니다.
 
   ● 노멀월드와 세큐어 월드 별로 각각 서로 다른 페이지 테이블이 있어, 페이지 테이블을 쉽게 해킹할 수 없도록 설정해줍니다.
 
   ● 노멀 월드에서 세큐어 월드가 실행되는 메모리 공간에 직접 엑세스할 수 없습니다. 노멀월드에서 세큐어 월드로 진입하기 위해서는 세큐어 모니터 콜(Secure Monitor Call)을 발생시켜야 하며, 이 밖에 다른 방법으로 세큐어 월드의 리소스(메모리 주소, 실행 코드)에 접근하려고 시도하면 시스템이 리셋되도록 설정할 수 있습니다.
 
실전 프로젝트에서는 ARM의 트러스트 존을 어떻게 활용할까?
 
SoC 벤더나 제품 업체에서는 ARM의 트러스트 존을 다양한 방식으로 활용해 보안을 유지합니다. 이 중에 가장 대표적인 방식을 소개합니다.
 
첫째, 노멀 월드에서 "smc" 명령어를 실행할 때 아큐먼트를 지정합니다. 만약 레지스터 r0에 아큐먼트를 전달해 smc 명령어를 실행하면 세큐어 월드에서 이에 따라 각기 다른 기능을 수행하도록 구현할 수 있습니다.
 
둘째, 특정 메모리 영역은 세큐어 월드에서만 접근할 수 있도록 지정할 수 있습니다. 만약 노멀 월드에서 세큐어 월드에서만 접근할 수 있는 메모리 주소 공간에 엑세스를 하면 FIQ를 트리거해 시스템을 리셋 시키거나 다른 예외 처리 동작을 수행할 수 있습니다.
 
셋째, 세큐어 월드에서 실행되는 코드는 별도의 파티션에서 다운로드돼 실행되도록 설계할 수 있습니다.
 
---
"이 포스팅이 유익하다고 생각되시면 공감 혹은 댓글로 응원해주시면 감사하겠습니다. "혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!"
 
​Thanks,
Guillermo Austin Kim(austindh.kim@gmail.com)
---
< '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' 저자>
 
 
* 유튜브 소개 영상

+ Recent posts