ARM프로세서

포스트: 75|조회수: 0|TERM
Items

Posts

75 posts

[Arm프로세서][트러스트존] Armv8: 시큐어 월드에서 Trusted OS는 어떻게 구동할까?

Guillermo Austin Kim|2022년 1월 9일

논 시큐어 월드에는 우리가 알고 있는 운영체제의 커널이 구동됩니다. 예를 들어 리눅스 커널이나 윈도우 커널이 논 시큐어 월드에서 실행됩니다. 그렇다면 시큐어 월드에는 어떤 소프트웨어가 구동될까요? 바로 RTOS가 실행됩니다. 여기서 기억해야 할 사실은 트러스트 존의 RTOS는 독자적으로 스케줄링하면서 시스템을 제어하는게 아니라, 논 시큐어 월드에 의존적으로 동작한다는 점입니다. 대부분의 경우 논 시큐어 월드에서 실행 중인 커널에서 smc(Secure Monitor Call) 명령어를 실행하면, 이에 반응해 시큐어 월드의 RTOS는 동작하게 됩니다. 쉽게 설명드리면 시큐어 월드의 RTOS는 마치 시스템 콜 핸들러와 유사하게 동작한다고 보면 됩니다. 시스템 콜 핸들러는 스스로 실행하지 않습니다. 유저 공간

[Arm프로세서] 트러스트존(TrustZone): 익셉션 레벨과 시큐어 모드와의 관계

Guillermo Austin Kim|2022년 1월 3일

트러스트존은 실행 흐름은 시큐워 월드와 논 시큐어 월드로 분류할 수 있는데, 시큐워 월드에 보안성의 수준을 높인 Trusted OS를 구현합니다. 그런데 세세한 트러스트존의 설계 방식은 Arm 아키텍처마다 약간 다릅니다. 이는 Armv8 아키텍처에도 적용됩니다. 다음 그림을 보면서 Armv8 아키텍처의 트러스트존을 알아봅시다. 그림 11.6 Armv8 아키텍처에서 논 시큐어 월드와 시큐어 월드 위 그림은 Armv8 아키텍처에서 논 시큐어 월드와 시큐어 월드가 처리되는 흐름을 나타냅니다. 그림의 가장 왼쪽 부분을 보면 EL0-EL3이 보입니다. 이는 익셉션 레벨을 의미하는데, Armv8 아키텍처에서는 익셉션 레벨을 기준으로 익셉션이 처리되고 실행 권한이 관리됩니다. 그림의 왼쪽 상단에는 논 시큐어

[Arm프로세서] 트러스트존(TrustZone): 시큐어 월드의 익셉션 벡터 핸들러 구현

Guillermo Austin Kim|2022년 1월 2일

Armv7 아키텍처에서 트러스트존의 기능을 제대로 활용하려면 3개의 익셉션 벡터 핸들러가 구현돼 있어야 합니다. 이 내용을 다음 그림을 보면서 알아봅시다. 그림 11.5 시큐어 월드와 연관된 익셉션 벡터의 위치 먼저 그림의 가장 왼쪽 윗 부분에 있는 VBAR(NS)는 논 시큐어 상태에서 정의된 익셉션 벡터의 베이스 주소를 나타냅니다. 트러스트존의 개념을 배제하고 익셉션 벡터를 떠올리면 이 부분이 익셉션 벡터의 베이스 주소인 것입니다. 이번에는 왼쪽 아랫 부분에 보이는 MVBAR(NS)는 모니터 모드에서 처리되는 익셉션 벡터이 베이스 주소를 나타냅니다. 논 시큐어 상태에서 smc 명령어를 실행하면 MVBAR(NS) 주소에 +0x8을 더한 주소로 프로그램 카운터가 브랜치됩니다. 마지막으로 가장 오른쪽에

[Arm프로세서][Armv7] 트러스트존(TrustZone): 시큐어 월드로 실행 흐름이 변경되는 과정

Guillermo Austin Kim|2021년 12월 29일

이번에는 Armv7 아키텍처에서 정의된 전체 동작 모드를 보면서 논 시큐어 월드에서 시큐어 월드로 실행 흐름이 바뀌는 과정과 이 때 SCR.NS 비트가 어떻게 바뀌는지 알아봅시다. 그림 11.4 모드, privilege 레벨과 시큐리티 상태들 먼저 그림을 넓은 시야로 봅시다. 그림의 왼쪽 부분은 논 시큐어 상태, 오른쪽 부분은 시큐어 상태를 나타냅니다. 각 박스 내에 PL이 보이는데 이는 Privilege level의 약자이며 권한 수준을 나타냅니다. 권한 수준이 낮은 User 모드는 PL0이고, 시스템 레벨로 권한 수준이 있는 System, IRQ, Undef, Abort, Supervisor 모드는 PL1입니다. 그런데 그림의 오른쪽 부분에도 PL0에 해당되는 User 모드, PL1에 해당되