it-swarm.com.de

Wie erreicht Android L eine starke Verschlüsselung mit einer Passphrase mit niedriger Entropie?

Nach dem Upgrade auf Android L auf meinem Nexus 5) stellte ich erfreut fest, dass ich die Verschlüsselung mithilfe eines Musters als Passphrase aktivieren kann.

Es brachte mich jedoch bald zum Nachdenken. Ich vermute, der Verschlüsselungsschlüssel wird letztendlich von dem Muster abgeleitet, das eine sehr niedrige Entropie aufweist. Ich habe eine Back-of-the-Envelope-Berechnung durchgeführt und festgestellt, dass die Gesamtzahl der eindeutigen Muster in einem 3x3-Punktraster knapp eine Million beträgt. Selbst bei 0,1 Vermutungen pro Sekunde würde es nur 115 Tage dauern, um den gesamten Schlüsselraum zu durchsuchen.

Ich fing an herumzulesen und entdeckte eine Beschreibung, wie Android macht Festplattenverschlüsselung . Es scheint zu behaupten, dass Android L wird Verwenden Sie hardwaregestützten sicheren Speicher zum Speichern und Ableiten des Verschlüsselungsschlüssels, damit Passphrasen mit niedriger Entropie im Wesentlichen immer noch dieselbe Sicherheit haben.

Ich verstehe jedoch nicht ganz warum. Warum ermöglicht die Verwendung eines hardwaregestützten sicheren Speichergeräts plötzlich, dass Passphrasen mit niedriger Entropie eine hohe Sicherheit erreichen? Vermisse ich nur etwas offensichtliches?

43
tangrs

Chipbasierte Bankkarten verwenden normalerweise eine 4-stellige PIN. Es würde höchstens ein paar Stunden dauern, sie alle auszuprobieren, wenn die Karte nicht vor Brute-Force-Versuchen schützen würde. Die Karte schützt vor Brute-Force-Versuchen, indem sie sich nach drei aufeinander folgenden Fehlern selbst mauert. Der Gegner hat keinen Zugriff auf einen Hash der PIN (es gibt physische Schutzfunktionen auf der Karte, die das Lesen des Speichers extrem erschweren)), sondern nur auf eine Blackbox mit 4 Ziffern als Eingabe und Antwort "Ja" oder "Nein". Der Schlüssel zur Sicherheit hier ist, dass der Gegner nur Online-Versuche machen kann, keine Offline-Versuche Versuch erfordert Berechnung auf dem verteidigenden Gerät, es ist nicht nur eine Frage der Mathematik.

Ein Android Telefon oder ein anderer Computer kann dasselbe mit seinem Speicherverschlüsselungsschlüssel tun. Der Schlüssel wird nicht von der Passphrase (oder dem Muster) abgeleitet, sondern irgendwo gespeichert und mit der Passphrase verschlüsselt Speicherverschlüsselungssysteme verfügen über diese Indirektion, sodass zum Ändern der Passphrase nicht der gesamte Speicher neu verschlüsselt werden muss und der Speicher effektiv gelöscht werden kann, indem die wenigen Bytes gelöscht werden, aus denen der verschlüsselte Schlüssel besteht (der Speicherverschlüsselungsschlüssel ist einheitlich zufällig). Im Gegensatz zu einem Schlüssel, der aus einer Passphrase abgeleitet wurde, unterliegt er keiner brutalen Gewalt: Der Gegner muss mindestens den verschlüsselten Speicherschlüssel erhalten, um Fuß zu fassen.

Wenn der Gegner den verschlüsselten Speicherschlüssel lesen kann, kann er auf einem PC-Cluster schnelle Brute-Force-Versuche für den Schlüssel durchführen. Aber Wenn der Speicherschlüssel in einem manipulationssicheren Speicher gespeichert ist, kann der Gegner ihn nicht lesen und kann nur Passphrasenversuche an das Gerät senden Das Gerät kann Richtlinien wie "Begrenzen Sie die Anzahl der Versuche auf 3 pro Minute" oder "Nach 10 fehlgeschlagenen Versuchen eine zweite, längere Passphrase erfordern" anwenden.

Die neue Funktion in Android L ist Upstream-Unterstützung für einen verschlüsselten Speicherschlüssel, der nicht im Flash-Speicher gespeichert ist (von dem er mit etwas Löten oder Root-Zugriff gesichert werden kann). aber stattdessen in einem geschützten Speicher (auf den möglicherweise nur im sicheren TrustZone-Modus zugegriffen werden kann ). Nicht alle Telefone, auf denen Android L) ausgeführt wird, verfügen jedoch über einen solchen geschützten Speicher und selbst wenn es vorhanden ist, gibt es keine Garantie dafür, dass es für die Verschlüsselung verwendet wird. Alle Android L-Änderungen stellen den erforderlichen Code als Teil des grundlegenden Android) bereit Image, was Telefonanbietern die Integration erleichtert.

Android bietet eine API, mit der überprüft werden kann , ob sich der Schlüsselbundspeicher der Anwendung im geschützten Speicher befindet . Ich weiß nicht, ob es eine entsprechende API gibt, um den Schutz des Speicherverschlüsselungsschlüssels zu überprüfen.

Ich weiß nicht, ob dies so ist Android macht es, aber ein hardwaregestütztes sicheres Speichergerät kann wiederholte Versuche blockieren, die zu schnell gemacht werden, wodurch Ihre Annahme von 0,1 Vermutungen pro Sekunde ungültig wird. Angenommen, es erlaubt zunächst einen Versuch alle 0,01 Sekunden, aber es verdoppelt die Zeit zwischen den Versuchen mit jedem Fehler nach den ersten fünf. Nach nur 50 Versuchen müssen Sie 250.000 Jahre warten, bevor Sie es erneut versuchen können (und es) Sie haben 250.000 Jahre gebraucht, um so weit zu kommen. Solange Sie jedoch Ihren Passcode in 10 oder weniger Versuchen immer korrekt eingeben können, werden Sie keine Verzögerung bemerken.

2
Mike Scott

Die Generierung eines Schlüssels und die Verwendung einer Passphrase sind zwei verschiedene Dinge. Schlüssel, zum Beispiel in der asymmetrischen Kryptographie, werden unter Verwendung von Entropie erzeugt, die aus der Computerumgebung stammt (wie /dev/urandom, was eine gute Entropiequelle sein könnte oder nicht, aber das ist eine andere Debatte). Der Schlüssel selbst hat also nichts mit der Passphrase zu tun. Die Passphrase wird nur verwendet, um den Schlüssel selbst in einen Container zu verschlüsseln, in dem der Schlüssel gespeichert werden soll.

Wenn jemand Ihre Festplattendaten entschlüsseln möchte, benötigt er den Schlüssel. Unter den richtigen Bedingungen sollte es nahezu unmöglich sein, den Schlüssel zu finden. Bei ordnungsgemäßer Ausführung sollte es auch ohne den Schlüssel unmöglich sein, die Verschlüsselung des Schlüsselcontainers zu unterbrechen.

In Bezug auf das brutale Erzwingen des Schlüssels könnte es tatsächlich eine triviale Operation sein, wenn der Angreifer angesichts des geringen Schlüsselraums Zugriff auf die verschlüsselte Schlüsseldatei hätte. Es ist das Gerät, das dafür verantwortlich ist, dass diese verschlüsselte Schlüsseldatei dem Angreifer nicht zur Verfügung steht.

Aus Ihrem verlinkten Artikel habe ich gelesen:

Das Abrufen einer Rohkopie einer Festplattenpartition ist auf den meisten kommerziellen Geräten normalerweise nicht möglich, kann jedoch durch Booten eines vom Gerätehersteller signierten speziellen Boot-Images für die Datenerfassung erreicht werden, wobei ein Fehler im Bootloader ausgenutzt wird, der das Booten nicht signierter Images ermöglicht (z wie dieses) oder einfach durch Booten eines benutzerdefinierten Wiederherstellungsimages auf Geräten mit einem entsperrten Bootloader (ein typischer erster Schritt zum "Rooten").

Diese Angriffe erfordern, wenn nicht unmöglich, einige Investitionen (in Bezug auf Zeit oder Geld). Alle Sicherheit ist ein Kompromiss.

Ich habe auch gelesen:

Unter der Annahme, dass die Implementierung der des hardwaregestützten Anmeldeinformationsspeichers ähnlich ist, sollten die Festplattenverschlüsselungsschlüssel mit einem nicht extrahierbaren Schlüsselverschlüsselungsschlüssel verschlüsselt werden, der im SoC gespeichert ist, um eine Kopie der Kryptofußzeile und der verschlüsselten Benutzerdatenpartition zu erhalten und die zu erzwingen Die Passphrase des Sperrbildschirms sollte nicht mehr ausreichen, um den Inhalt der Festplatte zu entschlüsseln.

Welches sollte das letztere Problem lösen.

2
M'vy

Ich denke, die folgenden vier Ansätze decken mehr oder weniger alle Möglichkeiten ab, was getan werden könnte:

  • Verwenden Sie eine teure (in Bezug auf die CPU-Zeit) Schlüsselableitungsfunktion. Wenn Sie den Angreifer jedoch auf diese Weise um einen beliebigen Faktor verlangsamen, werden legitime Angriffe um denselben Faktor verlangsamt. Realistisch gesehen kann der Angreifer mehr CPU-Leistung verbrauchen als auf einem einzelnen Mobilgerät vorhanden ist, und der Angreifer kann wahrscheinlich länger auf eine Antwort warten, als ein Benutzer beim Entsperren des Geräts warten möchte. Wie Sie richtig erkannt haben, erfordert dieser Ansatz mehr Entropie, als eine Million verschiedene mögliche Passphrasen erreichen könnten.
  • Verwenden Sie manipulationssichere Hardware. Legen Sie den Schlüssel in eine spezielle Hardware ein, die die Anzahl der Versuche, den Schlüssel zu extrahieren, auf eine bestimmte Rate begrenzt und diese Rate bei fehlgeschlagenen Versuchen verringert. Möglicherweise wird der Schlüssel nach einer großen Anzahl fehlgeschlagener Versuche sogar zerstört. Dies funktioniert nur gegen einen Gegner, der diese Hardware nicht auseinander nehmen und den Schlüssel von innen herausziehen kann.
  • Verwenden Sie einen Onlinedienst. Wenn Sie Zugriff auf einen Onlinedienst haben, kann dieser Dienst einen Teil der erforderlichen Berechnung bereitstellen und ein Ratenlimit durchsetzen. Eine verblindete RSA-Operation könnte dies erreichen, ohne dass Informationen über den Schlüssel oder die verschlüsselten Daten an den Onlinedienst weitergegeben werden. Dies ist jedoch nicht sehr praktisch, da das Gerät möglicherweise nicht jedes Mal auf eine Netzwerkverbindung zugreifen kann, wenn Sie es entsperren möchten.
  • Verwenden Sie den Quantenspeicher. Dies ist im Grunde eine Variation der manipulationssicheren Hardware, erzwingt jedoch die Zerstörung des Schlüssels nach einer maximalen Anzahl von Versuchen, indem es sich auf die Quantenphysik stützt. Auch unpraktisch, weil ich glaube, dass niemand erfolgreich einen Quantenspeicher entworfen hat, der Daten fast lange genug speichern kann, um sie für persistente Daten zu verwenden.

Von den oben genannten klingt die manipulationssichere Hardware nach dem praktischsten Ansatz.

1
kasperd