ARM프로세서

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

Posts

75 posts

[Arm프로세서] 트러스트존(TrustZone)이 필요한 이유

Guillermo Austin Kim|2021년 12월 20일

IT 기술이 발전하면서 사회 전반적으로 많은 분야에 소프트웨어가 활용되고 있습니다. 인터넷 뱅킹에서 학교 수업까지 우리 생활에서 프로그램을 자연스럽게 사용하고 있습니다. 이에 비례해 하드웨어에서 소프트웨어에 이르기 까지 보안을 위협하는 요소들이 늘어나고 있습니다. 시스템을 해킹할 수 있는 기법도 업그레이드 되고 있어, 개인정보와 국가 및 기업의 기밀 유출 방지를 위한 IT 보안(Security) 기술의 필요성이 계속 강조되고 있습니다. 그래서 IT 산업을 구성하는 다양한 업체와 학계에서 해킹과 같은 공격에 대응할 수 있는 안전 체계나 실행 환경(TEE: Trusted Execution Environment)을 구축하려는 노력을 기울여 왔습니다. IT 업체 중 메이저 CPU 프로세서 설계 업체 중 하나인 a

[Arm프로세서] Armv8: XEN 하이퍼바이저에서 익셉션 레벨을 체크

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프로세서] Armv8: 리눅스 커널에서 익셉션 레벨을 읽어서 제어하는 루틴

Guillermo Austin Kim|2021년 12월 6일

먼저 리눅스 커널이 부팅하는 과정에서 익셉션 레벨을 읽어서 제어하는 루틴을 소개합니다. Armv8 기반 리눅스 커널이 부팅을 할 때 el2_setup 레이블이 호출되는데, 이 레이블에서는 현재 익셉션 레벨을 읽어서 관련된 처리를 수행합니다. 다음은 el2_setup 레이블의 구현부입니다. SYM_FUNC_START(el2_setup)02 msr SPsel, #1 // We want to use SP_EL{1,2}03 mrs x0, CurrentEL04 cmp x0, #CurrentEL_EL205 b.eq 1f06 mov_q x0, (SCTLR_EL1_RES1 | ENDIAN_SET_EL1)07 msr sctlr_el1, x008 mov w0, #BOOT_CPU_MODE_EL1 // This cpu

[Arm프로세서] Armv8 익셉션 레벨과 privilege level

Guillermo Austin Kim|2021년 10월 22일

Armv8 아키텍처는 PL0-PL3까지 4개의 privilege levels(접근 권한)을 제공합니다. 여기서 소개하는 privilege levels은 Armv7 아키텍처에서 다룬 내용과 거의 유사합니다. [정보]privilege levels은 Arm 아키텍처에서만 지원할까요? 그렇지는 않습니다. x86을 포함한 대부분 CPU 아키텍처는 privilege levels와 같은 기능을 지원하는데, 주로 운영체제를 설계할 때 결함이 있을 수 있는 유저 애플리케이션으로부터 시스템을 보호하기 위한 용도로 사용됩니다. 리눅스 커널과 같은 운영체제 커널은 privileged level에서 실행이 되는데, privileged level에서만 주요 시스템 설정(시스템 레지스터, 인터럽트, 캐시 접근)을 할 수 있게 제한