2016. 9. 11. 09:54ㆍSecurity ★ Development/안드로이드 모바일 보안
Trsutzone과 관련된 모듈을 해야해서 간단히 정리했던 내용의 일부입니다.
1. 개요
Trustzone은 ARM processors에 탑재된 하드웨어 보안 기술로 confidentiality와 integrity protection을 보장할 수 있는 programmable environment를 제공하는데 목적이 있습니다. SoC 하드웨어와 소프트웨어를 secure world와 normal world로 분할함으로써 이루어지는데 NWd에서는 SWd의 자원에 접근하는 것을 불가능하게 할 수 있습니다.
NWd와 SWd를 time-sliced 형식으로 실행하게 되는데 이 두 가지 virtual processors context는 monitor mode를 통해 스위치됩니다. Monitor mode는 secure monitor call(SMC) 명령을 이용하거나 IRQ 및 FIQ 발생시 이루어집니다. SMC는 커널 모드에서만 실행이 가능합니다. Monitor mode에서 소프트웨어가 실행될 때, 현재 world의 상태를 보존하고 새롭게 스위치되는 world의 상태를 불러들입니다.
부팅은 2회 일어나는데 먼저 SWd의 os가 부팅을 시작하고 trustzone 관련 접근 권한을 설정합니다. SWd의 부팅이 완료된 후 NWd의 os가 부팅을 시작합니다.
Figure 1 TZ model
Figure 1과 같이 TZ H/W를 이용하여 개방형 OS에 독립적으로 격리된 Trusted execution environment(TEE)을 제공하며 Rich execution environment(REE), 즉 NWd와 TEE(SWd)에 별도의 API를 지원합니다. 지문, DRM 등 보안이 필요한 많은 소프트웨어 들이 TZ를 이용하고 있습니다.
2. Communication with TA
WSM과 같이 어플리케이션들은 REE와 TEE로 나뉘어 질 수 있습니다. 이렇게 되면 REE에 있는 구성요소들은 TEE에 있는 요소들과 통신을 해야합니다. 이를 위해 TEE Client API가 제공됩니다. 이 때의 architecture는 Figure 2와 비슷합니다. REE의 어플리케이션은 공유 메모리 영역을 갖고 있고 TEE Client API를 통해 TA에게 메시지를 보내면 TA는 공유 메모리 영역을 이용하는 방식입니다. TEE Client API는 암호화나 higher-lever APIs에 많이 쓰이므로 구현 과정에 있을 수많은 메모리 버퍼의 인풋, 아웃풋에 대비해 포인터를 이용해 메모리를 공유하는 것을 지원합니다
Figure 2 TEE Client API System Architecture.
클라이언트의 메모리 영역을 TA와 직접 맵핑하는 것은 불가능하기 때문에 필요한 영역을 동기화 해야 합니다. ‘Memory References’는 동기화 될 메모리 영역을 나타내고 TEEC_MemoryReference 구조체로 표현됩니다. 이 구조체는 전체 공유 메모리 블록, 공유 메모리 블록 내부의 바이트 영역 혹은 Client Application에 의해 소유되는 메모리 버퍼의 포인터를 표시합니다. 또한 데이터 흐름의 방향도 나타내는데 CA에서 TA로의 이동일 때는 input, 반대의 경우는 output으로 표시됩니다.
TA가 맵핑된 CA의 공유메모리로부터 데이터를 동기화 할 때 공유메모리 영역은 TEE의 밖이므로 다음에 주의해야합니다.
- Input일 경우, CA는 메모리로부터 데이터를 읽을 수 있지만 써서는 안됩니다. TA는 메모리로부터 데이터를 읽게 됩니다.
- Output일 경우, CA는 읽거나 쓰면 안됩니다. TA만이 읽고 쓸 수 있습니다.
TA에 명령을 전달 할 때는 TEEC_InvokeCommand() 함수를 사용합니다. 인자 중 하나로 Memory References가 전달되는데 이를 이용해 공유메모리에서 데이터를 얻어 올 수 있습니다. 데이터 교환이 필요한 경우 CA는 TEEC_RegisterSharedMemory() 함수를 통해 메모리 영역을 공유메모리 영역으로 등록합니다. TA가 지정한 commandID를 통해 어떤 함수가 호출되어야 하는지 정할 수 있으며 데이터 교환이 필요없을 경우 commandID만이 전달됩니다.
'Security ★ Development > 안드로이드 모바일 보안' 카테고리의 다른 글
모바일 보안 패치 확인 (0) | 2018.10.14 |
---|---|
App signature 비교 (0) | 2018.07.29 |
OWASP mobile - Cryptographic Key Replacement (0) | 2015.08.31 |
OWASP mobile - Insufficient Session Expiration (0) | 2015.08.28 |
OWASP mobile - 쿠키에 의한 권한 설정 (0) | 2015.08.25 |