Le mode d'amorçage SDV définit le comportement de l'agent SDV Service Discovery dans une VM SDV lorsqu'il tente de se connecter à d'autres agents Service Discovery (s'exécutant dans d'autres VM SDV) pour établir un maillage sécurisé. Cela ressemble au concept existant d'état de l'appareil du démarrage validé Android. Le mode de démarrage SDV peut être LOCKED ou UNLOCKED.
Le mode Boot SDV est utilisé lors du provisionnement ou de la mise à jour du magasin de confiance des VM du véhicule.
Comportement du maillage sécurisé SDV
Le maillage Service Discovery est dans l'un des états suivants, en fonction des valeurs de démarrage qu'il reçoit : Normal, Warning ou Fatal.
Une voiture n'est remise à son propriétaire que lorsque son maillage est à l'état Normal. Le réseau maillé nécessite une intervention de diagnostic pour passer d'un état Normal à un état Warning. Dans un environnement de production (par exemple, pas de développement ni de débogage), l'état Warning ne se produit que lors du provisionnement.
Fatal est une défaillance fondamentale, semblable à l'échec de la validation de la signature d'une image system_ext dans le bootloader Android. Si le maillage SDV passe de Normal à Fatal uniquement en raison d'une mise à jour OTA (Over-The-Air), la mise à jour est considérée comme mauvaise et le maillage revient à la version Normal d'origine.
Les sections suivantes décrivent les états plus en détail.
Normal
- Le démarrage du système est
SECUREdu point de vue de la découverte de services. - La découverte de services ne se connecte qu'aux pairs qui ont démarré de manière sécurisée. Un pair démarré de manière sécurisée implique que le maillage sécurisé SDV est également sécurisé.
Avertissement
- Le démarrage du système a peut-être été compromis, car certaines vérifications sont désactivées.
- La découverte de services ne se connecte qu'aux pairs qui ont également les mêmes vérifications désactivées. Il fait partie d'un SDV Secure Mesh avec les mêmes propriétés de sécurité que lui-même.
- Le démarrage pair à pair n'a pas pu être vérifié en raison d'échecs locaux ou de fonctionnalités désactivées.
- En dehors d'un environnement ou d'une situation de développement, cela a les implications suivantes :
- Les données utilisateur ne doivent pas être disponibles. Autrement dit, il ne doit pas être transmis ni affecté par la communication sur le maillage sécurisé SDV.
- Seuls les services nécessaires aux flux de provisionnement doivent être disponibles lorsque le maillage est dans cet état.
Fatal
- Erreur critique lors des étapes de démarrage du système.
- Au moins une défaillance ou une erreur fondamentale empêche l'agent de découverte des services d'établir un réseau maillé. Les services locaux ne peuvent pas communiquer avec les services à distance.
- Le démarrage du système est NON SÉCURISÉ du point de vue de la découverte de services.
Mode démarrage SDV
Le mode de démarrage SDV peut avoir deux valeurs : UNLOCKED et LOCKED. Pour l'établissement du maillage Service Discovery, LOCKED indique que les erreurs de validation sont fatales, tandis que UNLOCKED signifie qu'elles ne le sont pas.
| Condition | Mode démarrage SDV | |
|---|---|---|
UNLOCKED
| LOCKED |
|
| Le magasin de confiance VVM local est vide | Avertissement | Fatal |
| Chaîne DICE locale manquante | Fatal | Fatal |
| Échec de la validation de la chaîne DICE locale | Avertissement | Fatal |
| Correspondance du mode SDV et AVB local | Consultez le tableau dans Correspondance entre le mode SDV local et le mode AVB. | |
| Comparaison des valeurs du mode Appareil à distance | Consultez le tableau Comparaison des valeurs du mode Appareil à distance. | |
Échec de la mise en correspondance de uds_pubs à distance |
Avertissement | Fatal |
| Échec de la validation de la chaîne DICE à distance (à l'aide des règles DICE) | Avertissement | Fatal |
| Échec de l'établissement de la liaison d'authentification à distance | Fatal | Fatal |
Correspondance du mode SDV et AVB local
Le tableau suivant montre comment le mode AVB et le mode de démarrage SDV affectent le comportement du réseau maillé sécurisé SDV. Les couleurs sont définies dans la section Intégration spécifique à Android de la documentation AVB.
| Mode AVB x Mode démarrage SDV | Mode démarrage SDV | ||
|---|---|---|---|
UNLOCKED |
LOCKED |
||
AVB LOCKED |
Vert | Avertissement | Normal |
| Jaune | Fatal | Fatal | |
AVB UNLOCKED |
Orange | Avertissement | Fatal |
Valeur du mode Appareil
Dans une chaîne DICE, chaque certificat CDI possède une valeur de mode. Cette valeur décrit l'état de sécurité de ce calque en fonction de sa configuration d'entrée. Pour exprimer la position de sécurité de tous les logiciels sur l'appareil, une valeur de mode de l'appareil est définie. Elle est dérivée de la valeur de mode de toutes les étapes CDI des chaînes DICE pertinentes pour une VM SDV donnée (c'est-à-dire Android HLOS et Secure World) et est définie comme suit :
enum DeviceMode {
NotConfigured = 0,
Recovery = 1,
Debug = 2,
Normal = 3,
}
Algorithme
L'algorithme permettant de calculer la valeur du mode de l'appareil est le suivant :
- Spécifiez
deviceModeen tant queDeviceMode::Normal. - Spécifiez
diceChainListcomme liste des chaînes DICE pertinentes pour une VM SDV. - Pour chaque
diceChaindansdiceChainList:- Spécifiez
cdiListcomme liste de certificats CDI dansdiceChain: - Pour chaque
cdiCertdanscdiList:- Spécifiez
cdiDeviceModecommeDeviceModecorrespondant àcdiCert.mode. - Définissez
deviceModesurmin(deviceMode, cdiDeviceMode).
- Spécifiez
- Spécifiez
- Renvoyez
deviceMode.
Comparaison des valeurs du mode Appareil à distance
Un agent Service Discovery ne se connecte qu'à d'autres agents ayant la même valeur de mode de l'appareil.
La valeur du mode Appareil garantit qu'un réseau maillé ne peut pas comporter de membres ayant des propriétés de sécurité différentes. Le maillage obtenu présente une posture de sécurité uniforme entre tous ses membres.
| Valeur du mode Appareil | Télécommande | ||||
|---|---|---|---|---|---|
| Non configuré | Déboguer | Récupération | Normale | ||
| Local | Non configuré | Fatal | Fatal | Fatal | Fatal |
| Déboguer | Fatal | Avertissement | Fatal | Fatal | |
| Récupération | Fatal | Fatal | Avertissement | Fatal | |
| Normale | Fatal | Fatal | Fatal | Normal | |
Flux de provisionnement en usine
Il s'agit du flux de provisionnement sur la chaîne de montage des véhicules, où l'infrastructure à clé publique est supposée ne pas être disponible.
Ce flux dépend d'une valeur de 32 octets stockée dans une mémoire programmable une seule fois (OTP, One-Time Programmable) appelée VVMFactoryTrust. Lorsqu'elle est définie, cette valeur est transmise au noyau en tant que paramètre nommé androidboot.sdv.vvmfactorytrust.
Toutes les VM d'un ECU doivent avoir le même mode de démarrage SDV et la même valeur VVMFactoryTrust.
État initial
Toutes les ECU sont initialement en mode Boot SDV en mode UNLOCKED, avec des valeurs VVMFactoryTrust et Vehicle VM Trust Store vides, à l'exception des uds_certs présents sur le VVMTrustStore.
La figure 1 illustre un exemple où trois VM SDV (VM-A, VM-B et VM-C) sont réparties dans deux ECU distincts (ECU-0 et ECU-1) :
Figure 1. Provisionnement en usine, état initial.
Étape 1 : Exécutez sdv_provisioning_tool
Démarrez toutes les VM de toutes les ECU.
Sur chaque VM, exécutez sdv_provisioning_tool.
- L'outil communique avec l'agent Service Discovery local et attend qu'il signale que le maillage sécurisé SDV est terminé et que l'agent a écrit la liste des clés publiques UDS dans
/vvmtruststore/uds_pubs. - Dans ce cas, l'outil obtient le hachage du
/vvmtruststore/uds_pubsqui vient d'être écrit et le génère.
Figure 2. Provisionnement en usine, étape 1.
Étape 2 : Écrire VVMFactoryTrust
Sur une VM de chaque ECU :
- Écrivez le hachage de
/vvmtruststore/uds_pubsqui a été généré parsdv_provisioning_toolà l'étape précédente dans VVMFactoryTrust. La manière dont cette écriture est effectuée est spécifique à l'OEM ou au fournisseur et ne relève pas de la présente spécification.
Figure 3. Provisionnement en usine, étape 2.
Étape 3 : Redémarrez en mode SDV Boot Mode locked
Redémarrez toutes les VM de toutes les ECU en mode SDV Boot en mode LOCKED.
L'agent Service Discovery fait confiance aux VM des ECU avec les clés publiques UDS listées dans uds_pubs, car le hachage de ce fichier correspond à VVMFactoryTrust.
Étant donné que les ECU ont été provisionnées ensemble, elles sont liées de manière permanente et peuvent être considérées comme un seul élément matériel du point de vue de la validation de la chaîne DICE.
Figure 4. Provisionnement en usine, étape 3.
Procédure de remplacement de pièces
Il s'agit du processus de provisionnement dans un atelier de réparation automobile ou un garage agréé, où un calculateur défectueux doit être remplacé par un nouveau calculateur non provisionné.
Ce flux dépend des certificats UDS émis directement par l'autorité racine indiquée dans vvmconfig ou indirectement, par le biais d'une chaîne d'autorités intermédiaires.
État initial
Toutes les VM sont déjà provisionnées en usine et s'exécutent en mode démarrage SDV en mode LOCKED.
La figure 5 montre un exemple dans lequel l'ECU-0 ne fonctionne pas correctement et doit être remplacé :
Figure 5. Remplacement de pièces, état initial.
Étape 1 : Installez le nouveau calculateur
Installez le nouveau calculateur, qui est dans un état vide et non provisionné.
Dans la figure 6, lorsque l'ECU-2 (l'ECU de remplacement) est mis sous tension, il existe deux mailles sécurisées SDV disjointes : l'une à l'état Warning et l'autre à l'état Normal. Les deux mailles SDV Secure sont incomplètes.
Figure 6. Remplacement de pièces, étape 1.
Étape 2 : Redémarrez en mode Boot SDV déverrouillé
Redémarrez toutes les VM de tous les ECU en mode SDV Boot en mode UNLOCKED.
Dans la figure 7, les VM-B et VM-C rejoignent le maillage sécurisé SDV Warning, qui est complet.
Figure 7. Remplacement de pièces, étape 2.
Étape 3 : Exécutez sdv_provisioning_tool
Sur chaque VM, exécutez sdv_provisioning_tool.
L'outil communique avec l'agent Service Discovery local et attend qu'il signale que le maillage sécurisé SDV est terminé et que l'agent a écrit la liste des clés publiques UDS dans /vvmtruststore/uds_pubs.
Dans ce cas, l'outil obtient le hachage du /vvmtruststore/uds_pubs qui vient d'être écrit et le génère, mais ce hachage n'est pas utilisé dans ce flux.
Figure 8. Remplacement de pièces, étape 3.
Étape 4 : Installez les certificats UDS
- Extrayez
/vvmtruststore/uds_pubsd'une VM SDV arbitraire. Peu importe celui que vous choisissez, car il est identique pour toutes les VM du même maillage sécurisé SDV. - Récupérez les certificats de provisionnement pour toutes les clés publiques UDS listées dans
/vvmtruststore/uds_pubs.- Cela signifie généralement l'envoyer à un serveur distant qui a déjà stocké les certificats ou qui les génère en vérifiant les clés publiques reçues par rapport à une base de données de clés publiques UDS connues. Cette base de données a été créée à partir des clés publiques UDS extraites lors de la fabrication de l'ECU.
- Notez l'adresse IP (
/vvmtruststore/uds_certs) de chaque VM SDV.
Figure 9. Remplacement de pièces, étape 4.
Étape 5 : Redémarrez en mode SDV Boot Mode locked
Redémarrez toutes les VM en mode Boot SDV en mode LOCKED.
Si le maillage sécurisé SDV est incomplet, revenez à l'étape 2.
Figure 10. Remplacement de pièces, étape 5.