SDV Önyükleme Modu adlı yeni bir kavram, SDV sanal makinesindeki SDV Hizmet Bulma aracısının güvenli bir ağ oluşturmak için diğer Hizmet Bulma aracılarına (diğer SDV sanal makinelerinde çalışır) bağlanmaya çalışırken nasıl davranacağını tanımlar. Bu mod, Kilitli veya Kilidi Açık olabilir. Android'in Doğrulanmış Başlatma özelliğindeki mevcut Cihaz Durumu kavramına benzer.
Vehicle VM Trust Store (Araç VM Güvenilir Mağazası) sağlanırken veya güncellenirken SDV önyükleme modu kullanılır.
SDV Secure Mesh Behavior
Hizmet Bulma Ağı, aldığı önyükleme değerlerine bağlı olarak aşağıdaki durumlardan birinde olabilir: Normal, Uyarı veya Kritik.
Bir araba, yalnızca ağı "Normal" durumundayken sahibine ulaşır. Teşhis müdahalesi olmadan ağın "Normal" durumundan "Uyarı" durumuna geçmesi mümkün değildir. Üretim ortamında (ör. geliştirme/hata ayıklama değil) "uyarı" yalnızca temel hazırlık sırasında gerçekleşir.
"Fatal" (Önemli) temel bir hatadır. system_ext görüntüsünün Android bootloader'da imza doğrulamasını geçememesine benzer. SDV Mesh, yalnızca kablosuz (OTA) güncelleme nedeniyle "Normal"den "Fatal"a geçiş yaptıysa bu güncelleme kötü olarak kabul edilir ve orijinal "Normal" sürümüne geri dönersiniz.
Aşağıdaki bölümlerde bu durumlar daha ayrıntılı olarak açıklanmaktadır.
Normal
- Sistem başlatma, Hizmet Bulma açısından
SECURE. - Hizmet Bulma yalnızca güvenli bir şekilde başlatıldığına inandığı eşlerle bağlantı kurar ve sonuç olarak, parçası olduğu SDV Secure Mesh'in güvenli olduğuna inanır.
Uyarı
- Bazı doğrulamalar devre dışı bırakıldığından sistem önyüklemesi tehlikeye girmiş olabilir.
- Hizmet Bulma yalnızca aynı devre dışı bırakılmış doğrulama işlemlerine sahip olan eşlerle bağlantı kurar. Bu nedenle, kendisiyle aynı güvenlik özelliklerine sahip bir SDV Secure Mesh'in parçasıdır.
- Peer Boot işlemi başarılı veya başarısız bir şekilde tamamlanmış olabilir. Yerel arızalar / devre dışı bırakmalar nedeniyle doğrulanamaz.
- Geliştirme ortamı veya durumu dışında bu durumun aşağıdaki etkileri vardır:
- Kullanıcı verileri mevcut olmamalıdır. Yani, SDV Secure üzerinden iletişimle iletilmemeli veya bu iletişimden etkilenmemelidir.
- Ağ bu durumdayken yalnızca sağlama akışları için gereken hizmetler kullanılabilir olmalıdır.
Kritik
- Sistem başlatma aşamalarında kritik hata.
- Hizmet bulma aracısının bir ağ oluşturmasını engelleyen en az bir temel arıza veya hata var. Yerel hizmetlerin uzak hizmetlerle iletişim kurması mümkün değil.
- Sistem başlatma, hizmet keşfinin bakış açısıyla GÜVENLİ DEĞİLDİR.
SDV Başlatma Modu
SDV Önyükleme Modu'nun iki olası değeri vardır: UNLOCKED ve LOCKED. Hizmet Bulma ağı oluşturma ile ilgili olarak LOCKED modu, doğrulama hatalarının önemli olduğu, UNLOCKED modunda ise önemli olmadığı anlamına gelir.
SDV Önyükleme Modu'nun, Android'in Cihaz Durumu'ndan (diğer adıyla AVB Modu) farklı olduğunu unutmayın. SDV Başlatma Modu, SDV Güvenli Örgü'nün davranışını ve örgü bağlantı hatalarının FATAL olup olmadığını belirler. AVB modu, Android önyükleyicisi tarafından yapılan doğrulamaların kritik olup olmadığını belirler.
| KOŞUL | SDV Başlatma Modu | |
|---|---|---|
| KİLİDİ AÇILDI | KİLİTLİ | |
| Yerel VVM güven deposu boş | Uyarı | Kritik |
| Yerel DICE zinciri eksik | Kritik | Kritik |
| Yerel DICE Zinciri Doğrulama Hatası | Uyarı | Kritik |
| Yerel SDV ve AVB Modu Eşleştirme | Tabloya bakın | |
| Uzak Cihaz Modu değer karşılaştırması | Tabloya bakın | |
Uzaktan uds_pubs eşleşme hatası |
Uyarı | Kritik |
| Uzaktan DICE Zinciri Doğrulama Hatası (DICE Politikaları kullanılarak) | Uyarı | Kritik |
| Uzaktan Kimlik Doğrulama El Sıkışması Hatası | Kritik | Kritik |
Yerel SDV ve AVB Modu Eşleştirme
Aşağıdaki tabloda, AVB Modu ve SDV Önyükleme Modu'nun SDV Güvenli Mesh Davranışı'nı nasıl etkilediği gösterilmektedir. Renkler, AVB dokümanlarının Android'e Özgü Entegrasyon bölümünde tanımlandığı gibidir.
| AVB Modu x SDV Başlatma Modu | SDV Başlatma Modu | ||
|---|---|---|---|
| KİLİDİ AÇILDI | KİLİTLİ | ||
| AVB KİLİTLENDİ | Yeşil | Uyarı | Normal |
| Sarı | Kritik | Kritik | |
| AVB UNLOCKED | Orange | Uyarı | Kritik |
Cihaz modu değeri
DICE zincirinde her CDI sertifikasının bir Mode Value (Mod Değeri) vardır. Bu katmanın güvenlik durumunu, yapılandırma girişine göre tanımlamak için kullanılır. Cihazdaki tüm yazılımların güvenlik duruşunu ifade etmek için bir Cihaz Modu Değeri tanımlanır. Bu değer, belirli bir SDV VM ile ilgili DICE zincirlerinin tüm CDI aşamalarının Mod Değerinden türetilir (ör. Android HLOS ve Secure World) olarak tanımlanır ve şu şekilde tanımlanır:
enum DeviceMode {
NotConfigured = 0,
Recovery = 1,
Debug = 2,
Normal = 3,
}
Algoritma
deviceMode,DeviceMode::NormalolsundiceChainList, bir SDV VM'siyle alakalı DICE zincirlerinin listesi olsun.diceChainListiçindeki herdiceChainiçin:cdiList,diceChainiçindeki CDI sertifikalarının listesi olsun:cdiListiçindeki hercdiCertiçin:cdiDeviceMode,cdiCert.modeile ilişkiliDeviceModeolsun.deviceModedeğerinimin(deviceMode, cdiDeviceMode)olarak ayarlayın.
- Dönüş
deviceMode.
Uzak Cihaz Modu değer karşılaştırması
Bir hizmet bulma aracısı yalnızca kendisiyle aynı Cihaz Modu Değerine sahip diğer aracılarla bağlantı kurar.
Cihaz modu değeri, bir ağda farklı güvenlik özelliklerine sahip üyeler olmamasını sağlar. Bu nedenle, ortaya çıkan ağ, tüm üyeleri arasında tek tip bir güvenlik duruşuna sahiptir.
| Cihaz modu değeri | Uzaktan | ||||
|---|---|---|---|---|---|
| Yapılandırılmadı | Hata ayıkla | Kurtarma | Normal | ||
| Yerel | Yapılandırılmadı | Kritik | Kritik | Kritik | Kritik |
| Hata ayıkla | Kritik | Uyarı | Kritik | Kritik | |
| Kurtarma | Kritik | Kritik | Uyarı | Kritik | |
| Normal | Kritik | Kritik | Kritik | Normal | |
Fabrikada Sağlama Akışı
Bu, araç montaj hattındaki sağlama akışıdır. Burada genel anahtar altyapısının kullanılamadığı varsayılır.
Bu akış, VVMFactoryTrust adlı tek seferlik programlanabilir (OTP) bellekte depolanan 32 baytlık bir değere bağlıdır. Bu değer ayarlandığında çekirdeğe androidboot.sdv.vvmfactorytrust adlı bir parametre olarak iletilir.
Bir ECU'daki tüm VM'ler aynı SDV Boot Mode ve VVMFactoryTrust'a sahip olmalıdır.
Initial State (İlk Durum)
Tüm ECU'lar başlangıçta SDV Boot Mode kilidi açık olarak gelir. VVMFactoryTrust ve VVMTrustStore, VVMTrustStore'da bulunabilecek uds_certs dışında boştur.
Şekil 1'de, iki ayrı ECU'ya (ECU-0 ve ECU-1) dağıtılmış üç SDV VM'sinin (VM-A, VM-B ve VM-C) bulunduğu bir örnek gösterilmektedir.
1. adım: sdv_provisioning_tool'u çalıştırın
Tüm ECU'lardaki tüm sanal makineleri başlatın.
Her sanal makinede:
sdv_provisioning_toolçalıştırma- Araç, yerel hizmet bulma aracısıyla iletişim kurar ve SDV Secure Mesh'in tamamlandığını ve aracının UDS ortak anahtarlarının listesini
/vvmtruststore/uds_pubs'ya yazdığını bildirmesini bekler. - Bu durumda araç, yeni yazılan
/vvmtruststore/uds_pubsöğesinin karma değerini alır ve bunu çıkış olarak verir.
- Araç, yerel hizmet bulma aracısıyla iletişim kurar ve SDV Secure Mesh'in tamamlandığını ve aracının UDS ortak anahtarlarının listesini
2. adım: VVMFactoryTrust yazın
Her ECU'nun bir sanal makinesinde:
- Önceki adımda
sdv_provisioning_tooltarafından oluşturulan/vvmtruststore/uds_pubskarmasını VVMFactoryTrust'a yazın. Bu yazma işleminin nasıl gerçekleştirildiği OEM/tedarikçiye özeldir ve bu nedenle bu spesifikasyonun kapsamı dışındadır.
3. adım: SDV Boot Mode Locked (SDV Önyükleme Modu Kilitli) modunda yeniden başlatın
SDV Boot Mode Locked'daki tüm ECU'lardaki tüm sanal makineleri yeniden başlatın.
Hizmet Bulma aracısı, bu dosyanın karması VVMFactoryTrust ile eşleştiği için uds_pubs içinde listelenen UDS ortak anahtarlarına sahip ECU'lardaki sanal makinelere güvenir.
ECU'lar birlikte sağlandığından kalıcı olarak birbirine bağlıdır ve bu nedenle DICE zinciri doğrulama açısından tek bir donanım parçası olarak kabul edilebilir.
Parça değişimi akışı
Bu, yetkili bir araba tamir atölyesinde veya garajda temel hazırlık akışıdır. Burada arızalı bir ECU, temel hazırlığı yapılmamış yeni bir ECU ile değiştirilmelidir.
Bu akış, vvmconfig içinde belirtilen kök yetkili tarafından doğrudan veya dolaylı olarak, bazı ara yetkili zincirleri aracılığıyla verilen UDS sertifikalarına bağlıdır.
Initial State (İlk Durum)
Tüm sanal makineler fabrika tarafından sağlanmış ve SDV Boot Mode kilitli olarak çalışıyor.
Şekil 5'te, ECU-0'ın arızalı olduğu ve bu nedenle
değiştirilmesi gerektiği bir örnek gösterilmektedir.
1. adım: Yeni ECU'yu takın
Yeni ECU'yu takın. Bu ECU, boş ve sağlanmamış durumda olacaktır.
Şekil 6'da, ECU-2 (yedek ECU) açıldığında iki ayrı SDV Secure Mesh vardır: biri uyarı durumunda, diğeri normal durumdadır. Her iki SDV Secure Mesh de eksiktir.
2. adım: SDV Boot Mode kilidi açıkken yeniden başlatın
SDV Boot Mode kilidi açıkken tüm ECU'ların tüm sanal makinelerini yeniden başlatın.
Şekil 7'de VM-B ve VM-C, artık tamamlanmış olan uyarı SDV Secure Mesh'e katılır.
3. adım: sdv_provisioning_tool'u çalıştırın
Her sanal makinede sdv_provisioning_tool komutunu çalıştırın.
Araç, yerel hizmet bulma aracısıyla iletişim kurar ve SDV Secure Mesh'in tamamlandığını ve aracının UDS ortak anahtarlarının listesini /vvmtruststore/uds_pubs'ya yazdığını bildirmesini bekler.
Bu durumda araç, yeni yazılan /vvmtruststore/uds_pubs öğesinin karma değerini alır ve bunu çıkış olarak verir ancak bu karma değer bu akışta kullanılmaz.
4. adım: UDS sertifikalarını yükleyin
/vvmtruststore/uds_pubsdeğerini rastgele bir SDV sanal makinesinden çıkarın. Aynı SDV Secure Mesh'teki tüm sanal makineler için aynı olacağından hangi sanal makineyi kullandığınız önemli değildir./vvmtruststore/uds_pubsiçinde listelenen tüm UDS ortak anahtarları için sağlama sertifikalarını alın.- Bu işlem genellikle, bu bilgilerin sertifikaların zaten depolandığı veya alınan ortak anahtarları bilinen UDS ortak anahtarlarının bulunduğu bir veritabanıyla karşılaştırarak sertifikaları oluşturacak olan uzak bir sunucuya gönderilmesi anlamına gelir. Bu veritabanı, ECU üretimi sırasında çıkarılan UDS ortak anahtarlarıyla oluşturulmuş olmalıdır.
- Her bir SDV VM'sinin
/vvmtruststore/uds_certsdeğerini yazın.
5. adım: SDV Boot Mode locked (SDV başlatma modu kilitli) seçeneğini kullanarak yeniden başlatın
SDV önyükleme modu kilitli olan tüm sanal makineleri yeniden başlatın.
SDV Secure Mesh herhangi bir nedenle tamamlanmamışsa 2. adıma geri dönün.