Signierung und Signaturprüfung von Android-Anwendungen


Anwendungssignierung

Anwendungssignierung ist der Prozess, durch den ein APK (Android-Paket) mit einem privaten Schlüssel signiert wird, der den Entwickler der App eindeutig identifiziert. Dieser Prozess stellt sicher, dass die App vom angegebenen Entwickler stammt, ohne dass nach der Signierung Änderungen vorgenommen wurden. Hier ist eine detaillierte Aufschlüsselung:

Erstellen eines Keystores

  • Entwickler erstellen einen Keystore, eine Binärdatei, die kryptografische Schlüssel enthält. Dieser Keystore enthält einen privaten Schlüssel, der zur Signierung des APK verwendet wird.
  • Der Keystore ist durch ein Passwort geschützt, das sicher aufbewahrt werden sollte, um unbefugten Zugriff zu verhindern.

Signieren des APKs

  • Während oder nach dem Erstellungsprozess wird das APK mit dem im Keystore gespeicherten privaten Schlüssel signiert.
  • Dieser Prozess erzeugt eine digitale Signatur durch eine Hash-Funktion, indem ein einzigartiger Digest des APK-Inhalts erstellt wird.
  • Der Digest wird dann mit dem privaten Schlüssel des Entwicklers verschlüsselt und das Ergebnis wird innerhalb des APK gespeichert.

Zertifikateinfügung

  • Das APK enthält ein Zertifikat mit dem öffentlichen Schlüssel, der dem zur Signierung verwendeten privaten Schlüssel entspricht.
  • Dieses Zertifikat wird zur Verifizierung der digitalen Signatur während des Installationsprozesses verwendet.

Warum ist die Anwendungssignierung wichtig?

  • Stellt Authentizität sicher: Bestätigt die Identität des App-Entwicklers.
  • Schützt die Integrität: Stellt sicher, dass die App seit der Signierung nicht verändert wurde.
  • Ermöglicht sichere Updates: Garantiert, dass Updates vom ursprünglichen Entwickler stammen, da Updates mit demselben Schlüssel signiert sein müssen.

Signaturprüfung

Die Signaturprüfung ist der Prozess, bei dem das Android-Betriebssystem die digitale Signatur eines APKs überprüft, um dessen Integrität und Authentizität vor der Installation zu gewährleisten. Schau dir diesen Beitrag auf Reddit darüber an, wie man die Signatur / Authentizität eines APKs leicht überprüfen kann und kehre dann hierher zurück, um zu lesen, wie die Überprüfung funktioniert:

Extraktion des Zertifikats

Wenn ein APK heruntergeladen und die Installation initiiert wird, extrahiert das Gerät das Zertifikat mit dem öffentlichen Schlüssel aus dem APK.

Entschlüsselung der Signatur

  • Das Gerät verwendet den aus dem Zertifikat extrahierten öffentlichen Schlüssel, um die im APK eingebettete digitale Signatur zu entschlüsseln.
  • Die Entschlüsselung liefert den ursprünglichen Hash (Digest), der während des Signierungsprozesses generiert wurde.

Generierung des Hashs

Unabhängig davon generiert das Gerät seinen eigenen Hash des APK-Inhalts. Dies geschieht mithilfe derselben Hash-Funktion, die während des Signierungsprozesses verwendet wurde.

Vergleich der Hashs

  • Das Gerät vergleicht den unabhängig generierten Hash mit dem entschlüsselten Hash der digitalen Signatur.
  • Übereinstimmung: Wenn die Hashes übereinstimmen, wird das APK als authentisch und unverändert verifiziert, was die Installation ermöglicht.
  • Abweichung: Wenn die Hashes nicht übereinstimmen, deutet dies darauf hin, dass das APK seit der Signierung möglicherweise verändert wurde, und die Installation wird blockiert.

Warum ist die Signaturprüfung wichtig?

  • Bestätigt die Authentizität: Stellt sicher, dass das APK von dem angegebenen Entwickler signiert wurde.
  • Wahrt die Integrität: Bestätigt, dass das APK seit der Signierung nicht verändert wurde.
  • Schützt die Nutzer: Blockiert potenziell bösartige APKs vor der Installation.

Welche Signatur soll ich wählen, wenn eine App mehrere Signaturen hat?

Die meisten Apps haben eine einzelne gültige Signatur, aber einige können mehr haben. Du musst die Signatur des APKs mit der bereits auf deinem Gerät installierten abgleichen, um Updatefehler zu vermeiden.

Gründe für mehrere Signaturen

  • Schlüsselrotation: Android 9 ermöglicht es Entwicklern, Signierschlüssel zu wechseln. Dies ist auf das APK Signature Scheme v3 zurückzuführen.
  • Vertriebskanäle: Apps von verschiedenen Quellen (z. B. Play Store, Github) können unterschiedliche Signaturen haben.
  • System-Apps: Signaturschlüssel für System-Apps können je nach Gerät oder Betriebssystemversion variieren.
  • Unerklärliche Fälle: Einige Apps, wie Googles Files und Play-Dienste, haben einfach mehrere Signaturen.

Wie man die korrekte Signatur identifiziert:

  1. AndroidFreeware hat einen ausgeklügelten APK Checker, der Android Berechtigungschecks durchführt, gefährliche Flags & Filter erkennt, md5-, sha1-, sha256-Prüfsummen berechnet und VirusTotal-Antivirus-Checks durchführt.
  2. Nutze Tools wie My APK, um App-Signaturen anzuzeigen.
  3. Verwende den Versuch-und-Irrtum-Ansatz. Installiere verschiedene APKs, bis das Update funktioniert, und merke dir dann die korrekte Signatur für zukünftige Updates.
  4. Lade die App auf APKMirror hoch, indem du ML Manager verwendest, um die vorhandene Signatur zu finden.
  5. Einige Desktop-Tools können die Signatur einer apk-Datei finden. Dazu gehören apksigner von Google, das keytool von IBM und print-apk-signature von Warren Bank.

Inhaltsverzeichnis