원격 키 프로비저닝(RKP)은 Android 12부터 AOSP의 일부였습니다. Android 14에는 서비스 API의 견고성을 높이고 개선사항을 도입하는 데 걸리는 시간을 줄여 기능 회복력을 높이는 업데이트 가능한 원격 프로비저닝 모듈이 도입되었습니다.
동기
모든 것을 APEX에 패키징하여 RKP 서비스를 단순화합니다.
Android 14 이전에는 RKP가 앱, RemoteProvisioner
, 키 저장소 2.0으로 분리되었습니다. RemoteProvisioner
앱은 RKP 백엔드에 접속하는 작업을, 키 저장소 2.0은 키를 저장하고 HAL과 통신하는 작업을 담당했습니다. 이는 좋은 아키텍처가 아닙니다. RKP 키는 추가된 메타데이터 측면에서 키 저장소 키와 크게 다르기 때문입니다. 또한 잠재적 리소스 부족에 관해 RemoteProvisioner
에 알리기 위해 키 저장소 프레임워크 코드를 어색하게 수정해야 했습니다.
메인라인 모듈로서의 RKP는 모든 것을 깔끔하게 APEX에 패킹하여 이러한 점을 개선하도록 설계되었습니다.
모듈 경계
RKP 메인라인 APEX인 com.android.rkpd
에는 원격 키 프로비저닝 데몬(RKPD) 애플리케이션과 원격 프로비저닝 시스템 서버 구성요소(Java로 빌드됨)가 포함되어 있습니다.
스택 아키텍처
그림 1은 RKP 스택 아키텍처를 보여줍니다.
그림 1. RKP 스택 아키텍처
내부 아키텍처
그림 2는 RKP 내부 아키텍처를 보여줍니다.
그림 2. RKP 내부 아키텍처
RKP 내부 아키텍처에 관한 추가 정보는 다음과 같습니다.
RKPD 메인라인 APEX -
com.android.rkpd
- RKPD 앱(Java)
packages/modules/RemoteKeyProvisioning/app
- RKPD 시스템 서버 프래그먼트(Java)
packages/modules/RemoteKeyProvisioning/system-server
- RKPD 앱(Java)
HAL 인터페이스/구현(Rust/C++)
IRemotelyProvisionedComponent
hardware/interfaces/security/keymint
패키지 형식
애플리케이션 및 모듈의 기타 기능은 APEX 파일 com.android.rkpd
로 패키징됩니다.
종속 항목
RKP 모듈은 증명 키와 인증서 요청을 제공하기 위해 IRemotelyProvisionedComponent
구현에 계속 의존합니다.
테스트 전략
애플리케이션 APEX의 AOSP 버전에는 OEM이 실행할 수 있는 단위 테스트가 포함되어 있습니다.