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 아키텍처의 구조와 원리' 저자>
* 유튜브 소개 영상
'시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 > 1장: Arm 프로세서 소개' 카테고리의 다른 글
[ARM프로세서] 시스템 반도체 개발 과정 오버뷰(Overview) (0) | 2023.06.10 |
---|---|
[ARM프로세서] CPU 캐시(Cache)란 (0) | 2023.06.10 |
[ARM프로세서] 익셉션(Exception) 소개 (0) | 2023.06.10 |
[ARM프로세서] 함수 호출 규약(Calling Convention)이란 (0) | 2023.06.10 |
[ARM프로세서] ARMv7: ARM 동작 모드란 (0) | 2023.06.10 |