DICE için SDV profili

Device Identifier Composition Engine (DICE) için SDV Profili, Android Profile for DICE'ın bir uzantısıdır. SDV'de bir sanal makine iki paralel DICE zinciri kullanır:

  • Güvenli Dünya DICE zinciri
  • Android SDV DICE zinciri

DICE için Android profilinin yapılandırma tanımlayıcısındaki bu alanlar, aşağıdaki zincirlerin her biriyle alakalıdır:

Ad Anahtar Tür Açıklama
Bileşen adı < -70002 tstr Her bir CDI katmanında önerilir. Bileşen adı, bir araçta veya araç platformunda Android SDV VM'lerini çalıştıran tüm DICE donanım zincirleri arasındaki aşamayı net bir şekilde tanımlar.
Güvenlik sürümü <0x0A -70005 uint Her CDI aşamasında zorunludur. Güvenli olmayan uzak VM sürümlerinin SDV güvenli ağına katılmasını engelleyen bir DICE politikası tanımlanmasını sağlar.
Bileşen Örneği Adı <0 -70007 tstr İlk sanal makineye özel CDI katmanında zorunludur. Örneğin, Android SDV DICE zinciri için hipervizörden sonra. SDV örneğinin adı. Birden fazla CDI katmanı bileşen örneği adını içeriyorsa her katman aynı değere sahip olmalıdır.

Güvenli Dünya DICE zinciri

Secure World DICE zinciri, Android'in Uzaktan Anahtar Sağlama (RKP) sunucusunun Android cihazlardan aldığı zincirle aynıdır. IRemotelyProvisionedComponent HAL'leri generateCertificateRequestV2() bu DICE zincirini Android'e sunar.

Bu tabloda örnek bir Secure World DICE zinciri gösterilmektedir:

Başlatma aşaması DICE CDI katmanı Veren
Birincil bootloader CDI[0] UDS
İkincil bootloader CDI[1] Birincil bootloader
TEE önyüklemesi CDI[2] İkincil bootloader
KeyMint TA başlatma CDI[3] (Yaprak) TEE

KeyMint güvenilir uygulamasını (TA) uygulamak için aşağıdaki seçeneklerden birini kullanın:

  • Tüm SDV VM'leri için tek bir KeyMint örneği: Tüm VM'ler için tek bir CDI belirlemeniz ZORUNLUDUR.

veya

  • Her SDV VM'si için bir KeyMint örneği: Her VM için farklı bir CDI değeri belirlemeniz ZORUNLUDUR. Bireysel CDI değerleri, VM'nin bileşen örneği adıyla eşleşen bir bileşen örneği adı içermelidir.

Android SDV DICE zinciri

Android SDV DICE zinciri, hipervizör üzerinden SDV sanal makinelerinde çalışan Android üst düzey işletim sistemine (HLOS) giden başlatma yolunda çalışan yazılımı onaylar.

Bu tabloda örnek bir Android SDV DICE zinciri gösterilmektedir:

Başlatma aşaması DICE CDI katmanı Veren
Birincil bootloader CDI[0] UDS
İkincil bootloader CDI[1] Birincil bootloader
Hipervizör CDI[2] İkincil bootloader
Android HLOS CDI[3] (Yaprak) (Android yükleyici) Hipervizör1

1 Hipervizör, konukta Android bootloader'ı katman olarak sertifikalandırır. Android bootloader, Android HLOS'yi onaylar.

Android HLOS CDI Sertifikası

Android Bootloader (veya Android bootloader yoksa ancak sanal makineyi Hypervisor'da yükleyen bir Android "yükleyici" programı varsa Hypervisor), Android HLOS CDI sertifikasını imzalar ve Android HLOS'u kapsar. Örneğin, Android Bootloader'ın Android Verified Boot (AVB)'a göre doğruladığı tüm kodları kapsar.

Android HLOS CDI sertifikası, Android OS'in güvenlik açıklarını azaltan SDV'ye özgü değerlerini içermelidir. Örneğin, bilinen güvenlik açıkları olan sanal makinelerin SDV Secure Mesh'ten yasaklanmasıyla olası gizli sızıntı. AVB doğrulaması bu değerlerin çoğunu sağlar.

Ayrıca, sertifikanın SecureWorld DICE zincirinin yaprak CDI'si tarafından imzalandığı ve temel Android'de anahtar ve kimlik onayı gibi özellikleri etkinleştirmek için DeviceInfo'da Android'e iletildiği TEE'deki KeyMint'e de teslim edilir.

Code input ve codeHash sertifika alanları

VBMeta özeti (Android bootloader'ın AVB doğrulaması için gerçekleştirdiği bir çıkış) Android HLOS'un yazılımını kapsar. Bu nedenle, CDI sırlarını türetmek için android-dice-input-values olarak görev yapar ve CDI sertifikasının dice-cert-fields alanına girer.

AVB için önerilen karma algoritması SHA-256'dır. Bu algoritma, 32 bayt uzunluğunda bir VBMeta özetiyle sonuçlanır. DICE için Açık Profil'in aksine, DICE için Android Profili, DICE akışı için 32 bayt uzunluğunda android-dice-hash-algos kullanılmasına ve DICE sertifikasına codeHash olarak aynı 32 bayt uzunluğundaki değerin yerleştirilmesine olanak tanır.android-dice-input-values

Yapılandırma tanımlayıcısı: DICE için Android profilindeki alanlar

Tüm CDI katmanları için açıklananların ötesinde, aşağıdaki özellikler geçerlidir: DICE için Android Profilindeki Yapılandırma tanımlayıcı alanları:

Ad Anahtar Tür Açıklama
Bileşen sürümü -70003 int AVB version-info-avb'deki sistem OS sürümü. Ayrıca android.os.Build.VERSION.release ile aynıdır.
Güvenlik sürümü -70005 uint system bölümünün YYYYMMDD biçimindeki güvenlik yaması seviyesi.
RKP VM işaretçisi -70006 null RKP VM işaretçisi, Uzak Anahtar Temel Hazırlığı'nın Android SDV DICE zinciri için sertifika vermesini engeller.

RKP VM işaretçisi, Android SDV DICE zincirinin Secure World DICE zinciriyle ortak olmayan ilk CDI sertifikasında görünmelidir. Ayrıca, RKP sunucusunun rkp-avf-support DICE zincirini bir RKP VM'den geliyormuş gibi değerlendirmesini önlemek için başka CDI sertifikalarında görünmemelidir.

Yapılandırma tanımlayıcısı: yeni alanlar

Android HLOS CDI sertifikasının yapılandırma tanımlayıcısı, DICE için Android Profilinde açıklananların ötesinde SDV'ye özel değerler içermelidir. DICE için SDV Profili, bu amaçla [-71000, -71999] anahtar değeri aralığını ayırır. Ayrılmış aralığın dışındaki anahtar değerlerini kullanarak uygulamaya özel alanlar ekleyebilirsiniz. SDV'ye özel değerler şunlardır:

Ad Anahtar Tür Açıklama
Doğrulanmış başlatma durumu -71000 tstr green, yellow veya orange.
build fingerprint -71001 tstr Bu derlemeyi benzersiz şekilde tanımlayan, kullanıcıların okuyabileceği dize. ro.build.fingerprint ile aynıdır. Bu, Android CDD, 3.2.2 Derleme Parametreleri, cdd-3-2-2 bölümünde tanımlanır. VBMeta bunu, com.android.build.system.fingerprint adlı özellik olarak depolar.
system_ext security patch level -71002 uint YYYYMMDD biçimindeki system_ext bölümünün güvenlik yaması seviyesi.
product security patch level -71003 uint YYYYMMDD biçimindeki product bölümünün güvenlik yaması seviyesi.
vendor security patch level -71004 uint YYYYMMDD biçimindeki vendor bölümünün güvenlik yaması seviyesi.
boot security patch level -71005 uint boot bölümünün (Linux çekirdeğini içerir) YYYYMMDD biçimindeki güvenlik yaması seviyesi.
SDV önyükleme modu -71006 tstr locked veya unlocked. Daha fazla bilgi edinmek için Mesh Durumu ve Sağlama başlıklı makaleyi inceleyin.

Android HLOS CDI'nin mod giriş değeri seçimi

Android HLOS CDI sertifikasının android-dice-mode bölümünde aşağıdaki tanım kullanılır:

AVB UNLOCKED AVB KİLİTLENDİ
SDV başlatma modu KİLİDİ AÇIK Hata ayıkla Hata ayıkla
SDV başlatma modu KİLİTLENDİ Yapılandırılmamış (geçersiz) Normal

Anahtar türetme işlevi

Android HLOS CDI için CDI_Attest sırrından ortak ve özel anahtar çiftini türeten android-dice-kdf, karma işlevi olarak SHA512 ile HKDF olmalıdır.