FDE-with-TPM-support: Unterschied zwischen den Versionen
Zaolin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Zaolin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(46 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{ProjektInfoBox | {{ProjektInfoBox | ||
|name = FDE with tpm support | |name = FDE with tpm support | ||
|status = | |status = obsolete | ||
|image = Logo tpm.png | |image = Logo tpm.png | ||
|description = Tutorial zu | |description = Tutorial zu FDE with TPM support | ||
|author = Philipp | |author = Philipp | ||
|username = Philipp | |username = Philipp | ||
|version = | |version = 1.5 | ||
|update = | |update = | ||
|platform = Linux | |platform = Linux | ||
|license = | |license = | ||
|download = | |download = https://www.das-labor.org/trac/browser/trusted_computing | ||
}} | }} | ||
=Einleitung= | =Einleitung= | ||
Trusted Computing ist ein sehr bekannter Begriff in der IT Welt. Immer mehr wird das TPM ("Trusted | Trusted Computing ist ein sehr bekannter Begriff in der IT Welt. Immer mehr wird das TPM ("Trusted Platform Module") 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 | 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. | In diesem Tutorial wird der Aufbau und die Eigenschaften, sowie Komplettverschlüsselung mithilfe des TPM erläutert. | ||
Zeile 23: | Zeile 23: | ||
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... | 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. | 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 | 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. | 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. | 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) | Die erste Lösung ist Cryptsetup (Opensource). Dieses Programm ist fast schon Standard in jeder Distribution und gilt als sicher. | ||
In | In diesem 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. | 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 | 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. | 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= | =Bekannte Sicherheitsprobleme= | ||
'''Intel | '''Intel Advanced Management Technology: | ||
''' | ''' | ||
Nach der Hackerin Joana Rutkowska lässt sich ein Rootkit über DMA in den Intel AMT | Nach der Hackerin Joana Rutkowska lässt sich ein Rootkit über [http://de.wikipedia.org/wiki/Direct_Memory_Access DMA] in den Intel [http://de.wikipedia.org/wiki/Intel_vPro 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. | 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. | Allerdings ist ein erfolgreicher Angriff nur bei dem Q35 Chipsatz bekannt. | ||
Zeile 47: | Zeile 48: | ||
''' | ''' | ||
Es ist möglich mittels Hardware Keylogger die nötigen Schlüssel zum entschlüsseln des System zu bekommen | 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 versiegelt den Laptop irreversibel. | ||
Cold Boot Attacks haben nur auf die Root Partition Effekt, da ihr Schlüssel ständig sich im Speicher befindet. (Siehe Partitionschemata und Grsecurity) Eine extra Datenpartition schafft abhilfe, wenn man noch zusätzlich [http://www.grsecurity.net/download_stable.php grsecurity] nutzt. Dort | |||
Cold Boot Attacks haben nur auf die Root Partition | kann man die Einstellung 'Sanitize all free memory' aktivieren um Schlüssel (sowie Speicher) die nicht mehr gebraucht werden zu überschreiben. | ||
kann man die Einstellung ' | 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). | ||
Nebenbei Cold Boot Attacks sind nur dann effektiv wenn man relativ schnell an das | |||
'''SHA-1 Collision Attack | |||
''' | |||
Wie seit der Eurocrypt 2009 bekannt geworden ist, lassen sich Kollisionen in dem Hashalgorithmus SHA-1 schon bei 2^52 Operationen finden. Der TPM nutzt den SHA-1 Algorithmus nicht nur zur Verschlüsselung sondern auch zum Sealing. | |||
Damit ist das Sealing des TPM theoretisch knackbar, abhilfe würde hier eine implementierte SHA-256 oder SHA-512 FUnktion schaffen. Hoffentlich ist dies in der nächsten TCG Spezifikation vorhanden. | |||
'''Memory Image Attack | |||
''' | |||
Man kann mittels Firewire Schnittstelle und entsprechenden geladenen Kerneltreiber, Speicherabbilder erzeugen. Um dies ganz einfach zu verhindern, baut ihr euren Firewiretreiber als Modul und lädt ihn nur wenn nötig. Es ist auch möglich nach dem Neustart, vorhandenen Speicher mit USB-stick und Software auszulesen. Um dies zu preventieren wünscht man sich [http://www.coreboot.org/Welcome_to_coreboot coreboot] mit TPM funktionen oder einfach genug Zeit. | |||
'''Reverse Engeneering des TPM: | '''Reverse Engeneering des TPM: | ||
Zeile 57: | Zeile 68: | ||
Vor kurzen ist es einem Hardware Hacker gelungen, den EK der SmartCard TPM auszulesen. [http://www.wired.com/video/hack-a-sattv-smart-card/1813637610 Video] | Vor kurzen ist es einem Hardware Hacker gelungen, den EK der SmartCard TPM auszulesen. [http://www.wired.com/video/hack-a-sattv-smart-card/1813637610 Video] | ||
Da in unserem | 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. | Des weiteren ist der Angriff nicht Praxis relevant, vorher könnte man das ESD vernichten. | ||
Zeile 69: | Zeile 80: | ||
''' | ''' | ||
Es ist bekannt das in Intel | Es ist bekannt das in Intel BIOS Möglichkeiten für 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. | 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. | 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 | 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. | Mit neurer Technology 'Intel TXT' soll dieses Problem gelöst werden. | ||
Zeile 78: | Zeile 89: | ||
''' | ''' | ||
Eine wirklicher Angriff ist es nicht, jedoch kann man Code, z.B. über SD-Karten Lesegeräte die intern verbaut sind, ausführen. | |||
Code auszuführen wenn evtl. | 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, | '''DMA, Netzwerkkarte, 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 | 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 stehe, 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. | 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 | Das Risiko ist da, aber in wie weit vertraut man TPM und allgemein Hardware? Meiner Meinung: ÜBERHAUPT NICHT!!! | ||
=Das Trusted Platform | =Vorteile und Nachteile von FDE mit TPM gegenüber normaler FDE= | ||
1. Ihr werdet nicht gefoltert wenn ihr die ESD oder eure Hardware zerstört | |||
2. Für Rootkits oder Keylogger wird es fast oder gar unmöglich schon beim Bootvorgang geladen zu werden. | |||
3. PKI-Struktur und somit nettes Schlüsselmanagement. Verwendung von asymmetrischen und symmetrischen Algorithmen. | |||
4. Nette Möglichkeiten für FIrmen, interne Hardware auf Sicherheit zu prüfen, Remote Attestination oder DAA. | |||
=Das Trusted Platform Module= | |||
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. | 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. | 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= | =Das TPM auf Hardware Ebene= | ||
Zeile 102: | Zeile 123: | ||
=TPM Architektur= | =TPM Architektur= | ||
Das TPM besteht aus einem | Das TPM besteht aus einem Low Pin Count Datenbus, 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. | Dies gilt aber leider nicht für alle Komponenten. | ||
Zeile 109: | Zeile 130: | ||
==I/O Bus== | ==I/O Bus== | ||
Protokoll | Protokoll De- und Enkodierung für interne und externe Bussysteme. | ||
==Crypto Coprocessor== | ==Crypto Coprocessor== | ||
Zeile 141: | Zeile 162: | ||
Der TPM nutzt keine symmetrische Verschlüsselung für Nachrichtenverschlüsselung! | Der TPM nutzt keine symmetrische Verschlüsselung für Nachrichtenverschlüsselung! | ||
=Secure Boot Scheme= | =Vergleich zwischen FDE Software= | ||
{| {{Prettytable}} | |||
! Features !! Cryptsetup !! Bitlocker !! Keyrona !! File Vault !! Truecrypt | |||
|- | |||
|Version || 1.1.0.0 || ? || 1.x || ? || 6.3a | |||
|- | |||
|Preis|| Opensource || Closed Source || Opensource || Closed Source || Opensource | |||
|- | |||
|Betriebssystem || Linux || >=Windows Vista || Linux || Mac OSX || Windows 2000 - 7, Linux | |||
|- | |||
|Algorithmen || Alle* || AES-128,256 || Alle* || AES-128,256 || AES, Twofish, Serpent | |||
|- | |||
|Mode of Operation || Alle* || CBC + Elephant Diffuser || Alle* || CBC || XTS | |||
|- | |||
|Hash || Alle* || SHA-256 || Alle* || 3DES-EDE (wrapping) || RIPEMD-160, Whirlpool, SHA-512 | |||
|- | |||
|Cascading || No || No || Yes || No || Yes | |||
|- | |||
|Recovery Key || No, only Keyslots || Yes || Yes, Storage Key || 1024Bit RSA Key || ? | |||
|- | |||
|Header Key Derivation || PBKDF2 || PBKDF2 || PBKDF2 || PBKDF2 || PBKDF2 | |||
|- | |||
|RNG || /dev/urandom || ? || TPM RNG || /dev/random || /dev/random, keyboard, mouse ... | |||
|- | |||
|Multi Factor Auth. || No || Yes || Yes || No || No | |||
|- | |||
|Token support(keyfile) || Yes || Yes || Yes || ? ||Yes | |||
|- | |||
|Secure Hibernate || Yes || Yes || Yes || No || Yes | |||
|- | |||
|Secure Swaping || Yes || Yes || Yes || Yes || Yes | |||
|- | |||
|TPM support || No || Yes || Yes || No || No | |||
|- | |||
|Subject Management || Yes || Yes || Yes || Yes || Yes | |||
|- | |||
|Group Management || No || ? || Yes || No || No | |||
|- | |||
|Platform Management || No || ? || Yes || No || No | |||
|} | |||
Alle* = Im Linux Kernel enthaltene Algorithmen und das sind wirklich ne ganze Menge. | |||
=Trusted Boot Scheme= | |||
==Sealing== | ==Sealing== | ||
Zeile 147: | Zeile 212: | ||
==Unsealing== | ==Unsealing== | ||
[[Datei:Tpm_encrypt_scheme.png|400px]] | [[Datei:Tpm_encrypt_scheme.png|400px]] | ||
=Keyrona= | |||
Der aktuelle Status zu Keyrona lässt sich seit neustem im Labor SVN [https://www.das-labor.org/trac/browser/trusted_computing] downloaden. Dort liegt eine TODO dabei worin der momentane Bearbeitungsstatus beschrieben ist. | |||
Ich habe mitlerweile so gut wie alle wichtigen TPM Funktionen implementiert und somit auch das Key Management umgeworfen. Ich denke das ich einigen Monaten die Stabile Version 2.0 veröffentlichen kann. | |||
TODO_V2.0 | |||
+ Real Enterprise and Personal Mode -- Not Done | |||
+ New Key Management (Wallet Mode) -- working in progress | |||
+ Improve old Key Management -- Done | |||
+ Add TPM Migration feature -- Not Done | |||
+ Add TPM DAA feature -- Not Done | |||
+ Add TPM Binding and Unbinding -- Done | |||
+ Add TPM Sealing and Unsealing with PCR's -- Done | |||
+ Add TPM Key Management -- Done | |||
+ Bug fixes and other Improvements -- Not Done | |||
+ Improve All Managements -- working in progress | |||
+ Add ESD Management -- working in progress | |||
+ Add Migration Management -- Not Done | |||
+ Add DAA Management -- Not Done | |||
+ Add Security fixes -- working in progress | |||
=Aufsetzen eines TPM und cryptsetup geschützten Systems= | =Aufsetzen eines TPM und cryptsetup geschützten Systems= | ||
==Verschlüsselungsalgorithmus, Mode of Operation und Hash== | |||
==Partitionschemata und Grsecurity== | |||
Allgemein empfiehlt sich Full Disc Encryption des eigenen System volgendes Partitionschemata. | |||
'''Beispiel /dev/sda:''' | |||
/dev/sda1 /boot 100MB ext2 | |||
/dev/sda2 swap 2GB swap | |||
/dev/sda3 / 60GB ex4 | |||
/dev/sda4 /home oder *Datenpartition | |||
==Voraussetzungen== | Ihr könnt natürlich auch LVM verwenden. Die /boot Partition wird für den Kernel, Trusted Grub etc benötigt. Die swap Partition könnt ihr eigentlich weglassen wenn | ||
ihr mehr als 3GB Arbeitsspeicher habt. Die /home oder Datenpartition bietet sich an nur mit Cryptsetup oder Keyrona zu verschlüsseln. Zudem sollte man das Security Framework Grsecurity verwenden welches sich im Kernel mit kompillieren lässt. Es bietet mit PaX welches im Patch enthalten ist, die Option CONFIG_PAX_MEMORY_SANITIZE an. Dies ermöglicht es, dass der Kernel so schnel wie möglich nicht mehr benötigte Speichertabellen löscht, z.B. cryptsetup blob der Datenpartition. | |||
==Seal- and Unsealing== | |||
In diesem Teil wird die Einrichtung des versiegelten Systems beschrieben. | |||
'''!!! Vorsicht beiḿ aufsetzen des versiegelten Systems, man kann sich sehr leicht aussperren!!!''' | |||
===Voraussetzungen=== | |||
1. Ein TPM der im BIOS aktiviert ist. | 1. Ein TPM der im BIOS aktiviert ist. | ||
Zeile 160: | Zeile 270: | ||
3. Ein bereits vorhandenes Betriebssystem (besser ist das) oder eine live CD. | 3. Ein bereits vorhandenes Betriebssystem (besser ist das) oder eine live CD. | ||
==Installation von Programmen und Kernelkonfiguration== | ===Installation von Programmen und Kernelkonfiguration=== | ||
Die Installation von Cryptsetup ist durch einen Paketmanager oder per Source Code installation durchzuführen. | Die Installation von Cryptsetup ist durch einen Paketmanager oder per Source Code installation durchzuführen. | ||
Zeile 171: | Zeile 281: | ||
Die Installtion von Keyrona kann einfach durch fertige Pakete oder per Source Code geschehen. | 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. | 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. | Keyrona siegelt momentan nur Zufallsdaten an den cryptsetup blob. Dazu später weiteres. | ||
[https://projects.sirrix.com/trac/TPM-KM/wiki/Download Download Quelle] | [https://projects.sirrix.com/trac/TPM-KM/wiki/Download Download Quelle] | ||
Danach muss die TPM | 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 | 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. | ||
den SRK | Dann muss man auch noch den SRK auf das "WELL_KNOWN_SECRET" setzen. | ||
Trousers: | Trousers: | ||
Zeile 186: | Zeile 296: | ||
apt-get install tpm-tools | apt-get install tpm-tools | ||
TPM-Manager: | |||
[https://projects.sirrix.com/trac/tpmmanager/wiki/Download Download Quelle] | [https://projects.sirrix.com/trac/tpmmanager/wiki/Download Download Quelle] | ||
Downloaden und *.deb installieren. | Downloaden und *.deb installieren. | ||
Der Kernel muss wie folgt konfiguriert und neu kompilliert werden: | Der Kernel muss, wie folgt konfiguriert und neu kompilliert werden: | ||
Device Drivers -> | Device Drivers -> | ||
Zeile 196: | Zeile 306: | ||
<*> TPM Hardware Support -> | <*> TPM Hardware Support -> | ||
<*> TPM Interface Spezifikation 1.2 | <*> TPM Interface Spezifikation 1.2 | ||
< | <*> "name" TPM Interface | ||
Am besten alle Treiber "name" als Modul aktivieren, weil man evtl. | 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. | Für Cryptsetup müssen noch der Cryptoloop support, Kryptographische Algorithmen usw. im Kernel aktiviert werden. | ||
Danach macht man ein reboot | Danach macht man ein reboot, startet folgende Programme und lädt das Modul: | ||
modprobe tpm_name | modprobe tpm_name | ||
Zeile 207: | Zeile 317: | ||
Dort nimmt man den TPM in Besitz indem man ein Password vergibt "Take Ownership" | 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. | 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. | Nun ist alles eingerichtet um mit dem TPM und Keyrona io Operationen durchzuführen. | ||
==Verschlüsseln der Festplatte und kopieren der Daten== | ===Verschlüsseln der Festplatte und kopieren der Daten=== | ||
Als erstes | Als erstes starten wir den Service: | ||
keyrona_keyproviderd -p | keyrona_keyproviderd -p | ||
Nun ändern wir noch schnell die | Nun ändern wir noch schnell die Script Einträge für die cryptsetup Verschlüsselung in: | ||
/etc/keyrona/scripts/create_cryptsetup_luks.sh | /etc/keyrona/scripts/create_cryptsetup_luks.sh | ||
Zeile 245: | Zeile 355: | ||
Andere Partitionen wie /boot /home etc. auf die neue Festplatte clonen. | Andere Partitionen wie /boot /home etc. auf die neue Festplatte clonen. | ||
==Initramfs erzeugen und Trusted Grub installieren== | Danach noch /etc/keyrona/* auf das ESD kopieren, ausführen: | ||
mount -t proc proc /pfad/to/mount/proc | |||
mount -o bind /dev /pfad/to/mount/dev | |||
chroot /pfad/to/mount | |||
um im neuen System weiter arbeiten zu können. | |||
===Initramfs erzeugen und Trusted Grub installieren=== | |||
Die Initramfs muss alle nötigen Programme, Blibliotheken und Konfigurationsdateien enthalten, um das Unsealing durzuführen. | |||
Diese könnt ihr euch runterladen: [[Datei:Initramfs.tar.gz|Initramfs.tar.gz]] . Demnächst gibt es ein skript dazu welches die Initramfs direkt von eurem System zusammenstellt. | |||
====Struktur der Initramfs==== | |||
'''1. keymap_check | |||
''' | |||
Checkt ob im /boot/grub/menu.lst eine keymap=name angegeben ist sonst wählt es das standard keyboard layout. | |||
'''2. lvm_check | |||
''' | |||
Checkt ob lvm genutzt wird un erstellt die passenden einträge. | |||
'''3. cryptsetup_check | |||
''' | |||
Checkt ob das crypt_root Volume einen Cryptsetup header hat oder nicht, sonst Error. | |||
'''4. tpm_initialize | |||
''' | |||
Initialisiert den Trousers daemon. | |||
'''5. keyrona_login | |||
''' | |||
Erfragt nach Logindaten und Binding oder Sealing. | |||
'''6. keyrona_mount_esd | |||
''' | |||
Mountet das External Storage Deviceunter /etc/keyrona | |||
'''7. verify | |||
''' | |||
Verifiziert die Integrität vor Passwort Eingabe. Momentan nicht implementiert! | |||
'''8. keyrona_initialize | |||
''' | |||
Initialisiert keyrona_keyproviderd. | |||
'''9. keyrona_mount | |||
''' | |||
Mountet das crypt_volume nach Passwort Eingabe. | |||
'''10. cleaning_up | |||
''' | |||
Macht ein killall -9 auf keyrona und trousers und unmountet /etc/keyrona | |||
====Erzeugen der Initramfs==== | |||
Eine Initramfs könnt ihr einfach je nach Kompressionsmehtode packen: | |||
cd initramfs | |||
find . -print0 | cpio -ov -0 --format=newc | gzip -9 > /boot/keyrona.cpio.gz | |||
Dies ist die standard pack Methode wenn ihr was anderes als gzip nutzt, einfach gzip ersetzen. | |||
====Trusted Grub==== | |||
Der Trusted Grub ist ein Bootloader der so modifiziert wurde, den Grub, MBR und weitere Softwareteile wie z.B. Initramfs, menu.lst, kernel mithilfe des TPM zu hashen. | |||
Installieren könnt ihr ihn, indem ihr in bei [http://sourceforge.net/projects/trustedgrub/ sourceforge] downloaded. | |||
Weitere Installationsanweisungen entnehmt ihr bitte der README und INSTALL. | |||
===Abschluss=== | |||
Nachdem wir ein verschlüsseltes Volume mit Keyrona erzeugt , die Daten von unserem Altsystem rüberkopiert , die Initramfs auf das neue System mit passenden Grub Eintrag versehen sowie Trusted Grub installiert haben. Können wir nun versuchen das neue System zu starten, um dann mit dem eigentlichen Sealing anzufangen. Denn die PCR werte ändern sich die ganze zeit und wir müssen uns erst einmal in das neue System einloggen. | |||
Wenn dies erfolgreich gelungen ist, fangen wir mit dem Sealing an dies geht wie folgt: | |||
keyrona_manager -p cp | |||
keyrona_manager -v assstv | |||
keyrona_manager -v dsfv | |||
cp -ar /etc/keyrona/* /pfad/to/ESD | |||
Nun hätten wir theoretisch unsere Platform and die Cryptsetup Passphrase gebunden und diesen blob mit EK und RSA verschlüsselt. | |||
Jedoch unterstützt Keyrona nicht Sealing, es siegelt nur NULL and den cryptsetup blob. | |||
Ich bin dabei einen Patch zu schreiben um wirkliches Siegeln nutzen zu können, momentan ist dies nur in der Variante Binding mit Keyfile möglich. | |||
=Folien zum Vortrag= | |||
Hier sind die Folien zum Vortrag [[Datei:Tpm.pdf]] | |||
[[Kategorie:Kryptographie]] | [[Kategorie:Kryptographie]] |
Aktuelle Version vom 16. Oktober 2010, 23:17 Uhr
FDE with tpm support Release status: obsolete [box doku] | |
---|---|
Description | Tutorial zu FDE with TPM support |
Author(s) | Philipp |
Last Version | 1.5 () |
Platform | Linux |
Download | https://www.das-labor.org/trac/browser/trusted_computing |
Einleitung[Bearbeiten | Quelltext bearbeiten]
Trusted Computing ist ein sehr bekannter Begriff in der IT Welt. Immer mehr wird das TPM ("Trusted Platform Module") 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 ?[Bearbeiten | Quelltext bearbeiten]
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 Distribution und gilt als sicher. In diesem 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[Bearbeiten | Quelltext bearbeiten]
Intel Advanced 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 versiegelt den Laptop irreversibel. Cold Boot Attacks haben nur auf die Root Partition Effekt, da ihr Schlüssel ständig sich im Speicher befindet. (Siehe Partitionschemata und Grsecurity) Eine extra Datenpartition schafft abhilfe, wenn man noch zusätzlich grsecurity nutzt. Dort kann man die Einstellung 'Sanitize 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).
SHA-1 Collision Attack
Wie seit der Eurocrypt 2009 bekannt geworden ist, lassen sich Kollisionen in dem Hashalgorithmus SHA-1 schon bei 2^52 Operationen finden. Der TPM nutzt den SHA-1 Algorithmus nicht nur zur Verschlüsselung sondern auch zum Sealing. Damit ist das Sealing des TPM theoretisch knackbar, abhilfe würde hier eine implementierte SHA-256 oder SHA-512 FUnktion schaffen. Hoffentlich ist dies in der nächsten TCG Spezifikation vorhanden.
Memory Image Attack
Man kann mittels Firewire Schnittstelle und entsprechenden geladenen Kerneltreiber, Speicherabbilder erzeugen. Um dies ganz einfach zu verhindern, baut ihr euren Firewiretreiber als Modul und lädt ihn nur wenn nötig. Es ist auch möglich nach dem Neustart, vorhandenen Speicher mit USB-stick und Software auszulesen. Um dies zu preventieren wünscht man sich coreboot mit TPM funktionen oder einfach genug Zeit.
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 Möglichkeiten für 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, Netzwerkkarte, 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 stehe, 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!!!
Vorteile und Nachteile von FDE mit TPM gegenüber normaler FDE[Bearbeiten | Quelltext bearbeiten]
1. Ihr werdet nicht gefoltert wenn ihr die ESD oder eure Hardware zerstört
2. Für Rootkits oder Keylogger wird es fast oder gar unmöglich schon beim Bootvorgang geladen zu werden.
3. PKI-Struktur und somit nettes Schlüsselmanagement. Verwendung von asymmetrischen und symmetrischen Algorithmen.
4. Nette Möglichkeiten für FIrmen, interne Hardware auf Sicherheit zu prüfen, Remote Attestination oder DAA.
Das Trusted Platform Module[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
Das TPM besteht aus einem Low Pin Count Datenbus, 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[Bearbeiten | Quelltext bearbeiten]
Protokoll De- und Enkodierung für interne und externe Bussysteme.
Crypto Coprocessor[Bearbeiten | Quelltext bearbeiten]
Ist zur Verschlüsselung und Signierung da.
Asymmetrische Kryptographie:
- Schlüssel Generierung.
- Ver- und Entschlüsselung
- Hashen
RSA Engine[Bearbeiten | Quelltext bearbeiten]
RSA wird zum Verschlüsseln und Signieren genutzt.
Signatur Operations[Bearbeiten | Quelltext bearbeiten]
Macht interne und externe Signierung.
Symmetric Engine[Bearbeiten | Quelltext bearbeiten]
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!
Vergleich zwischen FDE Software[Bearbeiten | Quelltext bearbeiten]
Features | Cryptsetup | Bitlocker | Keyrona | File Vault | Truecrypt |
---|---|---|---|---|---|
Version | 1.1.0.0 | ? | 1.x | ? | 6.3a |
Preis | Opensource | Closed Source | Opensource | Closed Source | Opensource |
Betriebssystem | Linux | >=Windows Vista | Linux | Mac OSX | Windows 2000 - 7, Linux |
Algorithmen | Alle* | AES-128,256 | Alle* | AES-128,256 | AES, Twofish, Serpent |
Mode of Operation | Alle* | CBC + Elephant Diffuser | Alle* | CBC | XTS |
Hash | Alle* | SHA-256 | Alle* | 3DES-EDE (wrapping) | RIPEMD-160, Whirlpool, SHA-512 |
Cascading | No | No | Yes | No | Yes |
Recovery Key | No, only Keyslots | Yes | Yes, Storage Key | 1024Bit RSA Key | ? |
Header Key Derivation | PBKDF2 | PBKDF2 | PBKDF2 | PBKDF2 | PBKDF2 |
RNG | /dev/urandom | ? | TPM RNG | /dev/random | /dev/random, keyboard, mouse ... |
Multi Factor Auth. | No | Yes | Yes | No | No |
Token support(keyfile) | Yes | Yes | Yes | ? | Yes |
Secure Hibernate | Yes | Yes | Yes | No | Yes |
Secure Swaping | Yes | Yes | Yes | Yes | Yes |
TPM support | No | Yes | Yes | No | No |
Subject Management | Yes | Yes | Yes | Yes | Yes |
Group Management | No | ? | Yes | No | No |
Platform Management | No | ? | Yes | No | No |
Alle* = Im Linux Kernel enthaltene Algorithmen und das sind wirklich ne ganze Menge.
Trusted Boot Scheme[Bearbeiten | Quelltext bearbeiten]
Sealing[Bearbeiten | Quelltext bearbeiten]
Unsealing[Bearbeiten | Quelltext bearbeiten]
Keyrona[Bearbeiten | Quelltext bearbeiten]
Der aktuelle Status zu Keyrona lässt sich seit neustem im Labor SVN [1] downloaden. Dort liegt eine TODO dabei worin der momentane Bearbeitungsstatus beschrieben ist. Ich habe mitlerweile so gut wie alle wichtigen TPM Funktionen implementiert und somit auch das Key Management umgeworfen. Ich denke das ich einigen Monaten die Stabile Version 2.0 veröffentlichen kann.
TODO_V2.0
+ Real Enterprise and Personal Mode -- Not Done + New Key Management (Wallet Mode) -- working in progress + Improve old Key Management -- Done + Add TPM Migration feature -- Not Done + Add TPM DAA feature -- Not Done + Add TPM Binding and Unbinding -- Done + Add TPM Sealing and Unsealing with PCR's -- Done + Add TPM Key Management -- Done + Bug fixes and other Improvements -- Not Done + Improve All Managements -- working in progress + Add ESD Management -- working in progress + Add Migration Management -- Not Done + Add DAA Management -- Not Done + Add Security fixes -- working in progress
Aufsetzen eines TPM und cryptsetup geschützten Systems[Bearbeiten | Quelltext bearbeiten]
Verschlüsselungsalgorithmus, Mode of Operation und Hash[Bearbeiten | Quelltext bearbeiten]
Partitionschemata und Grsecurity[Bearbeiten | Quelltext bearbeiten]
Allgemein empfiehlt sich Full Disc Encryption des eigenen System volgendes Partitionschemata.
Beispiel /dev/sda:
/dev/sda1 /boot 100MB ext2
/dev/sda2 swap 2GB swap
/dev/sda3 / 60GB ex4
/dev/sda4 /home oder *Datenpartition
Ihr könnt natürlich auch LVM verwenden. Die /boot Partition wird für den Kernel, Trusted Grub etc benötigt. Die swap Partition könnt ihr eigentlich weglassen wenn ihr mehr als 3GB Arbeitsspeicher habt. Die /home oder Datenpartition bietet sich an nur mit Cryptsetup oder Keyrona zu verschlüsseln. Zudem sollte man das Security Framework Grsecurity verwenden welches sich im Kernel mit kompillieren lässt. Es bietet mit PaX welches im Patch enthalten ist, die Option CONFIG_PAX_MEMORY_SANITIZE an. Dies ermöglicht es, dass der Kernel so schnel wie möglich nicht mehr benötigte Speichertabellen löscht, z.B. cryptsetup blob der Datenpartition.
Seal- and Unsealing[Bearbeiten | Quelltext bearbeiten]
In diesem Teil wird die Einrichtung des versiegelten Systems beschrieben.
!!! Vorsicht beiḿ aufsetzen des versiegelten Systems, man kann sich sehr leicht aussperren!!!
Voraussetzungen[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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 <*> "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[Bearbeiten | Quelltext bearbeiten]
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.
Danach noch /etc/keyrona/* auf das ESD kopieren, ausführen:
mount -t proc proc /pfad/to/mount/proc mount -o bind /dev /pfad/to/mount/dev chroot /pfad/to/mount
um im neuen System weiter arbeiten zu können.
Initramfs erzeugen und Trusted Grub installieren[Bearbeiten | Quelltext bearbeiten]
Die Initramfs muss alle nötigen Programme, Blibliotheken und Konfigurationsdateien enthalten, um das Unsealing durzuführen. Diese könnt ihr euch runterladen: Datei:Initramfs.tar.gz . Demnächst gibt es ein skript dazu welches die Initramfs direkt von eurem System zusammenstellt.
Struktur der Initramfs[Bearbeiten | Quelltext bearbeiten]
1. keymap_check
Checkt ob im /boot/grub/menu.lst eine keymap=name angegeben ist sonst wählt es das standard keyboard layout.
2. lvm_check
Checkt ob lvm genutzt wird un erstellt die passenden einträge.
3. cryptsetup_check
Checkt ob das crypt_root Volume einen Cryptsetup header hat oder nicht, sonst Error.
4. tpm_initialize
Initialisiert den Trousers daemon.
5. keyrona_login
Erfragt nach Logindaten und Binding oder Sealing.
6. keyrona_mount_esd
Mountet das External Storage Deviceunter /etc/keyrona
7. verify
Verifiziert die Integrität vor Passwort Eingabe. Momentan nicht implementiert!
8. keyrona_initialize
Initialisiert keyrona_keyproviderd.
9. keyrona_mount
Mountet das crypt_volume nach Passwort Eingabe.
10. cleaning_up
Macht ein killall -9 auf keyrona und trousers und unmountet /etc/keyrona
Erzeugen der Initramfs[Bearbeiten | Quelltext bearbeiten]
Eine Initramfs könnt ihr einfach je nach Kompressionsmehtode packen:
cd initramfs find . -print0 | cpio -ov -0 --format=newc | gzip -9 > /boot/keyrona.cpio.gz
Dies ist die standard pack Methode wenn ihr was anderes als gzip nutzt, einfach gzip ersetzen.
Trusted Grub[Bearbeiten | Quelltext bearbeiten]
Der Trusted Grub ist ein Bootloader der so modifiziert wurde, den Grub, MBR und weitere Softwareteile wie z.B. Initramfs, menu.lst, kernel mithilfe des TPM zu hashen. Installieren könnt ihr ihn, indem ihr in bei sourceforge downloaded. Weitere Installationsanweisungen entnehmt ihr bitte der README und INSTALL.
Abschluss[Bearbeiten | Quelltext bearbeiten]
Nachdem wir ein verschlüsseltes Volume mit Keyrona erzeugt , die Daten von unserem Altsystem rüberkopiert , die Initramfs auf das neue System mit passenden Grub Eintrag versehen sowie Trusted Grub installiert haben. Können wir nun versuchen das neue System zu starten, um dann mit dem eigentlichen Sealing anzufangen. Denn die PCR werte ändern sich die ganze zeit und wir müssen uns erst einmal in das neue System einloggen.
Wenn dies erfolgreich gelungen ist, fangen wir mit dem Sealing an dies geht wie folgt:
keyrona_manager -p cp keyrona_manager -v assstv keyrona_manager -v dsfv cp -ar /etc/keyrona/* /pfad/to/ESD
Nun hätten wir theoretisch unsere Platform and die Cryptsetup Passphrase gebunden und diesen blob mit EK und RSA verschlüsselt. Jedoch unterstützt Keyrona nicht Sealing, es siegelt nur NULL and den cryptsetup blob. Ich bin dabei einen Patch zu schreiben um wirkliches Siegeln nutzen zu können, momentan ist dies nur in der Variante Binding mit Keyfile möglich.
Folien zum Vortrag[Bearbeiten | Quelltext bearbeiten]
Hier sind die Folien zum Vortrag Datei:Tpm.pdf