FDE with tpm support
FDE with tpm support Release status: experimental [box doku] | |
---|---|
Description | Tutorial zu Full-Disc-Encryption with tpm support |
Author(s) | Philipp |
Last Version | 0.1 () |
Platform | Linux |
Download | http://projects.sirrix.com/trac/TPM-KM |
Einleitung
Trusted Computing ist ein sehr bekannter Begriff in der IT Welt. Immer mehr wird das TPM ("Trusted Plattform Modul") als Standard in Laptops, Netbooks und PCs verbaut. Doch kaum einer nutzt das TPM privat. Vielmehr nutzen Firmen den Chip um sichere Datenübertragungen per SSL zu Firmenrechnern und -servern zu garantieren. Dies ist aber nicht die einzige Möglichkeit den TPM sinnvoll zu nutzen. Datenverschlüsselung und Hashen von Hard- und Software sind weitere Einsatzgebiete. In diesem Tutorial wird der Aufbau und die Eigenschaften, sowie Komplettverschlüsselung mithilfe des TPM erläutert.
Warum Komplettsystemverschlüsselung mit TPM ?
Festplattenverschlüsselungen sind heutzutage schon fast Standard in der Linuxwelt. Programme wie Cryptsetup, Truecrypt, Dm-crypt, LoopAES und Dateisysteme wie eCryptFS werden für diesen Zweck genutzt und erfreuen sich großer Popularität. Dennoch verschlüsseln nicht alle User ihre Rechner, Notebooks usw... Private Daten zu schützen ist ein wichtiger Prozess in der Digitalisierung. Immer mehr User haben ihr halbes Leben auf Festplatten gespeichert doch nur wenige kümmerts was mit Ihren Daten passiert. Deswegen müssen private Daten geschützt werden. Keiner würde sich freuen, wenn Daten von seinem gestohlenen Notebook im Netz zu finden wären. Sehr wichtige Firmendaten, Tagebucheinträge , Bilder und Videos von Verwandten, all dies sollte nicht in fremde Hände geraten.
In diesem Tutorial stelle ich zwei Lösungen vor, mit denen man die Integrität und Authentizität seiner Daten, bis zu einem bestimmten Grad gewährleisten kann. Dies ist nur dann möglich, wenn man eines der Verschlüsselungsprogramme und das TPM nuzt.
Die erste Lösung ist Cryptsetup (Opensource). Dieses Programm ist fast schon Standard in jeder Distrubution und gilt als sicher. In diesen Tutorial nutze ich cryptsetup-1.1.0.0. Es hat einige Verbesserungen erhalten und besitzt nun auch endlich die Möglichkeit den Hash Algorithmus auszuwählen.
Die zweite Lösung ist Keyrona (Opensource) von der Sirrix AG in Bochum. Dieses Programm kann verschiedene Softwareimplementierungen und Dateisysteme die Kryptographie integrieren, nutzen. Es stellt den Kern des ganzen Verschlüsselungssystems da. Das TPM stellt dank trousers Schnittstelle, Keyrona alle wichtigen TPM Funktionen zur Verfügung.
Bekannte Sicherheitsprobleme
Intel Adavanced Management Technology:
Nach der Hackerin Joana Rutkowska lässt sich ein Rootkit über DMA in den Intel AMT speicher laden. Dieses wird trotz augeschalteter Intel AMT Funktion, durch einen gehookte AMT Funktion ausgeführt. Bisher ist mir noch nicht bekannt ob der TPM den Speicher der Intel AMT hasht. Allerdings ist ein erfolgreicher Angriff nur bei dem Q35 Chipsatz bekannt.
Hardware Keylogger und Cold Boot Attacks:
Es ist möglich, mittels Hardware Keylogger, die nötigen Schlüssel zum entschlüsseln des System zu bekommen. Es gibt keine Maßnahmen gegen diesen Angriff, außer man gießt den Laptop in Gusseisen ein. Cold Boot Attacks haben nur auf die Root Partition Effekt, da ihr Schlüssel ständig sich im Speicher befindet. Eine extra Datenpartition schafft abhilfe, wenn man noch zusätzlich grsecurity nutzt. Dort kann man die Einstellung 'Sanatize all free memory' aktivieren um Schlüssel (sowie Speicher) die nicht mehr gebraucht werden zu überschreiben. Nebenbei, Cold Boot Attacks sind nur dann effektiv wenn man relativ schnell an das innere des Notebooks (Arbeitsspeicher) kommt, was sich bei manchen Notebooks relativ kompliziert erweisst (Thinkpad und Dell).
Reverse Engeneering des TPM:
Vor kurzen ist es einem Hardware Hacker gelungen, den EK der SmartCard TPM auszulesen. Video Da in unserem Verschlüsselungssystem ein ESD 'External Storage Device' als Speicherort für den crypto blob genommen wird, bringt es dem Angreifer nichts den Schlüssel auszulesen. Des weiteren ist der Angriff nicht Praxis relevant, vorher könnte man das ESD vernichten.
Reset Attack:
Bei TPM Chip v.1.1b lässt sich eine reset Attacke durchführen die im laufenden Betrieb die PCR auf NULL zurück setzt und so sich einfach beliebig Werte in die PCR schreiben lassen. Dieser Angriff ist seit der TPM Spezifikation 1.2 nicht mehr möglich.
BIOS:
Es ist bekannt das in Intel BIOS Exploits vorhanden sind, die es ermöglichen das BIOS zu updaten und somit die 'Chain of Trust' zerstören. Dadurch könnte man einen Keylogger in das BIOS implementieren oder bösere Dinge tun. Das TrustedCore BIOS welches in Thinkpads verbaut worden ist, soll dies verhindern. Es wird signiert und kann nicht durch ein unsigniertes BIOS ersetzt werden. Andere Exploits wie z.B. der Bootbild Bug lassen auch evtl. Code Ausführung zu. Mit neurer Technology 'Intel TXT' soll dieses Problem gelöst werden.
Not hashed Hardware Attack:
Eine wirklicher Angriff ist es nicht, jedoch kann man Code, z.B. über SD-Karten Lesegeräte die intern verbaut sind, ausführen. Warum? Der TPM hasht vom BIOS den SD-Kartenschlot nicht mit, also könnte man darüber versuchen Code auszuführen wenn evtl. Bugs im Code vorhanden sind!
DMA, Netwerkkarte, Graphikkarte, Prozessor und alles andere was Speicher besitzt:
Es ist möglich in diesen Geräten Rootkits auszuführen oder sie zu manipulieren. Ich zitiere mal Joanna Rutkowska: "Wenn ich nicht auf der Liste der 10 gefährlichsten Attentäter steht, braucht ihr euch darum keine Sorgen machen". Natürlich kann dies auch ein weiteres großes Angriffsgebiet sein, wo Intel schon versucht mit seiner TXT Technology schaden zu begrenzen. Jedoch fragt sich, ob sowas überhaupt praxisnahe Angriffe sind. Das Risiko ist da, aber in wie weit vertraut man TPM und allgemein Hardware? Meiner Meinung: ÜBERHAUPT NICHT!!!
Das Trusted Platform Modul
Das TPM ist ein kleiner Chip, der sich auf dem Mainboard oder auf einer extra Platine befindet. Er startet vor dem BIOS und ist somit eine der ersten Softwarekomponenten, die beim Rechnerstart geladen werden. Wird das TPM manipuliert oder entfernt, kann es sein, das der Rechner nicht mehr startet. TPM's werden von verschiedenen Herstellern wie Atmel, Infineon und vielen Anderen hergestellt. Die Hersteller halten sich je nach TPM an bestimmte Spezifikationen. Diese Spezifikationen werden von der Trusted Computing Group vorgeschrieben.
Das TPM auf Hardware Ebene
In diesem Bild ist die spezifizierte TPM Hardware dargestellt. Diese wurde wieder durch die Trusted Computing Group vorgeschrieben. Hier ein Beispiel von Atmel:
TPM Architektur
Das TPM besteht aus einem LPC-Bus, der die einzelnen Komponenten miteinander verbindet. Diese Komponenten besitzen interne Sicherheitsabfragen um Manipulationen über den Datenbus auschließen zu können. Dies gilt aber leider nicht für alle Komponenten.
I/O Bus
Protokoll De- und Enkodierung für interne und externe Bussysteme.
Crypto Coprocessor
Ist zur Verschlüsselung und Signierung da.
Asymmetrische Kryptographie:
- Schlüssel Generierung.
- Ver- und Entschlüsselung
- Hashen
RSA Engine
RSA wird zum Verschlüsseln und Signieren genutzt.
Signatur Operations
Macht interne und externe Signierung.
Symmetric Engine
Das TPM nutzt symmetrische Verschlüsselung für Authentifizierungs- oder Transportsitzungen.
-> One Time Pad (standard MGF1)
-> AES , wenn es implementiert ist.
Der TPM nutzt keine symmetrische Verschlüsselung für Nachrichtenverschlüsselung!
Secure Boot Scheme
Sealing
Unsealing
Aufsetzen eines TPM und cryptsetup geschützten Systems
In diesem Teil wird die Einrichtung des versiegelten Systems beschrieben.
Voraussetzungen
1. Ein TPM der im BIOS aktiviert ist.
2. Eine weitere externe oder interne Festplatte auf der das neue System aufgesetzt werden soll.
3. Ein bereits vorhandenes Betriebssystem (besser ist das) oder eine live CD.
Installation von Programmen und Kernelkonfiguration
Die Installation von Cryptsetup ist durch einen Paketmanager oder per Source Code installation durchzuführen.
Ubuntu:
apt-get install cryptsetup
Gentoo:
emerge -av cryptsetup
Die Installtion von Keyrona kann einfach durch fertige Pakete oder per Source Code geschehen. Momentan wird noch an Patches gearbeitet, die Keyrona patchen, damit es das wirkliche versiegeln der Hardware unterstützt. Keyrona siegelt momentan nur Zufallsdaten an den cryptsetup blob. Dazu später weiteres.
Danach muss die TPM-Software Umgebung installiert werden die Trousers heisst. Dann kann man noch Tools installieren um mit dem TPM arbeiten zu können. Wichtig ist es für eine graphische Oberfläche den TPM-Manager von der Sirrix zu installieren. Diesen benutzt man dazu, um TPM Owner also Besitzer zu werden. Dann muss man auch noch den SRK auf das "WELL_KNOWN_SECRET" setzen.
Trousers:
apt-get install trousers
Tools:
apt-get install tpm-tools
TPM-Manager:
Download Quelle Downloaden und *.deb installieren.
Der Kernel muss, wie folgt konfiguriert und neu kompilliert werden:
Device Drivers -> Character Devices -> <*> TPM Hardware Support -> <*> TPM Interface Spezifikation 1.2 <M> "name" TPM Interface
Am besten alle Treiber "name" als Modul aktivieren, weil man evtl. der Hersteller seines eigenen TPM's nicht bekannt ist. Für Cryptsetup müssen noch der Cryptoloop support, Kryptographische Algorithmen usw. im Kernel aktiviert werden. Danach macht man ein reboot, startet folgende Programme und lädt das Modul:
modprobe tpm_name tcsd tpmmanager
Dort nimmt man den TPM in Besitz indem man ein Password vergibt "Take Ownership" Dann wechselt man noch mit "Change SRK" zum "WELL_KNOWN_SECRET" damit Keyrona damit arbeiten kann.
Nun ist alles eingerichtet um mit dem TPM und Keyrona io Operationen durchzuführen.
Verschlüsseln der Festplatte und kopieren der Daten
Als erstes starten wir den Service:
keyrona_keyproviderd -p
Nun ändern wir noch schnell die Script Einträge für die cryptsetup Verschlüsselung in:
/etc/keyrona/scripts/create_cryptsetup_luks.sh
Danach legt man einen Administrator in Keyrona an:
keyrona_manager -i ca
Anlegen von einem Benutzer an den wir an die Verschlüsselung binden:
keyrona_manager -u cu
Ein verschlüsseltes Volume erstellen und den Benutzer an das Volume binden:
keyrona_manager -v cv keyrona_manager -v astv
Neue Root Partition mounten und altes System kopieren:
keyrona_mount -m -u username -v volumename -p /pfad/to/mount
rsync -a bin dev etc home lib media opt root sbin selinux srv usr var /pfad/to/mount/ cd /pfad/to/mount/ mkdir proc sys mnt boot tmp chmod a+rwx tmp chmod a+t tmp
Andere Partitionen wie /boot /home etc. auf die neue Festplatte clonen.
Initramfs erzeugen und Trusted Grub installieren
Die Initramfs muss mit einigen Programmen, Bibliotheken und Konfigurationsdateien erweitert werden.