Eine Prüfsumme gleicht Bytes mit einem Referenzwert ab. Eine Signatur verknüpft Integrität mit einem Schlüssel. Keines von beiden beweist allein, dass die Software sicher ist.
Bevor Sie eine Android-APK installieren, sollten Sie drei Prüfungen unterscheiden: Entspricht diese Datei der erwarteten Veröffentlichung? Wurde sie mit dem erwarteten Schlüssel signiert? Können unabhängige Ersteller sie aus dem angegebenen Quellcode reproduzieren? Eine SHA-256-Prüfsumme, eine APK-Signatur und ein reproduzierbarer Build beantworten diese Fragen auf unterschiedliche Weise.
Keine dieser Prüfungen ist für sich genommen ein Urteil darüber, ob Schadsoftware vorliegt. Auch ein korrekt signiertes, reproduzierbares Programm kann eine Sicherheitslücke oder absichtlich schädliches Verhalten enthalten.
Was die einzelnen Prüfverfahren feststellen
| Prüfung | Nützliches Ergebnis | Wichtige Einschränkung |
|---|---|---|
| SHA-256-Hashwert der Datei | Ihre Bytes stimmen mit einem bestimmten vertrauenswürdigen Hashwert überein | Ein Angreifer, der sowohl die Datei als auch den Hashwert ersetzt, kann diesen Vergleich aushebeln |
| Prüfung der APK-Signatur | Die Signatur des Pakets lässt sich anhand seines Signaturzertifikats bestätigen | Sie müssen feststellen, welcher Signaturschlüssel erwartet wird; Gültigkeit allein belegt nicht die Identität des Herausgebers |
| Vergleich reproduzierbarer Builds | Das angegebene Artefakt lässt sich aus dokumentierten Eingaben erneut erstellen | Die Übereinstimmung von Quellcode und Binärdatei beweist nicht, dass der Quellcode sicher ist |
| Sicherheitsprüfung | Bestimmte Fragen des Entwurfs oder der Implementierung wurden untersucht | Umfang, Version, Ergebnisse und ungelöste Probleme sind entscheidend |
Android verlangt für die Installation und für Updates signierte APKs. Bei Play App Signing kann Google den App-Signaturschlüssel verwalten und aus einem App Bundle APKs für die Verteilung erzeugen. Das sind dokumentierte Vertrauensvereinbarungen, kein Beleg dafür, dass beliebige Vermittler ein Paket unbemerkt verändern und dabei dessen gültige Signatur erhalten können. Android-Leitfaden zur App-Signierung.
Schritt 1: Das genaue Artefakt bestimmen
Notieren Sie die App-Version, den Veröffentlichungskanal, den Dateinamen und die vorgesehene Plattformvariante. Nutzen Sie die offizielle Downloadseite des Herausgebers, nicht eine Prüfsumme aus derselben unaufgefordert zugesandten Nachricht, mit der Sie auch die APK erhalten haben.
Eine direkt vom Herausgeber heruntergeladene APK kann sich von einer APK unterscheiden, die ein App-Store für ein bestimmtes Gerät erzeugt. Unterschiedliche Versionen, Architekturen, Paketierungs- oder Signierungsverfahren können berechtigterweise unterschiedliche Datei-Hashwerte ergeben. Vergleichen Sie Gleiches mit Gleichem, bevor Sie eine Abweichung als Hinweis auf Manipulation werten.
Die praktische Frage lautet: Woher stammt der erwartete Wert, und warum vertraue ich dieser Quelle? Einen Hashwert offline zu berechnen, löst nicht das Vertrauensproblem bei einem online bezogenen Referenz-Hashwert.
Schritt 2: SHA-256 lokal berechnen
Ersetzen Sie messenger.apk durch den Namen der heruntergeladenen Datei. Diese Beispiele lesen die Datei; sie installieren sie nicht.
Linux:
sha256sum messenger.apk
macOS:
shasum -a 256 messenger.apk
Windows-Eingabeaufforderung:
certutil -hashfile messenger.apk SHA256
Vergleichen Sie den vollständigen Hashwert und ignorieren Sie dabei nur Leerzeichen in der Darstellung sowie Groß- und Kleinschreibung. Vergleichen Sie nicht bloß die ersten oder letzten Zeichen. Bewahren Sie den erwarteten Hashwert zusammen mit den Angaben zur Veröffentlichung und Version auf, damit sich der Vergleich wiederholen lässt.
Wenn die Werte abweichen, halten Sie vor der Installation an. Prüfen Sie Artefakt und Version, laden Sie die Datei gegebenenfalls erneut von der vertrauenswürdigen Quelle herunter und fragen Sie beim Herausgeber nach, wenn die Abweichung unerklärt bleibt. „Korrigieren“ Sie nicht die erwartete Prüfsumme, damit sie zu der Datei passt, die Sie zufällig erhalten haben.
Schritt 3: Die APK-Signatur prüfen
Für Nutzer der Android SDK Build Tools beschreibt Googles apksigner-Dokumentation die Signaturprüfung und die Ausgabe der Zertifikatsinformationen:
apksigner verify --verbose --print-certs messenger.apk
Die Prüfung sollte für die von der APK unterstützten Plattformen erfolgreich sein. Vergleichen Sie die Informationen zum Signaturzertifikat mit einem vertrauenswürdigen Veröffentlichungsnachweis oder der vom Herausgeber dokumentierten Historie der Signaturschlüssel. Eine mit einem unbekannten Schlüssel erstellte Signatur wird durch das Wort „verifiziert“ nicht vertrauenswürdig. Auch ein legitimer Wechsel des Signaturschlüssels erfordert Nachweise statt einer Aufforderung, eine Abweichung zu ignorieren.
Der SHA-256-Hashwert der APK-Datei und der SHA-256-Fingerabdruck ihres Signaturzertifikats sind unterschiedliche Werte. Vergleichen Sie nicht den einen mit dem anderen.
Schritt 4: Nach Belegen für reproduzierbare Builds suchen
Die Aussage, ein Build sei reproduzierbar, setzt einen festgelegten Quellcodestand, eine Build-Umgebung, eine Anleitung und ein Zielartefakt voraus. Unabhängige Dritte sollten dieses Artefakt erneut erstellen und das Ergebnis vergleichen können. Die Definition des Projekts Reproducible Builds macht diese Eingaben zum Bestandteil der Aussage.
Bei einem Messenger gehören ein Quellcode-Tag, festgeschriebene Versionen von Abhängigkeiten und Toolchain, eine Build-Anleitung und unabhängige Vergleichsergebnisse zu den nützlichen Veröffentlichungsnachweisen. Fragen Sie, was genau verglichen wurde: ein unsigniertes Artefakt, eine signierte APK oder ausgewählte Paketinhalte. Leiten Sie Reproduzierbarkeit nicht allein daraus ab, dass Quellcode und ein Download-Hashwert veröffentlicht werden.
Reproduzierbarkeit stärkt die Verbindung zwischen geprüftem Quellcode und ausgeliefertem Code. Sie macht aus einer ungeprüften Implementierung weder ein sicheres Protokoll noch beweist sie, dass ein laufendes Smartphone nicht kompromittiert ist.
Wo Livaras Proof Lab einzuordnen ist
Livaras Proof Lab bietet die lokale Berechnung des APK-Hashwerts und den Vergleich mit dem veröffentlichten Hashwert an. Seine kryptografischen Demonstrationen haben einen engeren Umfang als ein Audit des vollständigen Messaging-Protokolls. Nutzen Sie die Hashprüfung für ihren angegebenen Zweck zusammen mit den Informationen zur erwarteten Veröffentlichung und Signierung; betrachten Sie sie nicht als unabhängigen Beweis für reproduzierbare Builds oder das Fehlen von Hintertüren.
Das Bedrohungsmodell benennt ausdrücklich die Einschränkung, wenn sowohl eine APK als auch ihr angezeigter Hashwert ersetzt werden können. Deshalb ist die Herkunft Ihres Referenzwerts genauso wichtig wie die korrekte Durchführung der Berechnung.
Häufig gestellte Fragen
Beweist eine übereinstimmende Prüfsumme, dass eine APK sicher ist?
Nein. Sie stellt die Übereinstimmung mit dem Referenz-Hashwert fest, sofern die Referenz vertrauenswürdig ist und die Sicherheitseigenschaften der Hashfunktion gelten. Sie bewertet nicht das Verhalten des Programms.
Ist die Signaturprüfung überflüssig, wenn die Prüfsumme übereinstimmt?
Nein. Die Prüfungen liefern unterschiedliche Nachweise. Eine Signatur verknüpft die Integrität des Pakets mit einem Schlüssel; ein Datei-Hashwert identifiziert eine bestimmte Bytefolge.
Muss ein Download aus einem App-Store mit dem APK-Hashwert auf der Website übereinstimmen?
Nur wenn es sich um dasselbe Artefakt handeln soll. Prüfen Sie zunächst Veröffentlichungskanal, Version und Paketierung. Eine unerklärte Abweichung verdient eine Untersuchung, keine automatische Beschuldigung und keine automatische Freigabe.
Können diese Prüfungen Spionagesoftware erkennen, die bereits auf meinem Smartphone installiert ist?
Nein. Sie bewerten ein Installationsartefakt, nicht jede Komponente des aktuellen Laufzeitzustands des Geräts.



