지문인증 동작 자체가 위 빨간 박스로 표시한 TEE(Trusted Execution Environment)에서 이루어집니다. TEE는 일반 Android 실행환경(App, Framework, Kernel)과 독립되어 보안적으로 상대적으로 더 안전한 실행환경(TEE OS, TEE library, TEE App)입니다. TEE는 더 안전하기는 하지만, 극히 제한적인 리소스만이 제공되는 환경입니다.
- TEE 이외 부분을 REE(Rich Execution Environment)라고 합니다.
- TEE 를 Secure World, REE 를 Normal World라고도 합니다.
위 그림에서 Fingerprint Hardware로 표현된 지문센서가 TEE의 FP vendor library에서만 접근되는 것이 첫 번째 보안 요소가 될 수 있습니다. 지문센서는 I2C나 SPI로 AP(Application Processor)칩에 연결이 되는데 이 부분을 HW적으로 TEE에서만 접근가능하도록 합니다. 일반적인 주변장치(Touch, Camera, Display 등)를 Android Linux Kernel Driver 통해 접근하는 것과 다른 부분입니다.
여기서 생각해볼 부분이 있습니다.
지문인증의 결과가 로그인, 결제, 잠금해제등 보안이 필요한 부분에 사용되기 때문에 더 안전한 환경인 TEE에서 지문인식이 되도록 되어 있습니다만, 그렇게 안전하게 인증한 지문인증 결과 자체는 덜 안전한 REE인 Android Framework을 거쳐 Android App(은행 앱, 페이 앱, 잠금 앱 등)으로 전달됩니다.
제가 해커라면 TEE는 공격하기 어려우니 REE를 공격해보겠습니다. 예를 들면, TEE에서 지문인증이 되지 않았다고 결과가 나왔다고 하더라도 REE 적당한 어디쯤을 공격해서 지문인증이 되었다고 바꾸는겁니다.
구글님들께서 당연히 이런 구멍을 만들지 않았습니다. 다음 글에서 이어가겠습니다.
'Android' 카테고리의 다른 글
Android에 설치된 앱이 Platform Key로 서명되었는지 확인하는 방법 (0) | 2021.02.15 |
---|---|
보안 측면에서의 Android 지문인증 (4) (0) | 2021.02.15 |
보안 측면에서의 Android 지문인증 (3) (0) | 2021.02.15 |
보안 측면에서의 Android 지문인증 (2) (0) | 2021.02.13 |
Android 소스 검색 방법 (0) | 2021.02.08 |