Skip to content

기글하드웨어기글하드웨어

가전 / 가젯 / 테크 : 가전 제품, 멀티미디어, 각종 IT 기기와 여기에 관련된 기술의 이야기, 소식, 테스트, 정보를 올리는 게시판입니다.

Extra Form
참고/링크 http://pc.watch.impress.co.jp/docs/colum...29104.html

IoT 시대를 향한 보안 아키텍처

 

ARM은 IoT (The Internet of Things) 시대를 향한 임베디드 용 MCU (Microcontroller)에 보안 기능을 통합했습니다. IoT 디바이스에서 클라우드까지 엔드 투 엔드 보안 플랫폼을 제공하기 때문입니다. ARM이 가장 배려한 건 내장 MCU의 비용과 전력, 메모리의 한계 안에서 쉽게 처리할 수 있는 보안 기능을 구현하는 것입니다. 이를 위해 새로운 명령어 세트 ARMv8-M에 MCU에 최적화 된 버전의 보안 아키텍처 TrustZone을 통합했습니다.

 

ARM이 10 월에 발표한 차세대 Cortex-M 프로세서 제품군 Cortex-M23과 Cortex-M33은 ARMv8-M의 첫 프로세서 IP입니다. Cortex-M23 / 33은 옵션으로 TrustZone for ARMv8-M을 구현할 수 있습니다. 또한 ARM은 TrustZone에 대응할 수 있는 Cortex-M23 / 33 프로세서 코어 IP뿐만 아니라 다양한 TrustZone 지원 시스템 IP도 제공합니다. SoC (System on a Chip) 전체 시스템에서 TrustZone 솔루션을 제공하게 됩니다.

 

1.jpg

 

ARM은 TrustZone을 지원하는 Cortex-M 코어뿐만 아니라 시스템 IP를 포함하여 제공

 

2.jpg

 

3.jpg

 

ARM은 통합 솔루션으로 TrustZone을 Cortex-M에 제공

 

4.jpg

 

Cortex-M TrustZone으로 IoT 디바이스에 보안을 구현하기가 쉬워졌습니다.

 

5.jpg

 

ARM은 TrustZone 지원 임베디드 OS를 포함해 하드웨어와 소프트웨어의 통합 솔루션을 제공합니다.

 

Cortex-M TrustZone은 PC 나 스마트폰의 보안 아키텍처와 상당히 다른 방식을 취하고 있습니다. 구현에 필요한 다이 영역과 메모리 성능을 최소화했다는 것이죠. Cortex-M TrustZone은 예전부터 제공이 될 거라는 소문이 돌았던 바 있습니다.

 

 

기존의 Cortex-M 실행 모드를 확장

 

ARM의 Cortex-M MCU는 원래 2 개의 실행 모드가 있습니다. 핸들러 모드(Handler Mode)와 스레드 모드(Thread Mode)입니다. 다소 생소한 용어지만 간단히 소개하자면, 핸들러가 예외 처리 모드, 스레드 모드가 정상 작동 상태입니다. 예외 처리 요청이 들어오면 처리 모드로 들어가 인터럽트 핸들러를 실행, 처리가 끝나면 보통의 실행 스레드 모드로 돌아갑니다. 인터럽트 핸들러가 동작하는 상태를 핸들러 모드라고 정의합니다.

 

ARMv8-M은 이 두 모드에 보안 상태의 보안 스테이트와 기존대로 보호되지 않은 비보안 스테이트를 제공합니다. 이것의 장점은 기존 비보안 측의 소프트웨어 스택에서 거의 같은 실행이 가능하다는 것. 프로그래밍 모델 친화적 구현이 됐다고 할 수 있습니다.

 

6.jpg

 

7.jpg

 

비보안 스테이트로 실행하는 소프트웨어는 기존과 거의 똑같음

 

그러나 보안 모니터가 개입하면 ARMv8-M TrustZone은 하드웨어에서 분리된 보안 스테이트과 비보안 스테이트 사이에서 전환이 불가능합니다. 아래에서 설명하겠지만 이 때문에 ARMv8-M TrustZone은 모니터를 통하지 않고 직접 도메인을 가로질러 함수를 호출하는 보안 보호 구조를 도입했습니다. 이는 낮은 레이턴시로 스테이트 전환이 가능하게 한 요소입니다.

 

8.jpg

 

9.jpg

 

보안 모니터를 통하지 않고 ARMv8-M TrustZone이 낮은 레이턴시로 스테이트 전환이 가능

 

 

메모리 주소 기반으로 보안을 설정

 

Cortex-M23 / 33의 TrustZone 구현은 프로세서의 메모리 맵을 보면 알기 쉽습니다. 보안이 메모리 어드레스를 기준으로 이루어지기 때문입니다.

 

Cortex-M 제품군은 원래 32-bit의 선형 주소 공간으로 4GB를 특정 용도에 따라 분할했습니다. 대략적으로는 0.5GB 또는 1GB 씩 분할하고 각각 규정한 메모리 액세스의 동작이 다릅니다. 용도에 따라 구분했다는 점에서 대부분의 PC 용 CPU와는 상당히 다른 메모리 스페이스가 됩니다. 그리고 ARMv8-M TrustZone에서는 이 메모리 맵이 기존과 다릅니다.

 

비보안 스테이트 측에서 보이는 메모리 맵은 대략적인 구분 방식이 기존의 Cortex-M3 / M4와 거의 같습니다. 그러나 비보안 스테이트에 액세스할 수 없는 메모리 공간이 마련돼 보안 영역에 쓰입니다. 주변 장치나 메모리의 메모리 맵은 물론, 시스템 컨트롤 영역 안에도 비보안 스테이트에서는 보이지 않는 영역이 설정되어 있습니다.

 

10.jpg

 

기존의 Cortex-M3 메모리 맵

 

11.jpg

 

ARMv8-M의 비보안 스테이트 측에서 본 메모리 맵

 

아래의 그림에서 오른쪽 절반이 비보안 스테이트 메모리 맵이고, 하늘색이 비보안 메모리 영역입니다. 회색은 액세스할 수 없는 영역입니다. 시스템 컨트롤 부분은 어드레스 스페이스가 매우 좁으나 세분화돼 있기에 그림을 세로로 세워 표현했습니다.

 

12.jpg

 

신/구형 Cortex-M 메모리 맵교. 왼쪽이 Cortex-M23 / 33, 오른쪽이 기존의 Cortex-M3 / 4. 왼쪽의 Cortex-M23 / 33의 맵에선 왼쪽이 보안 스테이트, 오른쪽이 비보안 스테이트.
 

보안 스테이트 입장에서 보면 메모리 맵은 변합니다. 위 그림의 왼쪽 절반이 보안 스테이트입니다. 여기에서 녹색으로 표시한 보안 메모리 영역은 보안 스테이트만 액세스가 가능합니다. 또한 보안 스테이트는 비보안 메모리 영역도 모두 액세스 할 수 있습니다. 보안 스테이트과 비보안 스테이트는 같은 주소를 공유하나 권한이란 점에서 다릅니다.

 

13.jpg

 

ARMv8-M에서 보안 스테이트 관점에서 메모리 맵

 

 

세분화 된 메모리 영역에 보안 영역을

 

자세히 보면 블럭 다이어그램에 나온대로 온칩 RAM(보통 SRAM)과 온칩, 혹은 오프 칩 플래시는 보안 영역과 비보안 영역으로 분할됩니다. 마찬가지로 온칩 주변 장치 메모리 맵도 보안 또는 비보안 설정이 이루어집니다.

 

주변 장치와 RAM, 플래시(Code) 메모리 맵은 기존의 Cortex-M0 / M3 / M4의 메모리 맵의 각 영역이 보안 및 비보안으로 분할됩니다. Cortex-M0 / M3 / M4는 코드 영역(일반적으로 플래시 메모리)가 0x00000000-0x1FFFFFFF의 0.5GB 워킹 메모리 RAM(보통 SRAM)이 0x20000000-0x3FFFFFFF의 0.5GB, 주변 장치가 0x40000000-0x5FFFFFFF의 0.5GB에 매핑됩니다. Cortex-M23 / 33는 각각의 주소 영역에서 보안과 비보안의 두 영역이 설정됩니다.

 

보안 영역과 비보안 영역 관리는 모든 주소를 기반으로 합니다. 주소 보안 정책을 동적으로 관리하는 건 새로 추가된 유닛인 SAU (Security Attribution Unit) 입니다. SAU가 주소를 두 스테이트에 배분해 MPU (Memory Protection Unit)가 각각의 스테이트 메모리를 관리합니다. ARM의 Cortex-M 계는 MMU (Memory Management Unit)를 가지지 않아, 메모리 보호만 맡은 MPU를 더했습니다. MPU는 보안 및 비보안 모두 스테이트 뱅크에 나뉘어지며, MPU의 구성 레지스터가 2 세트로 나누어집니다. 보안 스테이트와 비보안 스테이트의 각각에 전용 리소스로 쓰입니다.

 

14.jpg

 

CPU에서 보낸 메모리 액세스 요청은 SAU (Security Attribution Unit)에 의해 필터링됨.

 

15.jpg

 

메모리의 룩업 테이블로 액세스 관리

 

16.jpg

 

보안 스테이트에서 모든 리소스에 액세스할 수 있지만 비보안 스테이트에선 제한된 사용만 가능

 

SAU 자체는 선택적으로 각 메모리 액세스 유닛마다 Implementation Defined Attribution Unit (IDAU) 인터페이스에 연결한 컨트롤 로직으로 제어할 수 있습니다. IDAU를 사용하는 경우에는 보안 및 비보안 주소 영역이 고정 매핑됩니다.

 

메모리 맵의 중앙은 오프 칩 RAM 0x60000000-0x9FFFFFFF 1GB와 오프 칩 주변 장치용 0xA0000000-0xDFFFFFFF 1GB가 있습니다. 오프 칩의 RAM과 주변의 2개 영역은 비보안 설정됐으며 일부 프레젠테이션만 보안 설정이 가능합니다. 자세한 내용은 아직 알려지지 않았습니다.

 

17.jpg

 

오프 칩 디바이스와 보안 영역 설정이 가능한 경우를 나타낸 슬라이드

 

 

보안 및 비보안으로 분할 된 ARMv8-M 어드레스 스페이스에서 핵심은 액세스 제어입니다. 보안 스테이트는 보안 영역과 비보안 영역 중에 주소를 일반 로드/스토어 명령으로 인출/액세스가 가능합니다. 반면 비보안 스테이트는 비보안 영역만 롣/스토어 명령으로 액세스가 가능합니다. 보안 영역에 대한 액세스는 할 수 없습니다. 그러나 비보안 스테이트에서도 보안 메모리의 일부 (Non-secure-callable attribute : NSC 영역)의 특정 명령만 호출 할 수 있습니다.

 

 

시스템 제어 및 디버깅 메모리 영역

 

기존의 Cortex-M3 / M4는 시스템 제어와 디버깅을 위한 PPB(Private Peripheral Bus)가 xE0000000-0xE00FFFFF의 1MB, 시스템 영역이 0xE0100000-0xFFFFFFFF에 511MB 할당됐습니다. 즉, 코어의 기능 제어를 위한 전용 주변기기 버스의 주소 공간이 1MB 뿐이었으며, 이것은 Cortex-M0도 마찬가지입니다.

 

이번 ARMv8-M의 맵에선 PPB 해당 시스템 제어 및 디버깅 (System Control & Debug)뿐만 아니라 0xE0000000로 시작하는데, 슬라이드의 주소는 0xEFFFFFFF처럼도 읽을 수 있습니다. 그렇다면 시스템 제어 및 디버깅 예약 영역이 달라지는데, 원래부터 그만큼의 주소 공간을 필요로 한다 보이진 않습니다. 여기는 아직 확실하지 않습니다.

 

18.jpg

 

ARMv8-M의 비보안 스테이트에서 본 메모리 맵

 

19.jpg

 

ARMv8-M의 보안 스테이트에서 본 메모리 맵

 

PPB는 다양한 시스템 장치에 액세스하기 위한 시스템 제어. 디버깅을 위한 메모리 공간이 있습니다. 이번 Cortex-M23 / 33는 이 중에서 어드레스 맵이 약간 바뀌었습니다. 먼저 TrustZone에서 보안화 된 시스템 제어 MPU (Memory Protection Unit), SCB (System Control Block)이나 SysTick (System Timer)까지 시스템 제어 및 디버그 영역에 할당하고 있습니다. 아래 그림에 나온 대로입니다.

 

21.jpg

 

ARMv8-M 메모리 맵

 

22.jpg

 

ARMv8-M 시스템 제어 및 디버깅 부분의 메모리 맵

 

비보안 스테이트는 불안전 MPU / SCB / SysTick 리소스에 액세스할 수 있습니다. 그러나 보안 스테이트는 각각 보안 MPU / SCB / SysTick 리소스 어드레스가 됩니다. 그리고 원래 예약했던 영역을 사용해 비보안 스테이트의 MPU / SCB / SysTick의 별칭이 보안 스테이트 측의 주소에 매핑됩니다. 이 방법으로 보안 스테이트시에도 비보안 스테이트의 시스템 리소스를 액세스 할 수 있습니다. 또한 메모리의 보안 속성을 동적으로 제어하는 ​​SAU (Security Attribution Unit)도 시스템 컨트롤 영역에서 보안 영역에 매핑됩니다.

 

ITM (Instrumentation Trace Macrocell) / DWT (Data Watchpoint and Trace Unit) / FPB (Flash Patch and Breakpoint Unit) 등의 디버깅 계의 기능 NVIC (Nested Vectored Interrupt Controller)는 비보안으로 매핑됩니다.

 

 

보안 및 비보안 사이에 경로를 확보

 

Cortex-A TrustZone의 보안 모니터는 보안 및 비보안 모두를 중개하는 하이퍼 바이저형 보안 솔루션입니다. 그러나 Cortex-M은 하드웨어적으로 보안 및 비보안을 분리하고 그 사이를 모니터하는 소프트웨어가 존재하지 않습니다. 따라서 Cortex-M은 보안과 비보안의 경계를 넘어 비보안 측이 보안 측면을 안전하게 호출하는 구조가 필요합니다.

 

23.jpg

 

보안 모니터를 통하지 않고 직접 보안/비보안 모두를 호출

 

그래서 보안 영역과 비보안 영역의 완충 장치가 되는 레이어를 마련했습니다. ARMv8-M은 새로운 보안 게이트웨이 (Secure Gateway : SG) 명령과 비보안 측에서 액세스 할 수있는 보안 메모리의 경로인 Non-secure-callable attribute (NSC)입니다. NSC는 보안 메모리 영역에 있지만 비보안 스테이트에 액세스할 수 있는 특수한 속성의 영역입니다. NSC만 두 스테이트 사이에 존재하는 메모리 경로가 됩니다.

 

24.jpg

 

ARMv8-M 메모리 영역마다 존재하는 속성

 

NSC는 보안 영역의 관문이되는 Secure Gateway (SG) 명령만 있습니다. SG 명령 이외엔 NSC에서 호출할 수 없습니다. 비보안 측에서 보안 처리를 호출하는 경우 반드시 SG 명령이 필요합니다. SG 명령에서만 보안 스테이트로 전환할 수 있습니다.

 

SG에서 일단 보안 스테이트에 들어간 후에는 보안 메모리에서 코드를 실행할 수 있습니다. 보안 실행이 끝나고 비보안 스테이트에 돌아가려면 BXNS 명령을 사용합니다. BXNS도 새로운 명령에서 비보안 (NS) 스테이트로 분기하는 명령입니다.

 

25.jpg

 

26.jpg

 

게이트웨이가 되는 SG 명령을 호출하여 보안 스테이트로 전환

 

덧붙여서 ARM의 BX 명령은 원래 명령 세트를 전환할 수 있습니다. ARM은 원래 32-bit ARM 명령어 세트와 16-bit Thumb 명령어 세트가 있고, 또한 그것을 통합할 목적으로 Thumb 명령어에 32-bit 명령을 더한 Thumb-2 명령어 세트가 만들어졌습니다 . 명령 세트의 병존 상태에서 혼합 실행을 가능하게하는 명령어 세트 전환 추가가 BX 명령이 만들어진 경위입니다. Cortex-M 계열은 Thumb / Thumb-2 명령어 세트 기반이나 BXNS는 보안 스테이트에서의 상태 전환에 사용합니다.

 

27.jpg

 

ARMv8-M 인터럽트 보안

 

스테이트 이동의 보안에는 CPU의 레지스터 내용의 보호가 있습니다. 위 슬라이드처럼 보안 스테이트에서 비보안 스테이트로 전환 할 때 레지스터를 클리어합니다. 비보안에서 보안으로의 과정은 생략되며, 컴파일러 레벨에서 실현됩니다.

 

28.jpg

 

29.jpg

 

 

TrustZone 시스템 IP CoreLink SIE-200

 

ARM은 Cortex-M 기반의 SoC에 TrustZone을 실현하기위한 시스템 IP도 제공합니다. CoreLink SIE-200, AMBA 5 AHB5, CoreLink SSE-200으로 구성되며, 시스템 전체에 통합 보안을 제공합니다.

 

30.jpg

 

MCU 시스템 전체에 통합 보안을 제공

 

31.jpg

 

TrustZone을 사용한 ARMv8-M 시스템의 블럭 다이어그램

 

 

먼저 SoC의 내부 버스에서 TrustZone을 지원하는 것이 AMBA 5 AHB5 칩 인터커넥트 규격입니이다. AMBA는 ARM Advanced Microcontroller Bus Architecture를, AHB는 Advanced High-performance Bus를 나타냅니다. AMBA 5 AHB5가 CPU 나 다른 버스 마스터 장치, 메모리, 플래시 메모리 컨트롤러 등을 연결합니다. AMBA 5 AHB5는 버스 프로토콜을 확장하고 보안을 보호할 수있습니다. AMBA 5 AHB5 포인트 보안을 보호하면서도 배선 수를 억제해 구현을 가볍이 했다는 게 특징입니다.

 

35.jpg

 

CoreLink SIE-200은 AMBA 5 AHB5을 핵심으로 한 시스템 IP의 세트입니다. 기존의 비보안 장치도 보안 또는 비보안 AMBA 5 AHB5 인터커넥트에 접속할 수 있습니다. 또한 Advanced Peripheral Bus (APB)에 대한 보안 제어를 할 수 있는 브릿지도 제공합니다.

 

36.jpg

 

AMBA5 AHB5 인터커넥트 IP가 보안 시스템 버스를 제공

 

37.jpg

 

CoreLink SIE-200는 통합적인 보안 IP

 

CoreLink SSE-200은 AMBA 5 AHB5 인터커넥트를 포함해 CoreLink SIE-200 시스템 IP에 서브 시스템의 IP를 통합한 것입니다. Cortex-M33 프로세서와 보안 명령 캐시, 전력 제어, CoreSight 디버그 지원 시스템, 또한 선택적으로 암호화 하드웨어 TrustZone CryptoCell과 무선 기술 Cordio Radio도 제공합니다.

 

38.jpg

 

CoreLink SSE-200 서브 시스템에서 제공되는 서브 시스템 IP 군

 

암호화 지원 CryptoCell는 Cortex-A 시스템도 옵션으로 제공합니다. 그러나 Cortex-A를 위한 CryptoCell-710과 비교하면 Cortex-M 용 CryptoCell-310은 더 전력 사용량이 낮고 가벼운 서브 시스템이 됩니다.

 

39.jpg

 

40.jpg

 

CryptoCell

 

41.jpg

 

임베디드 OS 에코 시스템에서 TrustZone을 지원

 

임베디드 분야에서는 몇 년 전부터 ARM이 TrustZone의 MCU 버전을 IoT를 위해 제공하는 소문이 있었습니다. IoT의 인기가 높아지며 MCU의 보안 필요성이 늘었기 때문입니다. ARM의 MCU를 위한 TrustZone은 이번 Cortex-M23 / 33에 의해 마침내 시장에 제공됐습니다. 이제 ARM의 IoT를 위한 기술적인 포진이 갖추어 진 셈입니다.



  • profile
    ExyKnox      An ordinary human connecting dots about every experience✨ 2016.11.11 10:56
    어렵네요..@_@

작성된지 4주일이 지난 글에는 새 코멘트를 달 수 없습니다.


  1. 등록된 글이 없습니다.
목록
Board Pagination Prev 1 ... 4 5 6 7 Next
/ 7

최근 코멘트 30개
nsys
06:17
아라
05:33
아라
05:31
아라
05:28
아라
05:26
아라
05:24
허태재정
05:22
허태재정
05:20
허태재정
05:17
jihadem
04:29
영원의여행자
03:47
ExpBox
03:22
360Ghz
02:58
360Ghz
02:56
lightroo
02:54
유지니1203
02:31
마초코
02:21
유지니1203
02:19
카토메구미
02:14
마초코
02:13
뚜까뚜까
02:06
조마루감자탕
01:56
조마루감자탕
01:55
조마루감자탕
01:55
뚜까뚜까
01:54
조마루감자탕
01:54
급식단
01:47
PAIMON
01:42
유지니1203
01:37
마초코
01:36

AMD
더함
MSI 코리아
한미마이크로닉스

공지사항        사이트 약관        개인정보취급방침       신고와 건의


기글하드웨어는 2006년 6월 28일에 개설된 컴퓨터, 하드웨어, 모바일, 스마트폰, 게임, 소프트웨어, 디지털 카메라 관련 뉴스와 정보, 사용기를 공유하는 커뮤니티 사이트입니다.
개인 정보 보호, 개인 및 단체의 권리 침해, 사이트 운영, 관리, 제휴와 광고 관련 문의는 이메일로 보내주세요. 관리자 이메일

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소