CFS: A Cryptographic File System for UNIX


Überblick


Beispiel-Dateibaum

Die folgende Abbildung zeigt ein Beispiel eines Dateibaums, der ein virtuelles CFS-Dateisystem enthält, dessen Wurzel unter /crypt zu finden ist. Unterhalb dieser Wurzel kann jeder Nutzer seine Teilbäume montieren.

cfs_tree.gif

Im konkreten Fall ist genau ein solcher Teilbaum montiert, der unterhalb von /crypt/hot zu erreichen ist. Die dort sichtbaren Dateien befinden sich lediglich in verschlüsselter Form auf dem externen Datenträger, und zwar unterhalb des Verzeichnisses /home/hot/secret.

Der Abbildung ist zu entnehmen, dass auch die Datei- und Verzeichnisnamen verschlüsselt gespeichert werden. So steht z.B. edbcb7a9192f3cf5 für die Datei abc und ac12298c80b64663 für das Verzeichnis 123.

Der etwas eigenartig anmutende, da offenbar ins Leere zeigende symbolische Link .pvect_edbcb7a9192f3cf5 enthält einen sog. Perturbations-Vektor (perturbation vector) für die Datei edbcb7a9192f3cf5, deren Klartextname abc lautet. Dieser Vektor fließt als ein zusätzlicher Operand in die bei der Ver- bzw. Entschlüsselung von Dateiinhalten ausgeführten XOR-Operationen ein und soll verhindern, dass identische Teile des Inhalts unterschiedlicher Dateien auf dasselbe Chiffrat abgebildet werden. Damit hat der Perturbations-Vektor eine dem bei Blockchiffren genutzten Initialisierungs-Vektor (IV) entsprechende Funktion.

Als Perturbations-Vektor wird das Bitmuster verwendet, das sich hinter der stets 8 Byte langen Zeichenkette verbirgt, die den Inhalt des Links darstellt. Als Elemente dieser Zeichenkette werden nur die 16 ASCII-Zeichen 0 ... 9 und a ... f verwendet.

Der im Beispiel angegebene Link-Inhalt 1a8af884 repräsentiert demnach das folgende Bitmuster:

ASCII-Zeichen 1 a 8 a f 8 8 4
Hexadezimal-Wert 31 61 38 61 66 38 38 34
Bitmuster 0011 0001 0110 0001 0011 1000 0110 0001 0110 0110 0011 1000 0011 1000 0011 0100

Die Erzeugung bzw. Berücksichtigung des Links mit dem Perturbations-Vektor kann bei Bedarf durch die Option -l (lower security mode) bei cattach unterdrückt werden. In diesem Fall wird der Null-Vektor, d.h. ein aus lauter 0-Bits bestehender Vektor verwendet, der bei XOR wirkungslos bleibt.


Administrations-Dateien und Schlüssel bei CFS 1.4

Details dazu finden sich in einem separaten Dokument.


Erstmalige Installation (Beispielablauf)


Alternativen zu CFS

Neben dem schon recht betagten CFS gibt es eine Reihe anderer und modernerer Ansätze zur Realisierung kryptographischer File-Systeme. Hier eine Auswahl für Linux:

http://www.debianadmin.com/filesystem-encryption-tools-for-linux.html

Speziell EncFS dürfte sich auf Grund seiner zentralen Konzepte als logischer Nachfolger sowie performantere Alternative zu CFS empfehlen:


Holger Trapp

letzte Modifikation: 2.6.2007