root 권한에서 모든 권한을 쥐고 있기 때문에, root 권한을 얻게 되면 공격자가 마음대로 control할 수 있게 된다.
이러한 취약점 때문에 OS도 믿지 못한다는 관점이 나왔고, HW를 OS가 존재하는 Normal World(REE)와 보안적으로 접근할 수 없는 보안 영역 Secure World(TEE)로 나누게 되었다.
REE(Rich Execution Environment)) : 일반적인 실행 환경
TEE (Trusted Execution Environment) : 보안 기능을 보호하고 신뢰된 코드만을 실행하는 공간. REE와 분리된 독립된 공간이다.
Normal World에서 Secure Worl로 접근하기 위해서는 다음과 같은 수단을 필요로 한다.
TZASC - DRAM(memory)
TZPC - 주변 장치(마우스, 키보드)
TZMA - SRAM(HDD, SDD)
주로 모바일에서 이러한 기술들이 사용된다. 모바일은 개인 정보가 많이 들어있고 보안에 특히 민감하기 때문.
예를 들어 삼성페이에는 계좌번호, 송금 내역, 디스플레이, 등의 정보를 가지고 있다. 이러한 것들이 노출되면 큰 위험이 발생할 수 있다. 이러한 중요 정보들이 TEE에 들어있다. 옛날 폰은 삼성 페이를 못 쓰는 이유가 어플리케이션을 분리할 수 없기 때문.
Real World에서 실행되는 걸 CA(ClientApplication), Secure Wolrd에서 실행되는 걸 TA(TrustedApplication)이라고 한다. 이를 분리해서 실행시킨다.
TA가 제대로 실행되면 0을 반환
실행이 안되면 오류를 반환
HyperVisor : RAM을 나누어서 Virtual OS에게 자원을 할당해 준다.
Secure Monitor : Normal World와 Seccure World 간 전환을 이루어 주는 SW. 가장 높은 권한을 가진다.
ex) 결제 서비스 동작 과정.
Kernel내에서 구현돼있는 서비스를호출 -> Kernel 서비스가 호출할 서비스를 인자로 받아 Secure Monitor를 호출 -> 요청이 검증되면, TEE로 전환 -> Trusted OS를 구동. TA의 결제 서비스를 처리한 후 OS를 호출 -> Monitor를 호출 -> Normal World로 전환 ...