2013-03-06 3 views
12

Ich habe eine kurze Frage:Wie funktioniert iOS Datenschutz Arbeit

ich eine iOS-Anwendung heruntergeladen, die die NSFileProtectionComplete Klasse verwendet eine SQLite-Datei zu schützen, die vertrauliche Informationen enthält.

Gemäß der iOS-Sicherheitsdokumentation (http://images.apple.com/ipad/business/docs/iOS_Security_May12.pdf) erhält ein Laptop, wenn ein Gerät (iPhone/iPad) mit dem Laptop gekoppelt wird, die Escrow-Taste vom Mobilgerät. Der Schlüsselbund enthält alle Klassenschlüssel, die zum Entschlüsseln von Informationen auf dem Gerät erforderlich sind.

Ich habe jedoch festgestellt, dass die sqlite-Datei nur verfügbar ist, wenn das Gerät entsperrt ist, wenn ich das Gerät mit dem Laptop koppeln und iExplorer zum Durchsuchen des Dateisystems verwenden. Wenn das Telefon gesperrt ist (immer noch gekoppelt), ist die Datei nicht lesbar. Dateien, die NSFileProtectionComplete nicht verwenden, können angezeigt werden, während das Gerät gesperrt ist.

Wenn die Escrow-Schlüsselhülle alle Klassenschlüssel zum Entschlüsseln von Informationen enthält, warum muss ich das Gerät entsperren, um über iExplorer darauf zuzugreifen?

Ich verwende iOS 6.0 auf einem iPad3 und verwende das ios-dataprotection-Tool (https://github.com/ciso/ios-dataprotection), um die von den Dateien verwendete Datenschutzklasse zu ermitteln.

iOS Anwendung: AccountVault
Datei: PointMinder.sqlite

Jede Hilfe wird geschätzt.

Danke.

+1

vergessen zu erwähnen, dass das iPad passwortgeschützt ist. – Sec

+0

Ermittelt der iExplorer, wo sich die Escrow Keybag und die Backup-Passphrase befinden? –

+0

iExplorer kann nicht auf das Dateisystem zugreifen, wenn das Gerät nicht gekoppelt ist. Das einzige, was sich nach der Kopplung des Geräts ändert, ist, dass der Schlüsselbund übertragen wird. Also ich vermute, dass es die Escrow-Keybag ähnlich wie iTunes verwendet, um Informationen zu entschlüsseln und zu lesen. – Sec

Antwort

6

Aus Dokumentationsdatei haben Sie verknüpft:

Complete Protection (NSFileProtectionComplete): Der Klassenschlüssel ist mit einem Schlüssel geschützt, die von dem Benutzer-Passcode und dem Gerät UID. Kurz nachdem der Benutzer ein Gerät sperrt (10 Sekunden, wenn die Option Passwort sofort erforderlich ist), wird der entschlüsselte Klassenschlüssel verworfen, sodass alle Daten in dieser Klasse nicht zugänglich sind, bis der Benutzer den Code erneut eingibt.

So Gerät sollten, wenn Sie die Dateien zugreifen möchten entriegelt werden. So hat Apple es gemacht.

Edit: Gefunden in „Hacking und Absichern von iOS-Anwendungen“:

Schutzklasse Schlüssel sind Hauptverschlüsselungsschlüssel verwendet, um Dateien auf ihre Zugriffsrichtlinien zu entsperren basiert. Schutzklassen sind der Verschlüsselungsmechanismus, der zum Erzwingen der Zugriffsrichtlinien von Dateien verwendet wird.

Einige Dateien sind so wichtig, dass das Betriebssystem sie nur entschlüsseln kann, wenn die Benutzeroberfläche des Geräts entsperrt ist. Die Verschlüsselungsschlüssel dieser Dateien werden mit einem Klassenschlüssel umschlossen, der nur verfügbar ist, nachdem der Benutzer seinen Passcode eingegeben hat. Wenn das Gerät erneut gesperrt wird, wird der Schlüssel aus dem Speicher gelöscht, sodass die Dateien nicht mehr verfügbar sind.

Schutzklassen-Hauptschlüssel werden in einem Treuhandkonto gespeichert, das als Schlüsseltasche bekannt ist. Der Schlüsselbund enthält die verschlüsselten Masterschlüssel der Klasse sowie weitere Schlüssel für Systemdateien auf dem Gerät.Das System Keybag wird mit einem anderen Verschlüsselungsschlüssel namens BAGI verschlüsselt, der ebenfalls im Speicher des NAND gespeichert wird. Wenn sich der Benutzer authentifiziert, um eine bestimmte Sicherheitsrichtlinie zu erfüllen, können die verschlüsselten Schlüssel in der Schlüsselablage entschlüsselt werden.

So Schlüssel für diese Dateien werden übertragen, aber verschlüsselt. Wenn Sie Ihren Passcode eingeben, entschlüsselt das Betriebssystem diesen Schlüssel und kann dann dazu verwendet werden, mit ihm geschützte Dateien zu entschlüsseln.

+0

Danke für die Antwort. Ich habe nach Ihrem Kommentar einen anderen Test versucht: Nachdem ich das Gerät mit iTunes gekoppelt und das Gerät entsperrt habe, habe ich den iExplorer geöffnet. Zu diesem Zeitpunkt war die SQLite-Datei zugänglich - so, wie sie ursprünglich war. Nach dem Ausführen schloss ich das Gerät und wartete auf etwas mehr als 5 Minuten und bemerkte, dass die SQLite-Datei noch zugänglich war. Dieses Experiment lief auch nicht wie erwartet. Ich sollte hier darauf hinweisen, dass das Gerät sofort entsperrt wird, und die SQLite-Datei verwendet NSFileProtectionComplete - ich verdoppelte es überprüft. – Sec

+1

Laut dem Dokument, das ich bezog: " Wenn ein Gerät mit Passcode-Sperre zuerst mit iTunes verbunden wird, wird der Benutzer aufgefordert, einen Passcode einzugeben. Das Gerät erstellt dann eine Escrow-Tastatur und übergibt es an den Host. Die Escrow-Tastatur enthält genau die gleichen Klassenschlüssel, die auf dem Gerät verwendet werden. " Es besagt, dass alle Klassenschlüssel in der Escrow Keybag vorhanden sind. Wenn ich bereits alle Klassenschlüssel habe, warum würde dann der Code zum Entsperren des Klassenschlüssels benötigt? Mit anderen Worten, die Kombination aus UID und Passcode ist erforderlich, um den Klassenschlüssel zu erhalten, aber alle Klassenschlüssel sind bereits in der Escrow-Schlüsselablage vorhanden. – Sec

+2

Seltsam, dass nach 5 Minuten Datei noch zugänglich war. Vielleicht war es so etwas wie eine zwischengespeicherte Version in iExplorer (ich habe es nie selbst benutzt)? Außerdem: Der pro-Datei-Schlüssel wird mit einem von mehreren Klassenschlüsseln umschlossen, abhängig von den Umständen, unter denen die Datei zugänglich sein sollte. Das bedeutet wahrscheinlich, dass nicht alle Klassenschlüssel beim Pairing entschlüsselt werden. –

0

Dies funktioniert für mich nur für SQLite-Datenbanken in meiner App, nicht für meine anderen Ressourcen wie ich gehofft hatte. ABER, ich hatte die gleichen Probleme immer noch in der Lage, den Zugriff auf die Datenbanken nach dem Sperren des Gerätes und warten einige Minuten mit iExplore noch offen und Gerät noch verbunden. Wenn ich das iPad abziehe und gleich wieder einbinde, wird iExplore zwangsweise aktualisiert und ich könnte dann NICHT auf die Datenbanken zugreifen. Also nicht sicher, ob es nur die alte 'unverschlüsselte' Datenbankinformation im Speicher hat oder was?