Das neue Dateisystem von Apple

Wie APFS das Apple-Ökosystem verändert

05.04.2017
Von    und Klaus  Rodewig
Mark Zimmermann leitet hauptberuflich das Center of Excellence (CoE mobile) zur mobilen Lösungsentwicklung bei der EnBW Energie Baden-Württemberg AG in Karlsruhe. Er weist mehrere Jahre Erfahrung in den Bereichen Mobile Sicherheit, Mobile Lösungserstellung, Digitalisierung und Wearables auf. Der Autor versteht es, seine Themen aus unterschiedlichsten Blickwinkeln für unternehmensspezifische Herausforderungen darzustellen. Neben seiner hauptberuflichen Tätigkeiten ist er Autor zahlreicher Artikel in Fachmagazinen.

Sofortige Größenberechnung von Ordnern

Um eine Übersicht des auf einem Datenträger belegten Platzes zu erhalten, und zwar pro Verzeichnis und Datei, kann mit HFS+ Minuten dauern. Der Grund ist schnell erklärt. Mangels eines zentralen Stelle, die über diese Information Buch führt, muss das System die gesamte Baumstruktur des Dateisystems durchlaufen und den Speicherplatz jeder einzelnen Datei ermitteln. Das kann dauern; auf alten Magnetfestplatten insbesondere. APFS verwendet zur Abfrage des Speicherplatzes eine Technik namens Fast Directory Sizing. Die Abfrage der Ordnergrößen ist damit kein langwieriges Unterfangen mehr.

SPARSE-Support

Eine Sparse-Datei bezeichnet eine Datei, die in einem Dateisystem kompakt gespeichert werden kann, da sie weniger Daten enthält als die angegebene Dateigröße - sie enthält also Abschnitte mit unbestimmtem Inhalt. In einer Sparse-Datei wechseln sich Bereiche, in denen sich bereits gespeicherte Daten befinden, mit Bereichen ab, die noch nicht beschrieben wurden. Für diese unbeschriebenen Bereiche musste unter HFS+ entsprechend freier Platz fest allokiert werden. APFS benötigt hier nur den Speicherplatz, der tatsächlich belegt ist. Gleichzeitig kann die Datei auf ihre eigentlich definierte Größe dynamisch wachsen bzw. zurück schrumpfen.

Dies ermöglicht es, dass große Dateien, wie z.B. die virtuelle Festplatte einer Virtualisierungsumgebung wie Parallels oder VMWare unter APFS nur den tatsächlich genutzten Speicherplatz benötigen.

Bei einer Sparse-Datei benötigt der "noch leere logische Bereich" einer Datei keinen physikalischen Speicherplatz.
Bei einer Sparse-Datei benötigt der "noch leere logische Bereich" einer Datei keinen physikalischen Speicherplatz.
Foto: Klaus Rodewig und Mark Zimmermann

Verschlüsselung

Langjährige Mac-Anwender mit Sicherheitsbewusstsein werden sich noch mit Grausen an die Anfänge der Festplattenverschlüsselung mit OS X erinnern. HFS+ bot in seiner ursprünglichen Version keine Datenverschlüsselung an. 2003 hat Apple mit OSX-Panther dann FileVault eingeführt. FileVault, in Anwenderkreisen bekannter unter dem Namen FileFault, war nichts anderes als das Speichern des Benutzerverzeichnisses in einem verschlüsselten Image.

Dieses Vorgehen kam mit einigen Pferdefüßen daher. Zum einen konnte man FileVault nicht parallel mit Time Machine nutzen. Man musste also zwischen Verschlüsselung oder Backup wählen. Zum anderen war dies um so dramatischer, als dass ein Image auf einer HFS+-Partition bisweilen dazu neigt, durch einen Crash des Systems korrupt zu werden (wir erwähnten es bereits). Einem unverschlüsselten, korrupten Image seine Daten zu entlocken, ist schon harter Tobak. Bei einem verschlüsselten, korrupten Image ist dies unmöglich. FileVault war in der Praxis daher nicht mehr als eine gewaltige Lachnummer, die in vielen Fällen zum Totalverlust der Daten geführt hat.

Mit FileVault 2, eingeführt mit OSX- Lion, wurde die Situation erheblich besser, denn FileVault 2 bietet eine transparente Verschlüsselung des gesamten Datenträgers und bringt keinerlei Einschränkungen mit sich; auch ist ein Backup über Time Machine damit problemlos möglich.

Aber auch FileVault 2 ist weit von dem entfernt, was auf iOS seit Version 4 der Standard bei der Datenträgerverschlüsselung ist. iOS-Geräte verschlüsseln jede Datei individuell. Das bedeutet, dass eine granulare Verschlüsselung des Datenträgers auch einzelner Dateien möglich ist, abhängig vom Anwendungsfall.

APFS setzt auf das umfangreiche Schlüsselkonzept (NSFile Protection-Klasse) von iOS auf und unterstützt damit die Verschlüsselung ganzer Volumen, einzelner Dateien und sensibler Metadaten. Das Schlüsselkonzept besteht darin, dass eine Datei mit einem eindeutigen Geräteschlüssel und einem Schlüssel, der aus dem Kennwort des Anwenders abgeleitet wird, verschlüsselt wird. Das schützt zum einen davor, dass ein Angreifer einer Datei außerhalb des Gerätes entschlüsselt (Geräteschlüssel). Zum anderen schützt es davor, dass jemand mit phyischem Zugriff auf das Gerät, z.B. ein Dieb, die Daten entschlüsselt, wenn er das Kennwort des Anwenders nicht kennt. Auf diese Weise ist nicht nur ein Schutz gegen physischen Zugriff gegeben, so wie mit FileVault 2, sondern auch gegen logischer Zugriffe, z.B. über Schadsoftware, die unbefugt auf verschlüsselte Dateien zugreifen möchte.

Etwas, das APFS eEbenfalls von iOS lernen wird, ist die Tatsache, dass der "geheime Schlüssel" zur Verschlüsselung das Enzige ist, was gelöscht werden muß, um die Daten "quasi" zu entfernen.

So unterstützt APFS (anscheinend) die Löschung eines Dateisystems durch Constant-Time-Kryptographie, was in der diskutil-Ausgabe "effaceable" genannt wird. Dies wird vermutlich durch einen geheimen Schlüssel realisiert, der nicht aus APFS extrahiert werden kann und der für die Verschlüsselung des Dateisystems genutzt wird. Für eine sichere Löschung braucht man dann nur den Schlüssel zu löschen, anstatt die komplette Festplatte zu scramblen und re-scramblen, um eine vollständige Löschung zu gewährleisten.

Als Verschlüsselungsverfahren kommt unter APFS entweder AES-XTS oder AES-CBC zum Einsatz, je nachdem, auf welcher Hardware das Dateisystem betrieben wird. Letzteres wird unter anderem auch von OpenBSD, Veracrypt oder DM-Crypt genutzt.

Momentaufnahmen

Mit dem neuen Dateisystem ändert sich die Art und Weise, wie Backups angefertigt werden. APFS kann aufgefordert werden, eine nicht beschreibbare Instanz des Dateisystems als Momentaufnahmen (engl. Snapshot) zu erstellen. Dieser Vorgang kann auch als Einfrieren des gesamten Dateisystems zu einem bestimmten Zeitpunkt bezeichnet werden. Snapshots gehören im Server- und Storageumfeld schon seit vielen Jahren zum täglichen Werkzeug von Administratoren.

Beim Anfertigen eines Snapshots findet erst einmal kein Kopiervorgang als solcher statt. Es wird lediglich markiert, welcher Stand von welcher Datei zu diesem Snapshot gehört. Erst wenn eine Datei nach Erstellen des Snapshots geändert wird, schreibt das Dateisystem die geänderten Blöcke der Datei an eine neue Position auf der Festplatte und APFS registriert, dass diese Änderung nicht zum Snapshot gehörte.

Das heißt: Macht der Anwender einen Snapshot seines Heimverzeichnisses und verändert dann eine Datei, bleibt die Version im Snapshot unverändert.

Was interessant ist, ist, dass dies zu einer völlig neuen Art und Weise führen kann, wie Time Machine funktionieren wird. Derzeit verwendet Apples OS X Backup-Schema ein altmodisches System von harten Links, die von Time Machine gebaut und gepflegt werden. In einer zukünftigen Version von Time Machine würden nur Snapshots stattfinden.

Ein solcher Snapshot kann auch als Rollback genutzt werden, um ein System wieder in seinen Ursprungszustand zum Zeitpunkt des eigentlichen Snapshot zurückzuversetzen. Ein solches Verfahren würde es erlauben, ein System-Upgrade oder eine Software auszuprobieren und am Ende das System bei Nichtgefallen oder technischen Problemen davon wieder zu befreien.

Während Snapshots schreibgeschützt sind, ermöglichen es Klone, gelesen, aber auch beschrieben zu werden. Dies greift beim Kopieren von Dateien oder Verzeichnissen im Dateisystem. APFS kann Datei- oder Verzeichnisklone sofort erstellen, ohne Verzögerung (engl. Copy On Write), so dass die damit verbundenen Daten tatsächlich kopiert werden.

APFS überträgt die Daten nicht Byte für Byte, sondern legt nur einen neuen Eintrag in der Verzeichnisstruktur an, der auf die originalen Daten zeigt. Ändert der Anwender nun das Original oder die kopierte Datei, vermerkt APFS diese und speichert die Abweichungen ab. Damit benötigt dann diese Änderung natürlich auch den entsprechenden Platz auf der Platte.

Die Kopie (der Klon) wird dabei nahezu ohne Zeitverzögerung erstellt. Damit verbraucht das System für eine Kopie nur noch den Platz für die Struktur, keinen für die kopierten Daten - und der Vorgang ist praktisch sofort erledigt. Für den Anwender verhält sich eine geklonte Datei oder ein Verzeichnis somit identisch zu einer Kopie im alten HFS+, nur dass kaum Platz verbraucht wird.

Kopierte Dateien sind Referenzen auf das Original. Erst bei Veränderung werden die Details gespeichert.
Kopierte Dateien sind Referenzen auf das Original. Erst bei Veränderung werden die Details gespeichert.
Foto: Klaus Rodewig und Mark Zimmermann

Das Kopieren von Dateien zwischen verschiedenen Speichermedien (z.B. auf einen USB Stick, um sie zu teilen) dauert natürlich noch immer eine gewisse Zeit - proportional zu der Menge der zu kopierenden Daten.