Kanonische Erklärung der Android-Verschlüsselung und Sicherheitslücken

Hinweis: Nun, das Kopfgeld ist abgelaufen und ein möglicher Grund könnte sein, dass der Aufwand für die Behandlung erforderlich ist, wie ich den Kommentaren entnehme. Angesichts der Anzahl der Upvotes scheint es auch für andere interessant zu sein. Ich würde trotzdem gerne eine Antwort bekommen, also schlage ich folgendes vor: Eine gute Antwort innerhalb eines Monats wird einen Bonus von 50 erhalten. Ich hoffe, dass dies ausreichend Zeit und Anreiz gibt


Ich habe eine Weile versucht, den Android-Verschlüsselungsprozess und seine Schwachstellen zu verstehen

Es gibt viele Fragen zu Teilen dieses Themas auf dieser Seite und auch auf der Schwesterseite. Um meinen Punkt deutlich zu machen, diese Fragen beziehen sich auf Teile und nicht auf das Ganze (erinnert an " blinde Männer und ein Elefant ?" :)

Mein Verständnis (oder Missverständnis?)

  1. Das Verschlüsselungspasswort wird aus einer Kombination aus Benutzersperrbildschirm-PIN und Verschlüsselungsalgorithmus generiert (darin liegt eine inhärente Schwäche aufgrund der begrenzten Länge der PIN).
  2. Dies ist gesalzen und im Stammverzeichnis gespeichert, das für Benutzer nicht zugänglich ist
  3. Dies wird verwendet, um das eigentliche Passwort zum Verschlüsseln/Entschlüsseln zu generieren, und das eigentliche Passwort wird im RAM gespeichert
  4. Dies wurde durch die Verknüpfung von Schritt 1 mit dem Geräte-SoC verstärkt ( Welche Android-Version? Welches ist das Hardwareelement, das das Gerät eindeutig identifiziert? Kann das durch eine Fälschung ersetzt werden? )
  5. Daher ist es nicht möglich, Daten ohne Verschlüsselungsschlüssel und Gerät zu entschlüsseln (gilt auch für externe SD).
  6. Mögliche Wiederherstellungsmethoden - Brute Force, Erfassen von RAM-Informationen (Schritt 3), um den Schlüssel zu erhalten
  7. Gerootete Geräte scheinen anfälliger für den Zugriff auf Daten aus Schritt 2 durch benutzerdefinierte Wiederherstellung / möglicherweise ROM- und Kernel-Flashing zu sein? ( Wenn das stimmt, warum wird dies nicht als großes Risiko angepriesen? )
  8. Selbst wenn diese Informationen erhalten werden, vermute ich, dass es nicht trivial ist , das tatsächliche Passwort zu generieren
  9. Marshmallow kann externes SD als „internen Speicher“ oder „tragbaren Speicher“ behandeln. Logischerweise sollte es keinen Unterschied machen, bin mir aber nicht sicher

Es gibt Lücken in meinem Verständnis, wahrscheinlich vermisse ich auch andere wichtige Aspekte.

Also suche ich nach einer kanonischen Erklärung für das Verständnis aus Benutzersicht

  • Gesamter Verschlüsselungsprozess (einschließlich externer SD)

  • Implementierungsvariationen zwischen Android-Versionen – von KitKat bis Marshmallow (einschließlich dualer Optionen für externes SD in Marshmallow)

  • Schwachstellen auf Benutzerebene

Notiz

  • Ich bin mir des Risikos bewusst, dass die Frage als zu allgemein angesehen wird , aber meiner Meinung nach rechtfertigt sie eine umfassende Behandlung
  • Da ich einige Erfahrung in der Kommunikationssicherheit habe, verstehe ich die Herausforderung bei der Übersetzung kryptografischer Konzepte auf eine Benutzerebene. Ich würde es vorziehen, wenn die Antwort darauf eingeht, mit erklärenden Hinweisen für ein tieferes Verständnis. Beispiele des Prozesses müssen nicht im strengen Sinne kryptografisch korrekt sein, sollten aber das Wesentliche vermitteln

  • Ein möglicher Vorteil könnte darin bestehen, künftige Fragen zu verwandten Aspekten zu „duplizieren“ .

  • Auf Kosten der Wiederholung sollten die Antworten in erster Linie auf Benutzerebene erfolgen , jedoch mit angemessener Erklärung für ein tieferes Verständnis. Die Aufteilung der Antwort in zwei Teile kann ein geeigneter Weg sein.

  • Ich würde es mir zur Aufgabe machen, triviale / beiläufige / Patch-Work -Antworten abzulehnen, um umfassende Antworten zu fördern

Kommentare sind nicht für längere Diskussionen gedacht; diese Konversation wurde in den Chat verschoben . //Dies könnte für Security besser geeignet sein . Ich denke auch, dass es zu weit gefasst ist, da ein guter Teil dessen, wonach Sie fragen, von der jeweiligen Hardware und der Implementierung des Herstellers abhängt.

Antworten (2)

Ich stelle mir vor, dass es so funktioniert:

  • Die Speicherung wird mit einem synchronen Zufallsschlüssel verschlüsselt.
  • Wenn der Benutzer ein Passwort auswählt oder ändert, das auf einer beliebigen Eingabe basiert, sei es ein Passwort, das aus Buchstaben und Zahlen und Zeichen besteht, oder ein PIN-Code oder ein Muster, ein Fingerabdruck oder eine andere Eingabe, eine asynchrone Verschlüsselung Der Algorithmus wird verwendet, um den Hauptschlüssel zu verschlüsseln, so dass die korrekte Identifizierung letztendlich die Eingabe entschlüsselt, was zum Hauptschlüssel führt, der es wiederum ermöglicht, die Speicherung zu verschlüsseln und zu entschlüsseln.
  • Sobald sich der Benutzer abmeldet, wird der Speicher mit dem Hauptschlüssel überschrieben

Der große Trick dabei ist die asynchrone Verschlüsselung des Hauptschlüssels. Sobald Android über den Hauptschlüssel verfügt, kann es Daten mit dem Speicher austauschen. Nur wenn der Benutzer angemeldet ist, ist dieser Hauptschlüssel bekannt. Asynchrone Verschlüsselung ist die sogenannte Public-Key-Verschlüsselung. Was passiert, ist, dass ein öffentlicher Schlüssel Daten verschlüsselt (in diesem Fall der Hauptschlüssel) und ein privater Schlüssel Daten entschlüsselt. Nicht zu verwechseln mit der Speicherverschlüsselung hier. Die Speicherung ist nur eine synchrone Verschlüsselung. Dort wird derselbe Schlüssel zum Ver- und Entschlüsseln verwendet. Aber das Finden/Abrufen dieses "Master"-Schlüssels ist das Problem. Das bedeutet, wenn Sie an einem Punkt eine schwache Anmeldemethode haben, wie zum Beispiel "1234" als PIN-Code, und Sie Ihre Meinung ändern und den PIN-Code in "5364" ändern, was schwerer zu erraten ist, es sei denn, dass früher "1234 " wurde gestohlen, ausspioniert, an irgendeiner Stelle ist die Sicherheit einfach besser geworden. Das Gleiche gilt, wenn Sie die Anmeldemethode auf ein vollständiges Passwort ändern, das nicht erraten werden kann, oder einen Wörterbuchangriff ausführen. Der Speicher selbst muss überhaupt nicht neu verschlüsselt werden. Es geht darum, diesen Hauptschlüssel zu verstecken – intern. Der Benutzer sieht diesen Hauptschlüssel nie, da es höchstwahrscheinlich nur eine Art zufälliger Hash-Code ist - nichts wird diesen Hash-Code jemals "finden" oder "erraten". Nicht einmal die NSA oder irgendeine andere Sicherheitsbehörde auf diesem Planeten könnte jemals einen solchen passenden Schlüssel finden. Der einzige Angriffsvektor hofft auf eine Schwäche des Benutzers. Vielleicht hat der Benutzer eine PIN-Code-Anmeldung gewählt. Wenn es 4 Ziffern sind, dann sind es maximal 10000 mögliche PIN-Codes. Das Betriebssystem "blockiert" das Gerät möglicherweise, nachdem es in kurzer Zeit einige ausprobiert hat. Die Lösung besteht dann darin, das Betriebssystem zu „hacken“, sodass es möglich wird, alle möglichen PIN-Codes auszuprobieren, ohne dass das Betriebssystem eingreift und das Gerät blockiert. Ich glaube, so hat das FBI schließlich Zugriff auf das Telefon eines Kriminellen bekommen. Eine Drittfirma (eine israelische Firma, soweit ich mich erinnere) hat das Hacken für das FBI durchgeführt, denke ich. Sie haben dieses Pincode-Versuchslimit umgangen. Wenn das Login ein vollständiges Passwort ist und der Benutzer ein starkes Passwort gewählt hat und Sie sol. Nicht in einer Lebenszeit mit der ganzen CPU-Leistung auf dem Planeten wird das in einer Million Jahren hacken. Ich kaufe keine Gerüchte, die die NSA entschlüsseln kann. Ich denke, diese Leute haben zu viele Männer-in-Schwarz-Filme gesehen. Man muss sich nur die wissenschaftlichen Dokumente über die verschiedenen Verschlüsselungsalgorithmen (z. B. AES) ansehen, und man weiß, dass Hacking einfach nicht passieren wird, außer in den alten Tagen, als es 40-Bit-Schlüssel gab. Diese Zeiten sind lange vorbei. AES128 ist meiner Meinung nach bereits unhackbar, und wenn jemand besorgt ist, macht der Sprung zu AES256 es um eine Größenordnung sicherer, so groß wie das Universum.Vielleicht können Quantencomputer es eines Tages entschlüsseln, aber ich bin skeptisch. Ich bin mir nicht sicher, ob es möglich ist, dass ein Wahrscheinlichkeitssystem einfach die Lösung hervorhebt. Das werden wir schließlich sehen. Vielleicht ist das sowieso ein paar Leben entfernt. Nichts, worüber Sie sich jetzt Sorgen machen müssten.

Letztendlich liegt die Sicherheitsbeschränkung also ausschließlich in der verwendeten Anmeldemethode. Man kann die Methode ändern, ohne den Speicher neu verschlüsseln zu müssen. All dies aufgrund der asynchronen Public-Key-Verschlüsselung des Hauptschlüssels.

Ich denke, du meinst "symmetrisch" und "asymmetrisch". Nicht "synchron" und "asynchron".

Da Updates häufig sind, kann sich die Art und Weise, wie die Verschlüsselung auf dem Telefon (Android-basiertes Betriebssystem) gehandhabt wird, von einem Build zum nächsten ändern. Daher geht es in erster Linie nicht um die Verschlüsselung selbst, sondern darum, wo der Prozess abläuft. Und wenn diese Plattform Schwachstellen aufweist, wird die Stärke des Verschlüsselungsalgorithmus selbst von geringer oder keiner Bedeutung.

Sobald Ihr Gerät die Datei(en) entschlüsselt, können Sie im Grunde genommen direkt von einem Prozess mit Superuser-Berechtigungen darauf zugreifen. Dieser Prozess könnte sich Zugriff auf Ihr Gerät verschaffen, indem er eine Schwachstelle im ROM (Android OS) selbst ausnutzt. (Dies war kürzlich in den Nachrichten, als einige Fehler von WikiLeaks aufgedeckt wurden)

Gerootete Geräte scheinen anfälliger für den Zugriff auf Daten aus Schritt 2 durch benutzerdefinierte Wiederherstellung / möglicherweise ROM- und Kernel-Flashing zu sein? (Wenn das stimmt, warum wird dies nicht als großes Risiko angepriesen?)

Vor dem Root : Um ein Gerät zu rooten, müssen Sie externe Tools verwenden, die alle einen tiefen Zugriff auf die interne Struktur des Geräts haben. Einige dieser Tools sind vorkompiliert und nicht Open Source. Sie haben "offizielle" Websites, aber wer sind diese Leute? (z. B. twrp.me, supersu.com, aber es gibt auch andere wie KingoRoot) Können wir ihnen wirklich vertrauen? Einigen vertraue ich mehr als den anderen. Zum Beispiel hat KingoRoot ein Programm auf meinem PC installiert, das sich wie ein Virus verhält (muss Dual-Boot verwenden, um es zu entfernen).

Nachdem Sie gerootet haben : Wenn Sie einem kompilierten Programm (APK) einen SU-Zugriff geben, kann es ohne Einschränkungen alles tun, was es will, oder angeben, welche Absicht es verwenden wird. (Absichten sind eine Möglichkeit für APKs, auf Dinge wie WLAN, Kamera usw. zuzugreifen.) Eine "gut vertrauenswürdige App" kann also nach gegebenem Root-Zugriff problemlos auf jede Art von Informationen zugreifen und sie an ihren Server zurücksenden.

Schützt die vollständige Geräteverschlüsselung meine Daten vor Google und der Regierung?

Google – ja. Es hat keinen Schlüssel zum Entriegeln.

Regierung (oder Hacker) - nein. weil die Regierung oder Hacker im Wesentlichen einen Exploit verwenden können, der die Datei(en) wie oben erwähnt abfängt.

Die Komplexität von Sicherheitsverfahren/-algorithmen nützt wenig, wenn sie abgefangen und umgangen werden können.

Bearbeiten: Es ist erwähnenswert, dass Google tatsächlich in der Lage ist, Apps auf Ihr Android-Gerät herunterzuladen und zu installieren/aktualisieren, ohne Sie um Erlaubnis zu fragen oder Sie sogar darüber zu informieren, dass das Update stattgefunden hat. Und selbst auf einem gerooteten Gerät scheint es keine Möglichkeit zu geben, dies zu blockieren, ohne wichtige Funktionen zu verlieren (Play Store, Maps, Sync usw.).