TCFS
Transparent Cryptographic File System
entwickelt an der Universita' Degli Studi Di Salerno(Italien)
Stand: Dezember 1997
 
 


 Problem:

Unter Linux gibt es standartmäßig keine transparente Dateiverschlüsselung. Es gibt zwar das Kommando crypt, welches man zur Dateiverschlüsselung verwenden kann, dessen Nutzung ist allerdings ziehmlich umständlich. TCFS könnte eine Lösung für dieses Problem sein.



Das Wichtigste zu TCFS in Kurzfassung: Das TCFS arbeitet wie das NFS (Network File System). Es wurde zusätzlich ein Flag X für verschlüsselte Dateien eingeführt. Der  Zugriff auf das TCFS erfolgt (für die Applikationen) über die selben Systemaufrufe wie im NFS (open, read, write, ...). Die Datenblöcke werden nur dann richtig entschlüsselt, wenn im Kernel der richtige Schlüssel vorhanden ist.

Die Verschlüsselung der Dateien erfolgt mittels DES. Seit TCFS 2.0.1 wird auch IDEA und RC5 unterstützt, wobei zur Übersetzungszeit der Verschlüsselungsalgorithmus ausgewählt sein muß (in Zukunft ist das für die Laufzeit geplant). Für die Schlüsselgenerierung wird der MD5 Algorithmus verwendet. Der Schlüssel selbst wird mit dem Login password verschlüsselt in einer Datei gespeichert. Deshalb muß auch das passwd Kommando modifiziert werden. Die Datei /etc/tcfspasswd enthält Informationen über die TCFS User (z.B. Loginname, verschlüsselter Key).

 Darstellung der Funktionsweise von TCFS
 
 
 
 
 
 


Sicherheit

Server
Von Serverseite hat man keinen Zugang zum Schlüssel. Damit macht ein Lesen der Daten keinen Sinn. Ein löschen der Dateien ist natürlich möglich. Für spätere TCFS Versionen ist ein Mechanismus geplant, um modifizierte Dateien zu erkennen.

Client
Schwachpunkt auf Client-Seite ist Root. Er kann z.B. Veränderungen an Kernel oder TCFS vornehmen oder die Eingaben des Nutzers überwachen. Außerdem kann Root von /dev/kmem Daten lesen... .
 
 
 
 
 
 


Performance Test
 
   
Alle Werte sind Durchschnittswerte aus 10 Messungen. Die Ausführung der Tests erfolgte gemischt um Verfälschungen durch Caches zu vermeiden. Alle Zei ten sind in Sekunden angegeben.
 

Zeit zum Schreiben:
Dateisystem 10Kb 100Kb 1Mb 10Mb
NFS 0.5 0.14 1.74 12.58
TCFS ohne DES 0.5 0.19 1.69 17.74
TCFS mit DES 0.6 0.46 3.77 40.08
 
Zeit zum Lesen:
Filesystem 10Kb 100Kb 1Mb 10Mb
NFS 0.09 0.16 1.14 10.97
TCFS ohne DES 0.10 0.16 1.30 12.25
TCFS mit DES 0.11 0.31 2.71 26.40
DES engine 0.3 0.25 2.38 23.82
 
 
 
 
 
 


 TCFS Installation

TCFS Voraussetzungen
 

Installation von TCFS auf dem Client
 
 1. Untar the distributon
       cd /usr/src
       tar xvfz tcfs.tgz
    (hier wird davon ausgegangen, das die Kernelquellen unter /usr/src/linux zu finden sind)

 2.  Modifizieren der Kernelquellen
      patch < /usr/src/linux/fs/tcfs/patches/tcfs.diff

 3. Installation der Utilities
        diese befinden sich unter /usr/src/linux/fs/tcfs/contrib und müssen ins Verzeichnis bin kopiert werden.
        Ein Makefile ist auch vorhanden.
             make install für automatische Installation.
             make uninstall für das Entfernen der TCFS Utilities und die Wiederherstellung des ursprünglichen Zustandes

 4.  Neuübersetzung des Kernels
        Dabei wird das Chiffreverfahren ausgewählt (z.Z. DES, IDEA oder RC5).

5.  Um das TCFS Modul mit dem Kernel zu verbinden muß das Kommando insmod tcfs aufgerufen werden.
 

Installation von TCFS auf dem Server
 
 1. Kopieren von xattrd(*) aus dem Verzeichnis /usr/src/linux/fs/tcfs/contrib/binaries nach /usr/sbin
 2. Ausführen von xattrd and eintrag in die rc Dateien.
 

Mounten eines TCFS Filesystemes auf einem Client
 
 Angenommen der Server exportiert das Verzeichnis /exports und der Client möchte server:/exports an /mnt/server mounten:

            mount -t tcfs server:/exports /mnt/server
 

Verwendung eines gemounteten TCFS Filesystems auf Client-Seite
 

1.  Der Nutzer muß sich davon überzeugen, daß das Verzeichnis /mnt/server wie oben beschrieben gemountet ist (wenn nicht r Systemverwalter konsultieren).
2.  Schlüsselgenerierung mittels tcfsgenkey(*) (jeder TCFS-Nutzer muß dieses Kommando nur einmal ausführen).
3.  Ausführen des Kommandos tcfslogin(*) um den Key in das TCFS Kernelmodul zu bringen (nur einmal für jede Sitzung notwendig)
4.  Wechseln ins Verzeichnis /mnt/secure um hier zu arbeiten (selbstverständlich benötigt man dort ein eigenes Verzeichnis z.B. /mnt/secure/userlogin)
5.  Mit den Kommandos lsattr(*) und chattr(*) kann man sich die Sicherheitsflags anzeigen lassen und diese ändern.
 
 
(*) siehe Manual für mehr Informationen.
 
 
 
 
 

 


Quellen und weiterführende Informationen


Alle Angaben auf dieser Seite sind ohne Gewähr.