[Arm프로세서] 트러스트존(TrustZone)의 유래
By Guillermo Austin Kim | 2021년 12월 27일 |
트러스트존의 유래를 소개하려면 먼저 시스템의 공격을 방지하기 위한 시스템의 설계 과정에 대해 언급할 필요가 있습니다. 2000년 초부터 다양한 소프트웨어 기술들이 소개되고 발전되는데, 이에 비례해 해킹 기술이 업그레이드됩니다. 해커들이 다양한 소프트웨어 기법을 활용해 시스템을 공격하면서 해킹의 공격 루트가 다양해집니다. 애플리케이션에서 디바이스 드라이버 그리고 네트워트 패킷이나 서버를 통해 시스템을 침입하는 경로가 늘어난 것입니다. 많은 IT 업체들이 해킹으로 피해를 보면서 보안 수준이 높은 시스템 아키텍처의 필요성을 절감합니다. 그래서 IT업체들은 중요한 데이터를 암호화해서 저장하거나 해커의 공격으로 보호 받을 수 있게 시스템을 설계하게 됩니다. 고육지책으로 보안과 관련된 기능(Feature)를
[Arm프로세서] Armv8: XEN 하이퍼바이저에서 익셉션 레벨을 체크
By Guillermo Austin Kim | 2021년 12월 14일 |
EL1에서 실행되는 리눅스 커널과 마찬가지로, EL2에서 구동되는 XEN 하이퍼바이저도 익셉션 레벨을 읽어서 제어하는 코드를 볼 수 있습니다. 이번에는 EL2에서 구동되는 XEN 하이퍼바이저에서 익셉션 레벨을 체크하는 루틴을 소개합니다. 이번에는 EL2에서 실행되는 XEN 하이퍼바이저의 check_cpu_mode 레이블의 구현부를 분석하겠습니다. check_cpu_mode:02 PRINT("- Current EL ")03 mrs x5, CurrentEL04 print_reg x505 PRINT(" -\r\n")0607 /* Are we in EL2 */08 cmp x5, #PSR_MODE_EL2t09 ccmp
[Arm프로세서][Armv7] 트러스트존(TrustZone): 시큐어 상태와 Secure Control Register(SCR)
By Guillermo Austin Kim | 2021년 12월 29일 |
트러스트존 아키텍처에서 논 시큐어 월드와 시큐어 월드를 기준으로 트러스트존의 주요 개념을 설명합니다. 그런데 Arm 아키텍처의 스팩 문서를 살펴보면 시큐어 상태와 논 시큐어 상태라는 용어를 만나게 됩니다. 시큐어 상태와 논 시큐어 상태는 시큐어 월드와 논 시큐어 월드와 거의 유사한 개념인데, 트러스트존의 구현 레벨에서 쓰이는 용어입니다. 먼저 시큐어 상태와 논 시큐어 상태에 대해 알아봅시다. 어떤 코드가 실행 중인데 현재 코드가 논 시큐어 월드 혹은 시큐어 월드에서 실행 중인지 어떻게 알 수 있을까요? Armv7 아키텍처에서는 이 정보를 저장하는 레지스터를 설계했는데 이를 Secure Control Register(SCR) 레지스터라고 합니다. 이번에는 Arm 스팩 문서를 보면서 Secure Cont
[Arm프로세서] 하이퍼바이저 관점의 익셉션 벡터 테이블 분석하기
By Guillermo Austin Kim | 2022년 2월 11일 |
이전 절에서 익셉션 벡터 테이블의 스팩을 분석했습니다. 이어서 EL2가 실행되는 하이퍼바이저 관점에서 익셉션 벡터 테이블을 분석하겠습니다. 다음은 하이퍼바이저가 실행되는 EL2에서 본 익셉션 벡터 테이블의 동작 방식을 나타낸 표입니다. 표 12.2 하이퍼바이저 관점에서 본 익셉션 벡터 테이블 'EL2 with SP_EL0' 열의 내용을 분석하겠습니다. 'EL2 with SP_EL0'은 익셉션 레벨에 상관없이 스택을 설정하는 조건에서 실행되는 익셉션의 종류 별 오프셋을 나타냅니다. 그런데 일반적으로 대부분의 하이퍼바이저에서 지원하지 않습니다. [정보]XEN 하이퍼바이저에서는 'EL2 with SP_EL0' 익셉션을 지원하지 않습니다. 이어서 'EL2에서 발생'로 표기된 부분을 보겠습니다. 0x