기기 식별자 구성 엔진 (DICE)용 SDV 프로필은 DICE용 Android 프로필의 확장 프로그램입니다. SDV에서 VM은 두 개의 병렬 DICE 체인을 사용합니다.
- 보안 월드 DICE 체인
- Android SDV DICE 체인
DICE용 Android 프로필의 구성 설명자에 있는 다음 필드는 각 체인과 관련이 있습니다.
| 이름 | 키 | 유형 | 설명 |
|---|---|---|---|
| 구성요소 이름 | -70002
|
tstr
|
각 CDI 레이어에서 권장. 구성요소 이름은 차량이나 차량 플랫폼에서 Android SDV VM을 실행하는 하드웨어의 모든 DICE 체인 중에서 단계를 명확하게 식별합니다. |
| 보안 버전 | -70005
|
uint
|
각 CDI 단계에서 필요합니다. 보안되지 않은 원격 VM 버전이 SDV 보안 메시를 조인하지 못하도록 하는 DICE 정책을 정의할 수 있습니다. |
| 구성요소 인스턴스 이름 <0 | -70007
|
tstr
|
첫 번째 VM별 CDI 레이어에서 필요합니다. 예를 들어 Android SDV DICE 체인의 경우 하이퍼바이저 후입니다. SDV 인스턴스의 이름입니다. 여러 CDI 레이어에 구성요소 인스턴스 이름이 포함된 경우 각 레이어의 값이 동일해야 합니다. |
보안 월드 DICE 체인
보안 월드 DICE 체인은 Android의 원격 키 프로비저닝(RKP) 서버가 Android 기기에서 수신하는 것과 동일합니다. IRemotelyProvisionedComponent HAL의 generateCertificateRequestV2()은 이 DICE 체인을 Android에 노출합니다.
이 표는 샘플 보안 월드 DICE 체인을 보여줍니다.
| 부팅 단계 | DICE CDI 레이어 | 발급 기관 |
|---|---|---|
| 기본 부트로더 | CDI[0] |
UDS |
| 보조 부트로더 | CDI[1] |
기본 부트로더 |
| TEE 부팅 | CDI[2] |
보조 부트로더 |
| KeyMint TA 부팅 | CDI[3] (리프) |
TEE |
KeyMint 신뢰할 수 있는 애플리케이션 (TA)을 구현하려면 다음 옵션 중 하나를 사용하세요.
- 모든 SDV VM의 단일 KeyMint 인스턴스: 모든 VM에 단일 CDI를 지정해야 합니다(MUST).
또는
- 각 SDV VM의 KeyMint 인스턴스 하나: 각 VM에 대해 서로 다른 CDI 값을 지정해야 합니다(MUST). 개별 CDI 값에는 VM의 구성요소 인스턴스 이름과 일치하는 구성요소 인스턴스 이름이 포함되어야 합니다(MUST).
Android SDV DICE 체인
Android SDV DICE 체인은 하이퍼바이저를 통해 SDV VM에서 실행되는 Android 고수준 운영체제 (HLOS)로 이어지는 부팅 경로에서 실행되는 소프트웨어를 인증합니다.
이 표는 샘플 Android SDV DICE 체인을 보여줍니다.
| 부팅 단계 | DICE CDI 레이어 | 발급 기관 |
|---|---|---|
| 기본 부트로더 | CDI[0] |
UDS |
| 보조 부트로더 | CDI[1] |
기본 부트로더 |
| 하이퍼바이저 | CDI[2] |
보조 부트로더 |
| Android HLOS | CDI[3] (리프)
|
하이퍼바이저1(Android 로더) |
1 하이퍼바이저는 게스트에서 Android 부트로더를 레이어로 인증합니다. Android 부트로더는 Android HLOS를 인증합니다.
Android HLOS CDI 인증서
Android 부트로더 (또는 Android 부트로더는 없지만 하이퍼바이저 내에서 VM을 로드하는 Android '로더' 프로그램만 있는 경우 하이퍼바이저)는 Android HLOS CDI 인증서에 서명하고 Android HLOS를 포함합니다. 예를 들어 Android 자체 검사 부팅 (AVB)에 따라 Android 부트로더가 확인하는 모든 코드를 다룹니다.
Android HLOS CDI 인증서에는 보안 취약점을 완화하는 Android OS의 SDV 관련 값이 포함되어야 합니다. 예를 들어 알려진 취약점이 있는 VM을 SDV 보안 메시에서 금지하여 잠재적인 비밀 유출을 방지할 수 있습니다. AVB 확인은 이러한 값 대부분을 제공합니다.
또한 TEE의 KeyMint에 전달되어 SecureWorld DICE 체인의 리프 CDI로 인증서에 서명하고 핵심 Android에서 키 및 ID 증명과 같은 기능을 사용 설정하기 위해 DeviceInfo에서 Android에 전달됩니다.
코드 입력 및 codeHash 인증서 필드
VBMeta 다이제스트 (Android 부트로더가 AVB 확인을 위해 실행하는 출력)는 Android HLOS의 소프트웨어를 포함합니다. 따라서 CDI 비밀번호를 파생하는 데 사용되는 android-dice-input-values 역할을 하며 CDI 인증서의 dice-cert-fields 필드에 저장됩니다.
AVB에 권장되는 해시 알고리즘은 SHA-256이며, 이 알고리즘은 32바이트 길이의 VBMeta 다이제스트를 생성합니다. DICE용 공개 프로필과 달리 DICE용 Android 프로필은 DICE 흐름에 32바이트 길이 android-dice-input-values를 사용하고 동일한 32바이트 길이 값을 DICE 인증서의 codeHash로 배치하여 android-dice-hash-algos를 허용합니다.
구성 설명자: DICE용 Android 프로필의 필드
모든 CDI 레이어에 설명된 내용 외에도 다음 사항이 DICE용 Android 프로필의 구성 설명자 필드에 적용됩니다.
| 이름 | 키 | 유형 | 설명 |
|---|---|---|---|
| 구성요소 버전 | -70003
|
int
|
AVB version-info-avb의 시스템 OS 버전입니다. android.os.Build.VERSION.release와도 동일합니다. |
| 보안 버전 | -70005
|
uint
|
YYYYMMDD 형식의 system 파티션 보안 패치 수준입니다. |
| RKP VM 마커 | -70006
|
null
|
RKP VM 마커는 원격 키 프로비저닝이 Android SDV DICE 체인용 인증서를 발급하지 못하도록 합니다. |
RKP VM 마커는 보안 월드 DICE 체인과 공통되지 않은 Android SDV DICE 체인의 첫 번째 CDI 인증서에 표시되어야 합니다. 또한 RKP 서버 rkp-avf-support가 DICE 체인을 RKP VM에서 가져온 것으로 간주하지 않도록 추가 CDI 인증서에 표시되면 안 됩니다(MUST NOT).
구성 설명자: 새 필드
Android HLOS CDI 인증서의 구성 설명자에는 DICE용 Android 프로필에서 설명하는 것 외에 SDV 관련 값이 포함되어야 합니다. DICE용 SDV 프로필은 이 목적으로 키 값 범위 [-71000, -71999]를 예약합니다. 예약된 범위 외부의 키 값을 사용하여 구현 관련 필드를 추가할 수 있습니다. SDV 관련 값은 다음과 같습니다.
| 이름 | 키 | 유형 | 설명 |
|---|---|---|---|
| 자체 검사 부팅 상태 | -71000
|
tstr
|
green, yellow 또는 orange입니다.
|
| 빌드 지문 | -71001
|
tstr
|
이 빌드를 고유하게 식별하는 사람이 읽을 수 있는 문자열입니다. ro.build.fingerprint과 동일합니다. Android CDD, 3.2.2 빌드 매개변수, cdd-3-2-2에 정의되어 있습니다.
VBMeta는 이를 com.android.build.system.fingerprint라는 속성으로 저장합니다. |
system_ext
보안
패치 수준 |
-71002
|
uint
|
YYYYMMDD 형식의 system_ext 파티션 보안 패치 수준입니다. |
product
보안
패치 수준 |
-71003
|
uint
|
YYYYMMDD 형식의 product 파티션 보안 패치 수준입니다. |
vendor
보안
패치 수준 |
-71004
|
uint
|
YYYYMMDD 형식의 vendor 파티션 보안 패치 수준입니다. |
boot
보안
패치 수준 |
-71005
|
uint
|
YYYYMMDD 형식의 boot 파티션 (Linux 커널 포함)의 보안 패치 수준입니다. |
| SDV 부팅 모드 | -71006
|
tstr
|
locked 또는 unlocked. 자세한 내용은 메시 상태 및 프로비저닝을 참고하세요. |
Android HLOS CDI의 모드 입력 값 선택
Android HLOS CDI 인증서의 android-dice-mode은 다음 정의를 사용합니다.
| AVB 잠금 해제됨 | AVB 잠김 | |
|---|---|---|
| SDV 부팅 모드 잠금 해제됨 | 디버그 | 디버그 |
| SDV 부팅 모드가 잠김 | 구성되지 않음 (잘못됨) | 보통 |
키 파생 함수
Android HLOS CDI의 CDI_Attest 보안 비밀에서 공개 키와 비공개 키 쌍을 파생하는 android-dice-kdf은 해시 함수로 SHA512를 사용하는 HKDF여야 합니다.