Linux-Praxisbuch/ Sicherheit durch Kryptographie auf Rechnern

Aus Wikibooks

Zurück zu Linux-Praxisbuch

Grundlagen der Kryptographie[Bearbeiten]

Bei der Kryptographie kommt es darauf an, durch Austauschen der Zeichen und durch Vertauschen der Reihenfolge nach festgelegten Regeln eine Information für einen anderen unlesbar zu machen. Jemand, der die Regeln kennt, kann durch Rückführung der Vorgänge die Information wieder herstellen. Die Regeln, also die Verschlüsselungsmethode, muss so gewählt werden, dass durch Vergleichen von mehreren Botschaften oder auch Klartexten und verschlüsselten Botschaften nicht auf die Regeln geschlossen werden kann. Auch eine Häufigkeitsanalyse der Buchstaben und Zeichen sollte keinen Aufschluss geben. Um das zu erreichen, verwendet man eine zufällige Komponente, die Teil des Schlüssels wird.

symmetrische Kryptographie[Bearbeiten]

Als symmetrische Kryptographie wird grundsätzlich jedes Verfahren bezeichnet, das zum Ver- und Entschlüsseln den gleichen Schlüssel benutzt. Die einfachste und zugleich sicherste Methode ist ein Wegwerfschlüssel. Ein Zufallsgenerator erzeugt einen Datenstrom, der als Schlüssel fungiert. Die Botschaft wird mit einer Xor Verknüpfung mit dem Datenstrom verknüpft. Der Empfänger der Botschaft muss sie nur wieder mit den Datenstrom Xor verknüpfen um die Zufallszeichen zu eliminieren. Diese Beispiel für eine symmetrische Verschlüsselung offenbart alle Probleme der symmetrischen Verschlüsselung. Der Empfänger muss den Schlüssel schon besitzen, aber auf welchem sicheren Weg? Bei dem einfachsten Verfahren ist der Schlüssel genauso lang wie die Botschaft und kann nur einmal verwendet werden. Bei modernen mathematischen Verfahren ist der Schlüssel wesentlich kürzer, trotzdem muss der Empfänger den Schlüssel schon haben. Zur geheimen Aufbewahrung von Informationen ist dieses Verfahren aber sehr gut geeignet.

asymmetrische Kryptographie[Bearbeiten]

Zwei Mathematiker, Diffie und Hellmann, entwickelten das asymmetrische Verfahren, bei dem der Schlüssel aus zwei Teilen besteht. Alles was mit dem einen Teil (dem öffentlichen Schlüssel, "public key") verschlüsselt wird, kann nur mit dem anderen Teil (dem privaten/geheimen Schlüssel, "private key") entschlüsselt werden. Die Basis dieser Verfahren sind mathematische Berechnungen, die sich nur in eine Richtung schnell und effektiv durchführen lassen. Bisher benutzen die meisten dafür das Problem der Faktorisierung großer natürlicher Zahlen in Primfaktoren. Inzwischen gibt es auch einige andere Probleme, die sich eignen. Auf der Basis dieser Forschungen entstanden zahlreiche asymmetrische Verfahren zur Signierung von elektonischen Dokumenten und Verschlüsselung von Nachrichten. Bei der Signierung wird mit dem eigenen geheimen Schlüssel eine Prüfsumme verschlüsselt. Ein jeder kann die Prüfsumme nachrechnen und mit den öffentlichen Schlüssel des Unterzeichners die Orginalprüfsumme zum Vergleich entschlüsseln. Bei der Verschlüsselung von Nachrichten verschlüsselt ein Absender die Nachricht mit den öffentlichen Schlüssel des Empfängers, so das nur dieser sie wieder entschlüsseln kann.

Verschlüsselung von Festplatten[Bearbeiten]

Zweck[Bearbeiten]

Verschlüsselung von Daten auf dem Datenträger dient als ergänzende Maßnahme zur Sicherung von Rechnern. Fast alle Betriebssysteme sind gegen Angriffe auf ihre Daten über Netzwerke mehr oder weniger gut gesichert. Nur ganz wenige sind gegen Angriffe auf Ihre Hardware gesichert. Man kann fast immer den Rechner von CD mit einem Betriebssystem booten das auf die Dateisysteme zugreifen kann. Datenträgerverschlüsselung kann in diesem Fall die Daten trotzdem sichern. Sie kann die Daten nicht zur Laufzeit des Rechners schützen wenn das Passwort eingegeben ist und der Dateisystemtreiber nur auf die Rechte des Betriebssystems achtet.

Lösung[Bearbeiten]

Es gibt mehrere Lösungen für Linux. Am häufigsten werden heute die kernelintegrierten Krypto Treiber verwendet. Dabei kommt das Loop Device zur Verwendung, mit dem man auch Imagedateien als Gerät mounten kann. Die Kryptotreiber werden dabei als Lage zwischen die Hardwaretreiber und die Dateisystemtreiber geschaltet. Die Daten werden auf dem Weg von der Hardware entschlüsselt und zur Hardware verschlüsselt. Der Schlüssel wird beim Aufsetzen des Laufwerks mit Loopsetup abgefragt. Hierbei ist zu beachten, dass der Schlüssel nicht - wie bei anderen Verfahren - auf der Platte abgelegt existiert. Er wird vom Anwender über die Tastatur eingegeben. Das heisst zum einen, dass gewöhnlich alle Zeichen, die man über die Tastatur eingibt, als 8. Bit eine 0 haben, was den Schlüssel leichter angreifbar macht. Zum anderen muß die Eingabe lang genug sein, um die Schlüssellänge abzudecken. Ein längerer Ausdruck ist hier zwingend notwendig.

CFS ist ein Cryptofilesystem, das für Netzwerke geschrieben wurde. Es benutzt einen modifizierten NFS Server, um die Daten zu liefern. Die Verschlüsselung ist auf dem Dateisystem implementiert. Man kann vom Verzeichnis bis zum Verzeichnisbaum verschlüsseln. Der Schlüssel muß beim Öffnen des Verzeichnisses eingegeben werden. Es ist möglich, die Daten erst auf der Clientseite zu entschlüsseln. Eine Besonderheit ist die Tunnelbildung zum User, die Daten können auch bei aktiven offenen Verzeichnissen nicht von anderen gelesen werden, auch nicht von root. Das System läuft im Userspace und ist somit leicht portierbar. Dafür ist die Geschwindigkeit sehr schwach. Es ist mehr für einzelne Benutzer geeignet.

TCFS ist eine Erweiterung auf Kernelmodule, dafür nur noch für BSD und Linux implementiert. Die Geschwindigkeit ist wesentlich besser.

Einzelne Dateien können auch auf einem beliebigen Dateisystem mit Hilfe von GNUpg durch den eigenen, öffentlichen Schlüssel gesichert werden und stehen nach Entschüsselung mit dem privaten Schlüssel wieder zur Verfügung. Hierzu muß erwähnt werden, das die Originaldatei der zu verschlüsselnden Datei nicht einfach gelöscht werden darf. Die Daten würden in freien, nicht zugeordneten Datenblöcken weiter auf der Platte existieren. Die Datei muß vielmehr vor dem Löschen byteweise mit Zufallszahlen überschrieben und erst dann gelöscht werden. Gnupg beherrscht das.

Gesamtsicherheit[Bearbeiten]

Die Sicherheit der kryptographischen Lösung kann nicht allein an der Schlüssellänge, auch nicht am kryptographischen Verfahren gemessen werden. Es muß die Gesamtlösung betrachtet werden. Dazu gehört auch die Schlüsselform und die Sicherung des Schlüssels. Beim Verfahren mit Kerneltreibern und dem Loopdevice gilt zur Laufzeit des Rechners die Rechtestruktur von Linux. Beim Ausschalten des Rechners geht der Schlüssel verloren und die Daten sind gesichert. Der Treiber verhindert auch, dass der Schlüssel in den Swapspace ausgelagert wird. Es wird nicht verhindert, dass Daten vom gesicherten Laufwerk in den Swapspace ausgelagert werden. Dagegen hilft es, keinen Swapspace zuzulassen oder die Swap-Partition bei jedem Neustart mit einem zufällig gewählten Schlüssel verschlüsselt zu mounten. Beim Hochlaufen des Rechners nach Stromausfall muß ein händischer Eingriff zur Eingabe des Passwords erfolgen, sonst stehen die gesicherten Laufwerke nicht zur Verfügung. Theoretisch könnte man das auch mit einen Startscript lösen, aber wenn man das Password auf dem Rechner speichert, kann man auch gleich auf den ganzen Aufwand verzichten, denn die Sicherheit ist dieselbe.

In manchen anderen Betriebsystemen wird kryptographische Sicherung von Dateien und Verzeichnissen auf Userebenen im Dateisytem bereitgestellt. Hier besitzt jeder User ein asymmetrisches Schlüsselpaar. Es wird für jede Datei ein symmetrischer Zufallsschlüssel erzeugt, der mit dem öffentlichen Schlüssel des Users verschlüsselt abgelegt wird. Beim Zugriff auf die Datei werden vom Betriebssytem die Userrechte geprüft, das Kryptosystem stellt automatisch den Schlüssel zur Verfügung und ermöglicht Zugriff auf die Daten. Diese Lösung erlaubt einen automatischen Wiederanlauf des Rechners nach Stromausfall. Allerdings wird die Sicherheit der Daten auf die Sicherheit des Userpasswords begrenzt. Wird das Password überwunden oder gelöscht, stehen die Daten einem Angreifer zur Verfügung - unabhängig von der Schlüssellänge oder dem kryptographischen Verfahren.

Ein interessantes Detail, welches für den angstfreien Einsatz konsequenter Verschlüsselung auf allen Datenträgern spricht, ist der Umstand, dass Dateisystemüberprüfung und ggfs. Rettung/Restauration der Daten durchaus via LiveCD (z.B. Knoppix) erfolgen können - natürlich nur, wenn man die Passphrase der verschlüsselten Partition kennt.

Ausserdem spricht gegen eine Verschlüsselung z.B. nur des /home-Verzeichnisses der Umstand, dass es Aussenstehende nichts angeht, welche konkrete Software man installiert hat. Ausserdem bieten die unverschlüsselten Teile der Partition möglicherweise Angriffspunkte durch einspielen manipulierter Dateien via LiveCD, ohne dass der reguläre Anwender davon etwas merkt.

Selbst die Manipulation des Kernels aus der immer unverschlüsselt vorliegen müssenden /boot-Partition kann man dadurch umgehen, dass man ebendiese mit ein wenig Handarbeit auf einen USB-Stick oder eine CD überträgt und anschliessend stets und konsequent von dort bootet - natürlich nicht ohne zu vergessen, den Datenträger bei jedem Verlassen des Rechners mit zu nehmen. Falls er doch einmal verloren gehen sollte, kann man unautorisiertes booten von diesem dadurch vermeiden, dass man bei Einsatz des Bootmanagers GRUB ein Passwort vergibt.

Verschlüselung von externen Datenträgern[Bearbeiten]

Es ist eine sicher ernst zu nehmende Diskussion, welchen Sinn die konsequente Verschlüsselung von Festplatten auf stationären Rechnern macht. Für externe Datenträger, wie USB-Sticks oder SD-Karten, sollte konsequente Verschlüsselung Standard sein, da sie unterwegs "gerne verloren gehen". Welche die ideale Methode ist, hängt dabei vom Einsatzszenario ab. Wird beispielsweise exklussiv Linux von einem einzigen Benutzer eingesetzt, kann eine Vollverschlüsselung der gesamten Datenträgerpartition via dm-crypt/cryptsetup ziehlführend sein. Arbeiten mehrere Linuxanwender am Rechner kann eine datei-/ordnerbasierte Lösung die bessere Wahl sein. Sollen Daten mit Windowsrechnern ausgetauscht werden, stellt TrueCrypt wohl die beste Wahl dar, da die Verschlüsselung in Dateien, die die Funktion eines Containers übernehmen, implementiert wird. Darüber hinaus bietet TrueCrypt als erweitertes Sicherheitsfeature das Konzept der glaubhaften Abstreitbarkeit an, was z.B. in politisch instabilen Regionen zum Einsatz kommen kann.