Um das Vertrauen in Google-Apps zu stärken, werden wir ab sofort jede Google-Produkt-App in unserem Transparenzprotokoll auflisten. Wir haben das Transparenzprotokoll veröffentlicht, um die von uns in Bezug auf diese APKs gemachten Behauptungen öffentlich zu überprüfen.
Bedrohungsmodell
Transparenzsysteme können verwendet werden, um Angriffe auf die Lieferkette zu erkennen und so abzuwehren. Hier einige Beispiele:
Angenommen, ein Angreifer manipuliert eine Google-App und signiert sie sogar mit dem Signaturschlüssel, der für die Verteilung über Google Play verwendet wird. Mit einem binären Transparenzlog kann jeder, der eine fragwürdige APK erhält, diese als überprüfbare Quelle der Grundwahrheit verwenden, um die Authentizität der APK zu bestätigen. Sie werden feststellen, dass Google die entsprechenden APK-Metadaten nicht dem Log hinzugefügt hat, und wissen, dass sie dem manipulierten APK nicht vertrauen sollten.
Da die Veröffentlichung im Protokoll ein separater Prozess vom Releaseprozess mit Signierung ist (siehe Ökosystemdiagramm), wird die Hürde für den Angreifer über die bloße Kompromittierung des Schlüssels hinaus erhöht.
Wir planen, dieses Log auch in ein öffentliches Netzwerk von Zeugen zu integrieren, das ein standardisiertes Zeugenprotokoll verwendet. Wir empfehlen externen, unabhängigen Parteien, die Integrität dieses öffentlich verfügbaren Logs zu überwachen. Diese Parteien können die Append-only-Eigenschaft des Logs bestätigen und Manipulationen melden.
Die Existenz eines solchen Transparenzsystems und die zusätzliche Auffindbarkeit von Angriffen schrecken vor böswilligen Aktivitäten ab. Wenn ein APK manipuliert wird, Nutzer aber nur den APKs im Log vertrauen, muss das manipulierte APK öffentlich zugänglich sein. Dadurch steigt die Wahrscheinlichkeit, dass das kompromittierte APK entdeckt wird und Maßnahmen ergriffen werden können, um die Verteilung zu beenden.
Modell für Anspruchsteller
Das Claimant Model (Modell für Anspruchsteller) ist ein Framework, mit dem Rollen und Artefakte in einem überprüfbaren System definiert werden. Im Fall von Google 1st Party App Transparency wird behauptet, dass der Hash einer in diesem Log aufgezeichneten APK-Datei eine bestimmte Version einer offiziellen Google-App für die öffentliche Nutzung darstellt.
- ClaimGoogleApp: (I, Google, claim that
$hashAppis for$googleApp), where:$hashAppist ein kryptografischer Hash (z.B. SHA256) der APK-Datei (einschließlich unterteilter APKs) einer bestimmten Version von$googleApp.$googleAppist ein Android-Paket (APK), aus dem eine App besteht, die von Google erstellt und vertrieben wird.
Jeder, der eine Kopie von $googleApp hat, kann diesen Anspruch bestätigen. Wir beschreiben diesen Prozess ausführlich auf der Bestätigungsseite.
Protokollinhalt
Wenn Google eine neue Version eines APK veröffentlicht, wird ein entsprechender Eintrag im Google 1st Party APK Transparency Log hinzugefügt.
Jeder Eintrag in diesem Log enthält vier Metadaten:
- Der Hash der APK-Datei einer von Google signierten App. Dies ist ein Hexadezimalstring des SHA256-Digest der gesamten Datei.
- Die Beschreibung des Typs des vorherigen Hashs. Das ist ein String.
- Der Paketname der APK. Das ist ein String.
- Die Versionsnummer (versionCode) des APK. Dies ist eine Ganzzahl ungleich null.
Das Format eines Logeintrags ist die Verkettung der vier Informationen mit einem Zeilenumbruchzeichen (\n), wie im Folgenden dargestellt:
hash\nSHA256(APK)\npackage_name\npackage_version\n
Da wir die gesamte APK-Datei messen, wird die Hash-Beschreibung auf SHA256(APK) festgelegt. So wird der Inhalt jeder Datei umfassend abgedeckt und Nutzer können diese Messung leichter durchführen.
Ökosystemdiagramm
