Google 致力于为黑人社区推动种族平等。查看具体举措
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Unterzeichnung der Anwendung

Mithilfe der Anwendungssignierung können Entwickler den Autor der Anwendung identifizieren und ihre Anwendung aktualisieren, ohne komplizierte Schnittstellen und Berechtigungen zu erstellen. Jede Anwendung, die auf der Android-Plattform ausgeführt wird, muss vom Entwickler signiert werden . Anwendungen, die versuchen, ohne Signatur zu installieren, werden entweder von Google Play oder vom Paketinstallationsprogramm auf dem Android-Gerät abgelehnt.

Bei Google Play verbindet das Signieren von Anwendungen das Vertrauen von Google in den Entwickler und das Vertrauen des Entwicklers in seine Anwendung. Entwickler wissen, dass ihre Anwendung unverändert für das Android-Gerät bereitgestellt wird. Entwickler können für das Verhalten ihrer Anwendung zur Verantwortung gezogen werden.

Unter Android ist das Signieren von Anwendungen der erste Schritt zum Platzieren einer Anwendung in der Anwendungssandbox. Das signierte Anwendungszertifikat definiert, welche Benutzer-ID welcher Anwendung zugeordnet ist. Verschiedene Anwendungen werden unter verschiedenen Benutzer-IDs ausgeführt. Durch das Signieren von Anwendungen wird sichergestellt, dass eine Anwendung nur über einen genau definierten IPC auf eine andere Anwendung zugreifen kann.

Wenn eine Anwendung (APK-Datei) auf einem Android-Gerät installiert wird, überprüft der Paketmanager, ob die APK ordnungsgemäß mit dem in dieser APK enthaltenen Zertifikat signiert wurde. Wenn das Zertifikat (oder genauer gesagt der öffentliche Schlüssel im Zertifikat) mit dem Schlüssel übereinstimmt, der zum Signieren einer anderen APK auf dem Gerät verwendet wird, kann die neue APK im Manifest angeben, dass sie eine UID in ähnlicher Weise mit der anderen APK teilt -signierte APKs.

Anträge können von einem Dritten (OEM, Betreiber, alternativer Markt) signiert oder selbst signiert werden. Android bietet Codesignatur mit selbstsignierten Zertifikaten, die Entwickler ohne externe Unterstützung oder Erlaubnis generieren können. Anträge müssen nicht von einer zentralen Behörde unterschrieben werden. Android führt derzeit keine CA-Überprüfung für Anwendungszertifikate durch.

Anwendungen können auch Sicherheitsberechtigungen auf der Signaturschutzstufe deklarieren, wodurch der Zugriff nur auf Anwendungen beschränkt wird, die mit demselben Schlüssel signiert sind, während unterschiedliche UIDs und Anwendungssandboxen beibehalten werden. Eine engere Beziehung zu einer gemeinsam genutzten Anwendungssandbox ist über die Funktion fürgemeinsam genutzte UID zulässig, bei der zwei oder mehr Anwendungen, die mit demselben Entwicklerschlüssel signiert sind, eine gemeinsam genutzte UID in ihrem Manifest deklarieren können.

APK-Signaturschemata

Android unterstützt drei Signaturschemata für Anwendungen:

Signieren Sie für maximale Kompatibilität Anwendungen mit allen Schemata, zuerst mit v1, dann mit v2 und dann mit v3. Android 7.0+ und neuere Geräte installieren Apps, die mit v2 + -Schemata signiert sind, schneller als solche, die nur mit v1-Schemas signiert sind. Ältere Android-Plattformen ignorieren v2 + -Signaturen und benötigen daher Apps, die v1-Signaturen enthalten.

JAR-Signatur (v1-Schema)

Das Signieren von APK war von Anfang an ein Teil von Android. Es basiert auf signiertem JAR . Ausführliche Informationen zur Verwendung dieses Schemas finden Sie in der Android Studio-Dokumentation zum Signieren Ihrer App .

v1-Signaturen schützen einige Teile der APK nicht, z. B. ZIP-Metadaten. Der APK-Prüfer muss viele nicht vertrauenswürdige (noch nicht verifizierte) Datenstrukturen verarbeiten und dann Daten verwerfen, die nicht von den Signaturen abgedeckt werden. Dies bietet eine beträchtliche Angriffsfläche. Darüber hinaus muss der APK-Prüfer alle komprimierten Einträge dekomprimieren, was mehr Zeit und Speicher benötigt. Um diese Probleme zu beheben, führte Android 7.0 das APK Signature Scheme v2 ein.

APK-Signaturschema v2 & v3 (v2 + Schema)

Geräte mit Android 7.0 und höher unterstützen das APK-Signaturschema v2 (v2-Schema) und höher. (Das v2-Schema wurde in Android 9 auf v3 aktualisiert, um zusätzliche Informationen in den Signaturblock aufzunehmen, funktioniert aber ansonsten genauso.) Der Inhalt der APK wird gehasht und signiert. Anschließend wird der resultierende APK-Signaturblock in die APK eingefügt. Ausführliche Informationen zum Anwenden des v2 + -Schemas auf eine App finden Sie unter APK-Signaturschema v2 .

Während der Validierung behandelt das v2 + -Schema die APK-Datei als Blob und führt eine Signaturprüfung für die gesamte Datei durch. Jede Änderung an der APK, einschließlich Änderungen an ZIP-Metadaten, macht die APK-Signatur ungültig. Diese Form der APK-Überprüfung ist wesentlich schneller und ermöglicht die Erkennung weiterer Klassen nicht autorisierter Änderungen.

Das neue Format ist abwärtskompatibel, sodass mit dem neuen Signaturformat signierte APKs auf älteren Android-Geräten installiert werden können (die die zusätzlichen Daten, die der APK hinzugefügt wurden, einfach ignorieren), sofern diese APKs auch mit v1 signiert sind.

Überprüfungsprozess der APK-Signatur

Abbildung 1. Überprüfungsprozess der APK-Signatur

Der Hash der gesamten Datei der APK wird anhand der im APK-Signaturblock gespeicherten v2 + -Signatur überprüft. Der Hash deckt alles ab, außer den APK Signing Block, der die v2 + Signatur enthält. Jede Änderung der APK außerhalb des APK-Signaturblocks macht die v2 + -Signatur der APK ungültig. APKs mit entfernter v2 + -Signatur werden ebenfalls abgelehnt, da ihre v1-Signatur angibt, dass die APK v2-signiert war, sodass Android 7.0 und höher die Überprüfung von APKs anhand ihrer v1-Signaturen ablehnen.

Ausführliche Informationen zum Überprüfungsprozess der APK-Signatur finden Sie im Abschnitt Überprüfung des APK-Signaturschemas v2.