Transparence binaire

Le journal de transparence binaire du Pixel est publié par Google pour accroître la confiance dans les images d'usine Pixel. Cette page explique comment Google applique la transparence binaire aux appareils Android Pixel.

Si vous souhaitez exécuter le micrologiciel Pixel avec le plus haut niveau de confiance, consultez la procédure de validation sur la validation complète de la transparence binaire du pixel.

Si vous souhaitez vous familiariser avec les concepts de la transparence binaire du Pixel à l'aide de votre appareil Pixel, consultez le processus de validation sur la page du journal de transparence binaire du Pixel.

Présentation

Les chaînes d'approvisionnement logicielles sont de plus en plus vulnérables aux attaques, allant des clés de signature compromises à l'injection de code clandestine en passant par les attaques internes.

Pour renforcer la confiance dans le logiciel sur lequel nous nous appuyons, nous pouvons créer un journal de transparence avec les propriétés suivantes:

  • "Ajouter uniquement" : le contenu du journal ne peut pas être supprimé, modifié ni inséré de manière rétroactive de manière non détectable
  • Cryptographie assurée: garantissez la propriété "append-only" en exploitant la structure de données de l'arborescence de Merkle
  • Audit possible publiquement: tout le monde peut interroger le contenu du journal.

En publiant les métadonnées d'un logiciel sous forme de contenu de journal, vous pouvez accroître la confiance dans les binaires de confiance et exécutés en fournissant un enregistrement vérifiable de leur preuve.

Modèle de menace

Les systèmes de transparence peuvent servir à détecter et donc à prévenir les attaques sur la chaîne d'approvisionnement. Prenons quelques exemples:

Supposons qu'un pirate informatique modifie une image Pixel de manière malveillante et parvient même à la signer avec la clé appartenant à Google. Toute personne qui reçoit l'image malveillante peut interroger le journal de transparence binaire pour vérifier l'authenticité de l'image. L'utilisateur constate que Google n'a pas ajouté les métadonnées d'image correspondantes au journal et s'assure que l'image compromise n'est pas fiable. Étant donné que la publication dans le journal est un processus distinct du processus de publication avec signature, cela pousse la barre plus haut pour le pirate informatique au-delà de simplement compromettre la clé. De plus, les parties externes indépendantes sont encouragées à surveiller l'intégrité du journal, car il est public. Ces parties peuvent attester de la propriété de type "append-only" du journal et signaler toute altération.

Le projet Android Open Source est étendu et repose sur des dépendances de code comme n'importe quel autre logiciel moderne. Malheureusement, cela peut servir de vecteur d'attaque si un acteur malveillant est capable d'introduire une porte dérobée dans l'une des dépendances du code. Avant de publier une version Pixel et de la publier dans un journal de transparence binaire, Google effectue des audits de code. De cette façon, si un propriétaire de Pixel vérifie que son image se trouve dans le journal, il peut temporairement confirmer qu'elle a passé les audits de sécurité et de conformité.

Enfin, l'existence même de ce système et la visibilité accrue des attaques découragent les activités malveillantes. Si une image est compromise, mais que les utilisateurs ne font confiance qu'à celles qui se trouvent dans le journal, l'image compromise doit être exposée publiquement. Cela augmente la probabilité de découvrir l'existence de l'image compromise, et des mesures peuvent être prises pour supprimer sa distribution.

Modèle du demandeur

Le modèle du demandeur est un framework utilisé pour définir les rôles et les artefacts dans un système vérifiable. Dans le cas de la transparence binaire du Pixel, nous affirmons que les images d'usine téléchargées à partir du site Web des images d'usine Android sont des images d'usine Google/Pixel officielles.

  • ClaimFactoryImage: (I, Google, prétend que $factoryImage_instance est pour $deviceNameOrSku), où :
    • $factoryImage_instance sont toutes des images d'usine, à partir du Pixel 6, que vous pouvez télécharger sur le site Web officiel des images d'usine Android.
    • Pour déterminer $deviceNameOrSku, accédez à Paramètres -> À propos du téléphone -> Nom de l'appareil depuis l'appareil de l'utilisateur. Le $deviceNameOrSku correspondant peut être utilisé pour trouver le $factoryImage_instance correct à partir du site Web mentionné précédemment.

Contenu du journal

Lorsque Google publie une nouvelle image d'usine pour le Pixel 6 ou les téléphones plus récents, une entrée correspondante est ajoutée au journal de transparence binaire du Pixel.

L'entrée contient deux métadonnées d'image:

  1. Empreinte de build de l'image d'usine. Cette chaîne unique lisible par l'humain correspond à une implémentation et à une révision spécifiques d'Android, ce qui permet des personnalisations spécifiques au micrologiciel.
  2. Condensé VBMeta de l'image d'usine. Il s'agit d'un hachage de tous les descripteurs et métadonnées utilisés dans le démarrage validé Android. Pour en savoir plus, consultez le dépôt Android Verified Boot.

Google fournit les tools nécessaires à un propriétaire de Pixel pour extraire les deux informations d'une image donnée. L'utilisateur peut alors interroger le journal pour vérifier l'authenticité de l'image.

Le journal ne contient aucune donnée à caractère personnel associée à un appareil, mais uniquement les métadonnées de l'image d'usine.

Schéma d'un écosystème

Schéma de l'écosystème de journaux vérifiable