Pour renforcer la confiance dans les applications Google, nous nous engageons désormais à lister toutes les applications de produits Google dans notre journal de transparence. Nous avons publié le journal de transparence pour vérifier publiquement les affirmations que nous faisons concernant ces APK.
Modèle de menace
Les systèmes de transparence peuvent être utilisés pour détecter et ainsi dissuader les attaques de la chaîne d'approvisionnement. Nous allons illustrer cela avec quelques exemples.
Imaginons qu'un pirate informatique modifie de manière malveillante une application Google et parvienne même à la signer avec la clé de signature utilisée pour la distribuer sur Google Play. Grâce à un journal de transparence binaire, toute personne recevant un fichier APK douteux peut l'utiliser comme source de vérité terrain vérifiable pour confirmer l'authenticité de l'APK. Ils constateront que Google n'a pas ajouté les métadonnées APK correspondantes au journal et sauront qu'ils ne doivent pas faire confiance à l'APK piraté.
Étant donné que la publication dans le journal est un processus distinct du processus de publication avec signature (comme illustré dans le diagramme de l'écosystème), cela augmente la barre pour l'attaquant au-delà de la simple compromission de la clé.
Nous prévoyons également d'intégrer ce journal à un réseau public de témoins à l'aide d'un protocole de témoin standard. Nous encourageons les tiers externes et indépendants à surveiller l'intégrité de ce journal accessible au public. Ces parties peuvent attester de la propriété d'ajout uniquement du journal et signaler toute falsification.
L'existence d'un tel système de transparence et la possibilité de découvrir plus facilement les attaques découragent les activités malveillantes. Si un APK est compromis, mais que les utilisateurs ne font confiance qu'à ceux qui figurent dans le journal, l'APK compromis devra être exposé publiquement. Cela augmente la probabilité de découvrir l'existence de l'APK piraté et de prendre des mesures pour arrêter sa distribution.
Modèle du demandeur
Le modèle de 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 des applications propriétaires Google, l'affirmation que nous faisons est que le hachage d'un fichier APK enregistré dans ce journal représente une version spécifique d'une application Google officielle destinée à un usage public.
- ClaimGoogleApp : (Moi, Google, affirme que
$hashAppest pour$googleApp), où :$hashAppest un hachage cryptographique (par exemple, SHA256) du fichier APK (y compris les APK divisés) d'une version spécifique de$googleApp.$googleAppest un package Android (APK) qui constitue une application créée et distribuée par Google.
Toute personne disposant d'une copie de $googleApp peut valider cette affirmation. Nous décrivons ce processus en détail sur la page de validation.
Contenu du journal
Lorsque Google publie une nouvelle version d'un fichier APK, il ajoute une entrée correspondante au journal de transparence des APK propriétaires de Google.
Chaque entrée de ce journal contient quatre métadonnées :
- Hachage du fichier APK d'une application signée par Google. Il s'agit d'une chaîne hexadécimale du condensé SHA256 de l'intégralité du fichier.
- Description du type du hachage précédent. Il s'agit d'une chaîne.
- Le nom du package de l'APK. Il s'agit d'une chaîne.
- Numéro de version (versionCode) de l'APK. Il s'agit d'un nombre entier non nul.
Le format d'une entrée de journal correspond à la concaténation des quatre informations avec un caractère de nouvelle ligne (\n), comme illustré ci-dessous :
hash\nSHA256(APK)\npackage_name\npackage_version\n
Étant donné que nous mesurons l'intégralité du fichier APK, la description du hachage est définie sur SHA256(APK). Cela permet de couvrir de manière exhaustive le contenu de chaque fichier et de faciliter l'obtention de cette mesure pour les utilisateurs.
Schéma de l'écosystème
