안드로이드 KeyStore 시스템에 대해 요약합니다.

안드로이드 KeyStore 시스템은 안드로이드 앱 서명을 위해 사용하는 keystore 파일과 이름만 유사할 뿐 다른 개념입니다.


디버깅/해킹으로 뚫을 수 없는 안전한 HW에 암호키를 저장

  • KeyStore 시스템을 이용하면 암호 연산 중에 암호키가 어플리케이션 프로세스 메모리에 적재되지 않습니다
  • 그래서 HW에 기반한 KeyStore 시스템에서는 해킹/디버깅에 의한 암호키 유출이 불가능합니다

암복호화, 서명 등 다양한 암호 연산 기능을 제공

  • KeyStore 시스템은 암호키 생성과 저장, 암복호화, HMAC 연산, 서명 등 다양한 기능을 제공합니다
  • KeyStore 시스템은 모든 암호 연산 과정에서 암호키가 노출되지 않음을 보장합니다

KeyStore를 지원하는 HW의 종류

  • TEE
    • 메인 CPU 안의 분리된 구역에서 암호키 관리와 암호 연산을 수행합니다
    • 예) ARM TrustZone
  • StrongBox
    • CPU와 물리적으로 분리된 보안 프로세서에서 암호키 관리와 암호 연산을 수행합니다
    • TEE 보다 더 강력한 보안성을 제공합니다
    • 예) Google Pixel의 Titan M
  • KeyStore 시스템은 HW 지원이 불가능한 경우에도 SW적으로 가능한 한도 안에서 보안성을 제공합니다

암호키에 대한 증빙(Attestation)

  • HW KeyStore가 생성한 암호키에 대해서는 Attestation(증빙)을 얻을 수 있습니다
  • HW KeyStore 시스템은 암호키가 어떤 HW와 어떤 환경에서 생성됐는지 증명하는 Cert Chain을 제공합니다
  • Attestation Cert Chain 예시
    • 제조사(예를 들어 삼성)의 Root CA Cert
    • 제조사가 보증하는 사업장(예를 들어 수원 사업장)의 Cert
    • 제조사가 보증하는 사업장이 보증하는 단말기(예를 들어 갤럭시S2x 단말)의 Cert
    • 제조사가 보증하는 사업장이 보증하는 단말기가 보증하는 암호키(예를 들어 SomeKeyAlias 암호키)의 Cert

Ref.


 

정리합니다.
Android KeyStore 시스템을 사용하면 암호키의 생성/보관과 암호연산에 관한 안전성을 안드로이드가 보장합니다.
그것도 하드웨어적으로 보장합니다.

(이상입니다)

 

Posted by ingeeC
,