Le journal de transparence binaire Pixel exploite la technologie de journalisation de la transparence.
L'utilité des journaux de transparence La transparence des certificats, une plate-forme qui exige que les autorités de certification publient les certificats qu'elles les journaux de transparence des certificats publics. Ce processus a considérablement réduit contre les erreurs d'émission des certificats, ce qui renforce la sécurité Internet. De nombreux opérateurs de journaux de transparence des certificats reposent sur une implémentation de journaux de transparence disponibles sur transparency.dev.
Les journaux de transparence sont implémentés avec les arborescences Merkle. Dans cette page, nous partons du principe que des arbres de Merkle et de la transparence binaire. Voir Structures de données vérifiables pour obtenir un aperçu des arbres Merkle et page de destination pour obtenir un aperçu du binaire la transparence.
Implémentation des journaux
Le journal de transparence binaire du pixel est implémenté en tant que arbre de Merkle basé sur des tuiles. La racine du contenu des cartes sont exposés https://developers.google.com/android/binary_transparency/tile. Remarque: il s'agit il ne s'agit pas d'une page Web standard ; les entrées de journal contenues dans ses sous-répertoires peuvent être lues de façon programmatique avec la bibliothèque Golang SumDB bibliothèque TLog, et non via un navigateur.
Consultez la section Contenu des journaux pour découvrir la description de ce que contiennent les entrées.
Le hachage racine de l'arbre de Merkle d'un journal, contenu dans un point de contrôle, est diffusé https://developers.google.com/android/binary_transparency/checkpoint.txt. Il est présenté dans format de point de contrôle. Les feuilles de cet arbre sont disponibles à l'adresse https://developers.google.com/android/binary_transparency/image_info.txt. La signature du point de contrôle peut être vérifiée à l'aide de la clé publique suivante:
-----BEGIN CERTIFICATE-----
MIICPDCCAeOgAwIBAgIVAPooxISw/nFF/dPwmCUaV36Z4s3hMAoGCCqGSM49BAMCMHQxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYD
VQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAgFw0y
MTA3MTkyMjQxNDFaGA8yMDUxMDcxOTIyNDE0MVowdDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC0dvb2dsZSBJbmMuMRAw
DgYDVQQLEwdBbmRyb2lkMRAwDgYDVQQDEwdBbmRyb2lkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
QgAEU83uXNUiTYE53c2TfdWmqpW20bBXy4KEf5Ff8dV8GLKlVAXKHyjw3Lp9J3E0yCRJ/39XKeuA
AMF7KzSvhD248KNQME4wDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUHRpvuNkzjtBY213BWgUyWWHm
3VYwHwYDVR0jBBgwFoAUHRpvuNkzjtBY213BWgUyWWHm3VYwCgYIKoZIzj0EAwIDRwAwRAIgZsZb
CNBXRkCKLS+LG/41VWj1cTszt9QCdJQNuy7aT94CIDPgn7v5b1ykBVUTuLgRSofxAzHg9R4dg1oA
7tTFAuDg
-----END CERTIFICATE-----
Le processus de vérification lit le point de contrôle et les vignettes contenant les entrées du journal.
Processus de validation
Un journal de transparence est implémenté avec un arbre de Merkle composé de hachages. A un nœud feuille contient des données et un nœud parent contient le hachage de ses enfants.
Deux calculs sont effectués sur l'arbre de Merkle pour vérifier des journaux de transparence: la preuve d'inclusion et la preuve de cohérence. La first prouve que le journal inclut une entrée correspondant à une version d'image, c'est-à-dire. L'entrée de journal inclut VBMeta digest un hachage qui représente les images de l'OS, qui peuvent être renvoyées par un appareil. La la seconde montre que lorsque de nouvelles entrées sont ajoutées à l'arborescence, le nouveau point de contrôle est à la version précédente de l'arborescence.
Pour valider l'image de votre Pixel, effectuez la preuve d'inclusion. Effectuer la le calcul de preuve de la cohérence est facultatif, car les tiers sont continuellement le faire.
Si vous souhaitez vous familiariser avec les concepts de validation dans Pixel Transparence binaire, vous pouvez suivre les instructions ci-dessous pour utiliser l'image en cours d'exécution sur votre appareil Pixel. Si vous souhaitez exécuter le micrologiciel Pixel degré de confiance, consultez la procédure de validation Validation complète pour la transparence binaire Pixel
Prérequis
Assurez-vous que les dépendances suivantes sont disponibles:
- Golang: l'outil Verification doit être conçu avec Go 1.17 ou une version ultérieure, disponible à partir du site Go.
- Android Debug Bridge (adb): communique avec un appareil Android pour l'inspecter l'image, disponible sur Site Web Android SDK Platform Tools :
- Vérificateur de preuve d'inclusion: communique avec le journal pour vérifier que le Pixel dans le journal de transparence binaire.
# Source code for the inclusion proof verifier is found at avb/tools/transparency/verify
git clone https://android.googlesource.com/platform/external/avb
Preuve d'inclusion
Le propriétaire d'un Pixel peut vérifier que son image figure dans le journal en extrayant d'abord la les métadonnées pertinentes, puis en comparant leur hachage racine recalculé avec le hachage racine contenus dans point de contrôle publié. Si elles correspondent, le propriétaire du Pixel peut s'assurer qu'il bénéficie de certaines protections. en quelques exemples Modèle de menace.
Pour vérifier que l'image sur un appareil Pixel figure dans le journal de transparence, vous connecter à l'appareil avec adb ; puis exécutez les commandes suivantes:
FINGERPRINT=$(adb shell getprop ro.build.fingerprint)
VBMETA_DIGEST=$(adb shell getprop ro.boot.vbmeta.digest)
LOG_ENTRY="${FINGERPRINT}\n${VBMETA_DIGEST}\n"
PAYLOAD_PATH="/tmp/log_payload.txt"
echo -e $LOG_ENTRY >> $PAYLOAD_PATH
cd avb/tools/transparency/verify/
go build cmd/verifier/verifier.go
./verifier --payload_path=$PAYLOAD_PATH
Le premier bloc récupère les métadonnées d'un appareil Pixel au format d'un
et l'enregistre dans /tmp/log_payload.txt.
Le deuxième bloc exécute le vérificateur de preuve d'inclusion publié dans le Dépôt de démarrage validé Android : Cet outil calcule le hachage de l'entrée de journal candidate, puis récupère les hachages nécessaires pour recalculer le point de contrôle à partir du journal et le comparer avec le point de contrôle publié par le journal.
Le résultat de la commande est écrit dans stdout:
OKsi l'image est incluse dans le journal.FAILUREsi ce n'est pas le cas.
Preuve de la cohérence (facultatif)
Étant donné que Google publie régulièrement de nouvelles versions de l'image d'usine Pixel, les le journal de transparence ne cesse de croître. Un témoin vérifie que l'arbre pousse. de manière cohérente avec ses feuilles précédentes. Le témoin garde une trace le hachage racine de l'arborescence, puis calcule le hachage racine du candidat suivant en demandant le nouveau des hachages feuilles de l'arbre. Pour qu'un journal de transparence soit inviolable, il doit vérifier en permanence la cohérence.
Le comportement "append-only" du journal de transparence est activement vérifié par des tiers la plupart des utilisateurs n'ont pas besoin de le faire eux-mêmes, mais il est possible pour permettre à quiconque de surveiller la cohérence du journal. Google a publié une version Open Source sur la mise en œuvre d'un témoin Dépôt GitHub. Il est nécessaire de utilisez la spécifique au journal Pixel Binary Transparency (PixelBT).