iOS Data Protection

Das Thema Data Protection kann noch einige Details zusätzlich zur Diskussion in Bits und so #340 vertragen:

Geräte ab dem iPhone 3GS verschlüsseln immer den physikalischen Massenspeicher. Darüber ist z.B. die schnelle Fernlöschung realisiert. Das Gerät kann den Schlüssel aus einem speziellen Bereich, genannt Effaceable Storage (auslöschbarer Speicher), entfernen und damit die gespeicherten Inhalte unzugänglich machen.

Zusätzlich dazu existieren Data Protection Classes. Beim Anlegen von Dateien kann die App die Daten einer Klasse zuordnen, die darüber entscheidet, wann die Daten der App wieder zum Lesen zugänglich sind. Die Klassen sind:

  • No Protection – Datei ist immer zugänglich
  • Complete – Datei ist nicht zugänglich, außer das Gerät ist entsperrt
  • Complete unless already open – Geöffnete Dateien bleiben lesbar, auch wenn das Gerät wieder gesperrt wird
  • Complete until first login – Datei ist nicht zugänglich, bis das Gerät nach dem Booten einmal entsperrt wurde

Diese Zuordnung der Datei zu einer Klasse kann auch wieder abgefragt werden. Außerdem kann abgefragt werden, wie die aktuelle Lesebereitschaft von geschützten Dateien ist. Diese Abfrage ist allerdings nur im gesperrten Zustand negativ.

Die App kann also nicht unterscheiden, ob die eigenen Daten zugänglich sind, weil der Nutzer seinen Passcode eingegeben hat, oder weil er keinen hat.

findmyfriendsApples eigene Apps, z.B. Find My Friends, haben Zugriff auf diese Information und nutzen diese auch sinnvoll. Hat der Nutzer einen Passcode, muss das Passwort zur Apple ID nicht eingegeben werden. Fehlt der Passcode, wird das Passwort verlangt.

Im Enterprise-Umfeld kann in Konfigurationsprofilen ein Passcode erzwungen werden. Dann kann auch die zugehörige Enterprise-App davon ausgehen, dass der Nutzer seinen Passcode eingegeben hat, wenn die Daten zugänglich sind. Für App Store-Apps fehlt diese Sicherheit.

Neben den Data Protection Classes für Dateien gibt es analog dazu Klassen für Keychain-Einträge, mit zusätzlichen Spezialfällen. Mit den “ThisDeviceOnly” Klassen bleibt ein Eintrag nur dann nach einem Backup und Restore zugänglich, wenn er auf dem selben Gerät passiert. Die Dokumentation unterscheidet zusätzlich zwischen einer Wiederherstellung auf einem anderen Gerät und einer neuen Installation auf dem selben Gerät.

Diese Bindung an ein einzelnes Gerät geschieht über die UID, einen 256-Bit AES-Schlüssel, der während der Herstellung in die CPU gebrannt wird. Laut Apple wird keine Kopie dieses Schlüssels von Apple oder seinen Zulieferern gespeichert.

Für iTunes- und iCloud-Backups werden Keybags angelegt, die die Schlüssel enthalten, um Backups auch ohne die Eingabe des Passcodes im Hintergrund zu erlauben. Außerdem kann im Enterprise-Umfeld ein vergessener Passcode damit auch wieder zurückgesetzt werden.