Ağ durumu ve temel hazırlık

SDV başlatma modu, güvenli bir ağ oluşturmak için diğer hizmet bulma aracılarına (diğer SDV VM'lerinde çalışan) bağlanmaya çalışırken bir SDV VM'sindeki SDV hizmet bulma aracısının nasıl davrandığını tanımlar. Bu, Android Doğrulanmış Başlatma'daki mevcut device state kavramına benzer.

SDV önyükleme modu, Vehicle VM Trust Store (VVM Trust Store, vvmtruststore olarak da bilinir) sağlanırken veya güncellenirken kullanılır.

SDV Secure Mesh davranışı

Hizmet Keşfi ağı, aldığı önyükleme değerlerine bağlı olarak şu durumlardan birinde olur: Normal, Warning veya Fatal.

Müşterilere teslim edilen üretim araçlarında SDV Secure Mesh, Normal durumunda olmalıdır. Ağın Normal durumundan Warning durumuna geçmesi için teşhis müdahalesi gerekir. Üretim ortamında (örneğin, geliştirme veya hata ayıklama değil) Warning durumu yalnızca sağlama sırasında gerçekleşir.

Fatal, Android önyükleyicisinde system_ext görüntüsünün imza doğrulamasının başarısız olması gibi temel bir hatadır. SDV Secure Mesh, yalnızca kablosuz (OTA) güncelleme nedeniyle Normal sürümünden Fatal sürümüne geçiş yaparsa güncelleme kötü olarak kabul edilir ve ağ, orijinal Normal sürümüne geri döner.

Aşağıdaki bölümlerde 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ılan eşlerle bağlantı kurar. Güvenli bir şekilde başlatılan bir eş, SDV Secure Mesh'in de güvenli olduğu anlamına gelir.

Uyarı

  • Bazı doğrulamalar devre dışı bırakıldığından sistem önyüklemesi tehlikeye girmiş olabilir.
  • Hizmet Bulma, yalnızca devre dışı bırakılmış doğrulama kümesiyle aynı olan eşlerle bağlantı kurar. Bu sayede, SDV Secure Mesh'teki tüm eşlerin aynı güvenlik özelliklerini paylaşması sağlanır.
  • Yerel hatalar veya devre dışı bırakılan özellikler nedeniyle eşler arası başlatmanın başarılı olup olmadığı doğrulanamıyor.
  • Geliştirme ortamı veya durumu dışında bu durumun aşağıdaki etkileri vardır:
    • Kullanıcı verileri kullanılamıyor olmalıdır. Yani, SDV Secure Mesh üzerinden iletişimle iletilmemeli veya etkilenmemelidir.
    • Ağ bu durumdayken yalnızca sağlama akışları için gereken hizmetler kullanılabilir olmalıdır.

Kritik

  • Sistemin başlatma aşamalarında kritik bir hata oluştu.
  • Hizmet Bulma aracısının bir ağ oluşturmasını engelleyen en az bir temel arıza veya hata vardır. Yerel hizmetler, uzak hizmetlerle iletişim kuramıyor.
  • Sistem başlatma, Hizmet Bulma açısından UNSECURE.

SDV Başlatma Modu

SDV Başlatma Modu'nun iki olası değeri vardır: LOCKED ve UNLOCKED. Hizmet Bulma ağı oluşturma için LOCKED, doğrulama hatalarının kritik olduğunu, UNLOCKED ise kritik olmadığını gösterir.

Koşul SDV Başlatma Modu
UNLOCKED LOCKED
Yerel VVM güvenilir sertifika 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şmesi Yerel SDV ve AVB modu eşleşmesi bölümündeki tabloya bakın.
Uzak cihaz modu değeri karşılaştırması Uzak cihaz modu değeri karşılaştırması bölümündeki tabloya bakın.
Uzaktan uds_pubs eşleşme hatası Uyarı Kritik
Uzaktan DICE zinciri doğrulama hatası (DICE politikaları kullanılarak) Uyarı Kritik
Uzak kimlik doğrulama el sıkışması başarısız oldu Kritik Kritik

Yerel SDV ve AVB Modu eşleşmesi

Aşağıdaki tabloda, AVB modu ve SDV Boot Mode'un SDV Secure Mesh davranışını nasıl etkilediği gösterilmektedir. Renkler, AVB belgelerinin Android'e özel entegrasyon bölümünde tanımlandığı gibidir.

AVB Modu x SDV Başlatma Modu SDV Başlatma Modu
UNLOCKED LOCKED
AVB LOCKED Yeşil Uyarı Normal
Sarı Kritik Kritik
AVB UNLOCKED Orange Uyarı Kritik

Cihaz modu değeri

DICE zincirinde her CDI sertifikasının bir mod değeri vardır. Bu değer, yapılandırma girişine göre söz konusu katmanın güvenlik durumunu açıklar. SDV spesifikasyonu, cihazdaki tüm yazılımların güvenlik duruşunu ifade etmek için bir Cihaz Modu değeri tanımlar. Bu değer, belirli bir SDV VM'siyle (ör. Android HLOS ve Secure World) ilgili DICE zincirlerindeki tüm CDI aşamalarının mod değerinden elde edilir ve aşağıdaki numaralandırmayı kullanır:

enum DeviceMode {
  NotConfigured = 0,
  Recovery = 1,
  Debug = 2,
  Normal = 3,
}

Algoritma

Cihaz modu değerini hesaplamak için kullanılan algoritma şöyledir:

  1. deviceMode öğesini DeviceMode::Normal olarak belirtin.
  2. Bir SDV sanal makinesiyle ilgili DICE zincirleri listesi olarak diceChainList değerini belirtin.
  3. diceChainList içindeki her diceChain için:
    1. diceChain içinde CDI sertifikaları listesi olarak cdiList belirtin:
    2. cdiList içindeki her cdiCert için:
      1. cdiCert.mode ile eşleşen DeviceMode olarak cdiDeviceMode değerini belirtin.
      2. deviceMode değerini min(deviceMode, cdiDeviceMode) olarak ayarlayın.
  4. Dönüş deviceMode.

Uzak cihaz modu değeri karşılaştırması

Hizmet Bulma aracısı yalnızca 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 üyelerin olmasını engeller. Elde edilen 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 temel hazırlık akışı

Bu, genel anahtar altyapısının kullanılamadığı varsayılan araç montaj hattındaki sağlama akışıdır. Bu akış, Vehicle VM (VVM) Factory Trust veya vvmfactorytrust olarak adlandırılan tek seferlik programlanabilir (OTP) bellekte depolanan 32 baytlık bir değere bağlıdır. Ayarlandığında bu değer, androidboot.sdv.vvmfactorytrust adlı bir parametre olarak çekirdeğe iletilir.

Bir ECU'daki tüm VM'ler aynı SDV önyükleme moduna ve VVM fabrika güvenine sahip olmalıdır.

İlk durum

Tüm ECU'lar başlangıçta UNLOCKED modunda SDV önyükleme modundadır. vvmtruststore üzerinde bulunan uds_certs dışındaki tüm ECU'lar boş VVM Fabrika Güvenine ve Araç VM Güven Deposu'na sahiptir. Ş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:

Fabrikada sağlama örneği, başlangıç durumu

Şekil 1. Fabrika hazırlığı, ilk durum.

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 komutunu çalıştırın.

  1. Araç, yerel hizmet keşfi 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 konumuna yazdığını bildirmesini bekler.
  2. Bu durumda araç, yeni yazılan /vvmtruststore/uds_pubs öğesinin karma değerini alır ve bunu çıkış olarak verir.

Fabrika hazırlığı, 1. adım

Şekil 2. Fabrika hazırlığı, 1. adım.

2. adım: VVM Factory Trust'ı yazın

Her ECU'nun bir sanal makinesinde:

  1. Önceki adımda sdv_provisioning_tool tarafından oluşturulan /vvmtruststore/uds_pubs karmasını VVM Factory Trust'a yazın. Bu yazma işleminin nasıl yapıldığı, OEM'ye veya tedarikçi firmaya özeldir ve bu spesifikasyonun kapsamı dışındadır.

Fabrikada hazırlama, 2. adım

Şekil 3. Fabrikada hazırlama, 2. adım.

3. adım: SDV Boot Mode locked (SDV başlatma modu kilitli) seçeneğini kullanarak yeniden başlatın.

LOCKED modunda SDV önyükleme modundaki tüm ECU'lardaki tüm VM'leri yeniden başlatın.

Hizmet Bulma aracısı, bu dosyanın karması VVM Factory Trust 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 DICE zinciri doğrulama açısından tek bir donanım parçası olarak kabul edilebilir.

Fabrikada temel hazırlık, 3. adım

Şekil 4. Fabrikada sağlama, 3. adım

Parça değiştirme akışı

Bu, yetkili bir araba tamir atölyesinde veya servisinde temel hazırlık akışıdır. Arızalı bir ECU'nun, temel hazırlığı yapılmamış yeni bir ECU ile değiştirilmesi gerekir.

Bu akış, vvmconfig içinde belirtilen kök yetkili tarafından doğrudan veya bazı ara yetkili zincirleri aracılığıyla dolaylı olarak verilen UDS sertifikalarına bağlıdır.

İlk durum

Tüm sanal makineler zaten fabrikada hazırlanmış ve LOCKED modunda SDV Boot Mode'da çalışıyor.

Şekil 5'te, ECU-0'ın arızalı olduğu ve değiştirilmesi gerektiği bir örnek gösterilmektedir:

Parça değişimi, ilk durum

Şekil 5. Parça değişimi, ilk durum.

1. adım: Yeni ECU'yu takın

Boş ve hazırlanmamış durumda olan yeni ECU'yu takın.

Şekil 6'da, ECU-2'ye (yedek ECU) güç verildiğinde iki ayrı SDV Secure Mesh vardır: biri Warning durumunda, diğeri ise Normal durumundadır. Her iki SDV Secure Mesh de eksik.

Parça değişimi, 1. adım

Şekil 6. Parça değişimi, 1. adım.

2. adım: SDV Boot Mode kilidi açıkken yeniden başlatın

UNLOCKED modunda SDV önyükleme modundaki tüm ECU'ların tüm sanal makinelerini yeniden başlatın.

Şekil 7'de VM-B ve VM-C, tamamlanmış olan Warning SDV Secure Mesh'e katılıyor.

Parça değişimi, 2. adım

Şekil 7. Parça değişimi, 2. adım.

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 keşfi aracısıyla iletişim kurar ve SDV Secure Mesh'in tamamlandığını ve aracının UDS herkese açık anahtar listesini /vvmtruststore/uds_pubs konumuna 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.

Parça değişimi, 3. adım

Şekil 8. Parça değişimi, 3. adım.

4. adım: UDS sertifikalarını yükleyin

  • Rastgele bir SDV VM'sinden /vvmtruststore/uds_pubs çıkarın. Aynı SDV Secure Mesh'teki tüm sanal makineler için aynı olduğundan hangisini seçtiğiniz önemli değildir.
  • /vvmtruststore/uds_pubs içinde listelenen tüm UDS ortak anahtarları için sağlama sertifikalarını alın.
    • Bu adımda genellikle çıkarılan UDS ortak anahtarlarının (veya /vvmtruststore/uds_pubs dosyasının) uzaktan sağlama sunucusuna gönderilmesi gerekir. Sunucu, ECU üretimi sırasında oluşturulan bilinen UDS ortak anahtarlarının veritabanına karşı alınan ortak anahtarları kontrol ederek önceden var olan sertifikaları alır veya yenilerini oluşturur.
  • Her bir SDV VM'sinin /vvmtruststore/uds_certs değerini yazın.

Parça değişimi, 4. adım

Şekil 9. Parça değişimi, 4. adım.

5. adım: SDV Boot Mode locked (SDV başlatma modu kilitli) seçeneğini kullanarak yeniden başlatın

SDV önyükleme modundaki tüm sanal makineleri LOCKED modunda yeniden başlatın.

SDV Secure Mesh tamamlanmamışsa 2. adıma geri dönün.

Parça değişimi, 5. adım

Şekil 10. Parça değişimi, 5. adım.