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

16

Hinweis: Nun, das Kopfgeld ist abgelaufen und ein möglicher Grund könnte der Aufwand sein, den ich aus den Kommentaren ersehen kann. Angesichts der Anzahl der positiven Stimmen scheint dies auch für andere von Interesse zu sein. Ich würde immer noch gerne eine Antwort bekommen, also ist hier das, was ich vorschlage - eine gute Antwort innerhalb eines Monats wird einen Bonus von 50 bekommen. Dies würde hoffentlich ausreichend Zeit und Anreiz geben


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

Es gibt viele Fragen zu Teilen dieses Themas auf dieser Site und auch auf der Schwestersite. Um mich nach Hause zu bringen, behandeln diese Fragen Teile und nicht das Ganze (erinnert an " Blinde und einen Elefanten ?" :)

Mein Verständnis (oder Missverständnis?)

  1. Das Verschlüsselungskennwort wird aus einer Kombination aus PIN des Benutzersperrbildschirms und Verschlüsselungsalgorithmus generiert (darin liegt eine inhärente Schwachstelle aufgrund der begrenzten Länge der PIN).
  2. Dies wird gesalzen und im Stammverzeichnis gespeichert, auf das Benutzer keinen Zugriff haben
  3. Dies wird verwendet, um das tatsächliche Passwort zum Ver- / Entschlüsseln zu generieren, und das tatsächliche Passwort wird im RAM gespeichert
  4. Dies wurde durch die Verknüpfung von Schritt 1 mit dem SoC des Geräts verstärkt ( Welche Android-Version? Welches Hardwareelement identifiziert das Gerät eindeutig? Kann dieses ersetzt werden, um es zu fälschen? )
  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, Erfassung von RAM-Informationen (Schritt 3), um den Schlüssel zu erhalten
  7. Root-Geräte scheinen anfälliger für den Zugriff auf Daten aus Schritt 2 durch benutzerdefinierte Wiederherstellung / möglicherweise ROM und Kernel-Flashen zu sein? ( Wenn ja, warum wird dies nicht als großes Risiko angepriesen? )
  8. Selbst wenn diese Informationen erhalten werden, ist es meiner Meinung nach nicht trivial , das eigentliche Passwort zu generieren
  9. Marshmallow kann externe SD als "internen Speicher" oder "tragbaren Speicher" behandeln. Logischerweise sollte es keinen Unterschied machen, bin mir aber nicht sicher

Meines Erachtens gibt es Lücken, in denen wahrscheinlich auch andere wichtige Aspekte fehlen.

Deshalb suche ich eine kanonische Erklärung für das Verständnis aus der Sicht des Benutzers

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

  • Implementierungsvariante für alle Android-Versionen - von KitKat bis Marshmallow (einschließlich doppelter Optionen für externe SD in Marshmallow)

  • Sicherheitslücken auf Benutzerebene

Hinweis

  • Mir ist bewusst, dass die Gefahr besteht, dass die Frage als zu weit gefasst betrachtet wird, aber die IMO rechtfertigt eine umfassende Behandlung
  • Mit etwas Erfahrung in Kommunikationssicherheit verstehe ich die Herausforderung, kryptografische Konzepte auf Benutzerebene zu übersetzen. Ich würde es vorziehen, wenn die Antwort darauf mit erklärenden Hinweisen für ein tieferes Verständnis eingeht. Beispiele für den Prozess müssen nicht unbedingt kryptografisch korrekt sein, sondern sollten die Essenz vermitteln

  • Ein möglicher Vorteil könnte darin bestehen, zukünftige Fragen zu verwandten Aspekten zu "täuschen"

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

  • Ich würde darauf hinweisen, triviale / Gelegenheits- / Patchwork-Antworten abzustimmen , um umfassende Antworten zu ermutigen

Beeshyams
quelle
1
Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben . //Dies ist möglicherweise besser für die Sicherheit geeignet . Ich denke auch, dass es zu weit gefasst ist, da ein guter Teil Ihrer Fragen von der jeweiligen Hardware und der Art und Weise abhängt, wie der Hersteller sie implementiert.
Matthew Read

Antworten:

3

Ich stelle mir vor, dass es so funktioniert:

  • Der Speicher wird mit einem synchronen Zufallsschlüssel verschlüsselt.
  • Wenn der Benutzer ein Passwort wählt oder ändert, das auf einer beliebigen Eingabe basiert, sei es ein Passwort, das aus Buchstaben, Zahlen und Zeichen besteht, oder sei es ein PIN-Code, ein Wischmuster, ein Fingerabdruck oder eine andere Eingabe, eine asynchrone Verschlüsselung Der Algorithmus wird zum Verschlüsseln des Hauptschlüssels verwendet, sodass bei korrekter Identifizierung die Eingabe entschlüsselt wird, die zum Hauptschlüssel führt, wodurch der Speicher verschlüsselt und entschlüsselt werden kann.
  • In dem Moment, in dem 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 den Hauptschlüssel hat, kann es Daten mit dem Speicher austauschen. Nur wenn der Benutzer angemeldet ist, ist dieser Hauptschlüssel bekannt. Die asynchrone Verschlüsselung wird als Verschlüsselung mit öffentlichem Schlüssel bezeichnet. 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. Der Speicher ist nur eine synchrone Verschlüsselung. Dort wird derselbe Schlüssel zum Ver- und Entschlüsseln verwendet. Aber das Finden / Abrufen dieses "Hauptschlüssels" ist das große Problem. Dies bedeutet, dass Sie, wenn Sie zu einem bestimmten Zeitpunkt eine schwache Anmeldemethode haben, z. B. "1234" als Pincode, Ihre Meinung ändern und den Pincode in "5364" ändern, was schwieriger zu erraten ist, es sei denn, die frühere "1234 " Wurde gestohlen, beschnüffelt, zu irgendeinem Zeitpunkt ist die Sicherheit einfach besser geworden. Dasselbe gilt, wenn Sie die Anmeldemethode in ein vollständiges Passwort ändern, das nicht zu erraten ist, oder ein Wörterbuchangriff. 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, weil es höchstwahrscheinlich nur ein zufälliger Hashcode ist - nichts wird jemals diesen Hashcode "finden" oder "erraten". Nicht einmal die NSA oder eine andere Sicherheitsbehörde auf dem Planeten konnte jemals einen passenden Schlüssel finden. Der einzige Angriffsvektor ist die Hoffnung auf eine Schwäche des Benutzers. Möglicherweise hat der Benutzer eine PIN-Code-Anmeldung gewählt. Wenn es 4-stellig ist, sind maximal 10000 Pincodes möglich. Das Betriebssystem blockiert möglicherweise das Gerät, nachdem einige in kurzer Zeit ausprobiert wurden. Die Lösung ist dann, das Betriebssystem zu "hacken", so dass es möglich wird, alle möglichen Pincodes auszuprobieren, ohne dass das Betriebssystem eingreift und das Gerät blockiert. Ich glaube, so hat das FBI schließlich Zugang zu einem Telefon eines Verbrechers bekommen. Ich glaube, eine Drittfirma (eine israelische Firma, wie ich mich erinnere) hat das FBI gehackt. Sie haben dieses Pincode-Try-Limit umgangen. Wenn die Anmeldung ein vollständiges Kennwort ist und der Benutzer ein sicheres Kennwort ausgewählt hat, sind Sie sol. Nicht in einer Lebenszeit mit all der CPU-Leistung auf dem Planeten wird das in einer Million Jahren gehackt. Ich kaufe keine der NSA, die Gerüchte entschlüsseln kann. Ich glaube, diese Leute haben sich zu viele Männerfilme angesehen. Alles, was Sie tun müssen, ist einen Blick auf die wissenschaftlichen Dokumente zu den verschiedenen Verschlüsselungsalgorithmen (z. B. AES) zu werfen, und Sie werden wissen, dass Hacking einfach nicht passieren wird. außer in den alten Tagen, als es 40-Bit-Schlüssel gab. Diese Zeiten sind lange vorbei. Ich denke, AES128 ist bereits unhackbar, und wenn jemand besorgt ist, macht das Springen zu AES256 es um eine Größenordnung der Größe des Universums sicherer. Könnte sein könnten es eines Tages Quantencomputer entschlüsseln, aber ich bin skeptisch. Nicht sicher, ob es möglich ist, ein Wahrscheinlichkeitssystem zu haben, markieren Sie einfach die Lösung. Das werden wir irgendwann sehen. Vielleicht sind es sowieso noch ein paar Leben. Im Moment gibt es nichts zu befürchten.

Aus diesem Grund liegt die Sicherheitsbeschränkung letztendlich ausschließlich bei der verwendeten Anmeldemethode. Man kann die Methode ändern, ohne den Speicher neu verschlüsseln zu müssen. Dies alles aufgrund der asynchronen Verschlüsselung des öffentlichen Schlüssels des Hauptschlüssels.

Mike
quelle
Ich denke du meinst "symmetrisch" und "asymmetrisch". Nicht "synchron" und "asynchron".
Jay Sullivan
1

Da Updates häufig durchgeführt werden, 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 ausgeführt wird. Und wenn diese Plattform Schwachstellen aufweist, spielt die Stärke des Verschlüsselungsalgorithmus selbst keine oder nur eine geringe Rolle.

Sobald Ihr Gerät Dateien entschlüsselt, kann von einem Prozess mit Super-User-Rechten direkt auf diese zugegriffen werden. Dieser Prozess kann Zugriff auf Ihr Gerät erlangen, indem eine Schwachstelle im ROM (Android OS) selbst ausgenutzt wird. (Dies war vor kurzem in den Nachrichten, da einige Fehler von WikiLeaks aufgedeckt wurden)

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

Vor dem Root- Zugriff: Um ein Gerät zu rooten, müssen Sie externe Tools verwenden, die alle 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? (twrp.me, supersu.com zum Beispiel, aber es gibt andere wie KingoRoot) Können wir ihnen wirklich vertrauen? Ich vertraue einigen mehr als den anderen. Zum Beispiel hat KingoRoot ein Programm auf meinem PC installiert, das sich wie ein Virus verhalten hat (musste Dual-Boot verwenden, um es zu entfernen).

Nach dem Root- Zugriff: Wenn Sie einem kompilierten Programm (APK) einen SU-Zugriff erteilen, bedeutet dies, dass es alles tun kann, was es möchte, ohne Einschränkungen und ohne Angabe der beabsichtigten Verwendung. (Absichten sind für APKs eine Möglichkeit, auf Dinge wie WLAN, Kamera usw. zuzugreifen.) Eine "vertrauenswürdige App" kann nach dem Root-Zugriff problemlos auf jede Art von Informationen zugreifen und diese an ihren Server zurücksenden.

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

Google - ja. Es hat nicht den Schlüssel zum Entsperren.

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

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

Bearbeiten: Erwähnenswert ist, dass Google tatsächlich Apps auf Ihr Android-Gerät herunterladen und installieren / aktualisieren kann, ohne Sie um Erlaubnis zu bitten oder Sie darüber zu informieren, dass ein Update stattgefunden hat. Und selbst auf gerooteten Geräten scheint es keine Möglichkeit zu geben, dies zu blockieren, ohne wichtige Funktionen zu verlieren (Play Store, Maps, Sync usw.).

Emil
quelle