Ağ durumu ve temel hazırlık

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

  1. deviceMode, DeviceMode::Normal olsun
  2. diceChainList, bir SDV VM'siyle alakalı DICE zincirlerinin listesi olsun.
  3. diceChainList içindeki her diceChain için:
    1. cdiList, diceChain içindeki CDI sertifikalarının listesi olsun:
    2. cdiList içindeki her cdiCert için:
      1. cdiDeviceMode, cdiCert.mode ile ilişkili DeviceMode olsun.
      2. deviceMode değerini min(deviceMode, cdiDeviceMode) olarak ayarlayın.
  4. 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.

2. adım: VVMFactoryTrust yazın

Her ECU'nun bir sanal makinesinde:

  • Önceki adımda sdv_provisioning_tool tarafından oluşturulan /vvmtruststore/uds_pubs karması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_pubs değ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_pubs iç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_certs değ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.