TpmCrypt: Unterschied zwischen den Versionen
Zaolin (Diskussion | Beiträge) |
Keine Bearbeitungszusammenfassung |
||
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{ProjektInfoBox | {{ProjektInfoBox | ||
|name | |name=TpmCrypt | ||
|status | |status=experimental | ||
|image | |image=Logo tpm.png | ||
|description = Tutorial zu TpmCrypt | |description=Tutorial zu TpmCrypt | ||
| | |username=Philipp | ||
| | |author=Philipp | ||
|version | |version=0.1_rc1 | ||
|platform=Linux | |||
|platform | |download=https://www.tpmcrypt.org | ||
|tags=Sicherheit und Kryptologie, TPM, | |||
|download | |||
}} | }} | ||
=Einleitung= | =Einleitung= | ||
Zeile 110: | Zeile 108: | ||
=Das Trusted Platform Module= | =Das Trusted Platform Module= | ||
'''Wir unterstützen nur TPM v1.2 ! | |||
''' | |||
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. | 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. | ||
'''Nach neuen Informationen soll der TPM v2.0 demnächst veröffentlicht werden. Leider enthält dieser sehr viele Veränderungen die auf gewolltes DRM schließen lassen. | |||
''' | |||
=Das TPM auf Hardware Ebene= | =Das TPM auf Hardware Ebene= | ||
Zeile 231: | Zeile 235: | ||
{| {{Prettytable}} | {| {{Prettytable}} | ||
! | ! Algo !! AES !! Serpent !! Twofish !! MARS !! CAST-256 | ||
|- | |- | ||
|Block Size || 128 || 128 || 128 || 128b || 128 | |Block Size || 128 || 128 || 128 || 128b || 128 | ||
Zeile 272: | Zeile 276: | ||
{| {{Prettytable}} | {| {{Prettytable}} | ||
! | ! Modi !! CBC-ESSIV !! LRW !! XTS !! EME | ||
|- | |- | ||
|Primitive || CBC || ECB || ECB || ? | |Primitive || CBC || ECB || ECB || ? | ||
Zeile 280: | Zeile 284: | ||
|Key Whitening || No || Yes || Yes || ? | |Key Whitening || No || Yes || Yes || ? | ||
|- | |- | ||
|GF | |GF Multi. || No || Yes || Yes || ? | ||
|- | |- | ||
|Chaining || Yes || No || No | |Chaining || Yes || No || No | ||
Zeile 297: | Zeile 301: | ||
{| {{Prettytable}} | {| {{Prettytable}} | ||
! | ! Hash !! SHA-2 !! Whirlpool !! RipeMD | ||
|- | |- | ||
|Structure || [http://en.wikipedia.org/wiki/Merkle%E2%80%93Damg%C3%A5rd_construction Merkle–Damgård] || [http://en.wikipedia.org/wiki/Miyaguchi-Preneel Miyaguchi-Preneel] || ? | |Structure || [http://en.wikipedia.org/wiki/Merkle%E2%80%93Damg%C3%A5rd_construction Merkle–Damgård] || [http://en.wikipedia.org/wiki/Miyaguchi-Preneel Miyaguchi-Preneel] || ? | ||
Zeile 310: | Zeile 314: | ||
==LVM-Crypto-LVM== | ==LVM-Crypto-LVM== | ||
Allgemein empfiehlt sich | Allgemein empfiehlt sich LVM für die Systemverschlüsselung. Folgendes Schemata hat viele Vorteile und lässt sich leicht nutzen: | ||
{| {{Prettytable}} | {| {{Prettytable}} | ||
Zeile 338: | Zeile 342: | ||
|} | |} | ||
Wie aus dieser Tabelle ersichtlich ist benötigt man 2 Partitionen, 2 LVM Volume Groups, 1 Cryptsetup Volume und 4 LVM Logical Volumes. Dadurch ist es zum einen möglich, die gesammten Volumes mit PVmove zu verschieben und zum anderen liegen alle | Wie aus dieser Tabelle ersichtlich ist benötigt man 2 Partitionen, 2 LVM Volume Groups, 1 Cryptsetup Volume und 4 LVM Logical Volumes. Dadurch ist es zum einen möglich, die gesammten Volumes mit PVmove zu verschieben und zum anderen liegen alle sicherheitskritischen Volumes in den verschlüsselten RAW Daten. | ||
==Initramfs== | ==Initramfs== | ||
Zeile 536: | Zeile 540: | ||
=Folien zum Vortrag= | =Folien zum Vortrag= | ||
Hier | Hier gibt es Folien zum Vortrag: | ||
[https://www.das-labor.org/wiki/Datei:Tpm.pdf Vortrag_1] | |||
[[Kategorie:Kryptographie]] | [[Kategorie:Kryptographie]] |
Aktuelle Version vom 7. April 2017, 23:52 Uhr
TpmCrypt Release status: experimental [box doku] | |
---|---|
Description | Tutorial zu TpmCrypt |
Author(s) | Philipp |
Last Version | 0.1_rc1 () |
Platform | Linux |
Download | https://www.tpmcrypt.org |
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.
Um dieses Ziel zu erreichen nutzen wir "TpmCrypt" welches extra für diesen Zweck entwickelt worden ist.
Bekannte Sicherheitsprobleme[Bearbeiten | Quelltext bearbeiten]
Intel Southbridge
Die Soutbridge firmware ist zum Teil von Intel signiert und bietet jede Menge Angriffsmöglichkeiten. Sie wird momentan für Intel AMT, TXT und IPT genutzt. Möglichkeiten für Digital Rights Management sind auch enthalten.
Embedded Controller
Ralf-Philipp Weihmann zeigte auf dem 27c3 das es möglich ist, über das Betriebssystem unsignierte Firmware auf die Embedded Controller von "Thinkpad's" zu flashen. Um dies zu entdecken wird demnächst der Trusted Grub gepatcht. Damit erreicht man, dass die Firmware der EC in die PCR mit eingehen.
Evil Maid Attack:
Die Evil Maid Attack von Joanna Rutkowska nutzt die Schwachstelle aus, dass jede unsealing Operation mit einer Passworteingabe statt findet. Somit kommt man vorher an das Passwort ohne das man weiss, dass der Rechner schon vorher kompromitiert wurde. Um dies zu umgehen, wurden Authentication Secrets in TpmCrypt eingebaut.
Intel Advanced Management Technology:
Nach der Hackerin Joanna 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!
Unsignierte Firmware und Exploits auf Hardware mit persistenten Speicher:
Diese Angriffe sind möglich jedoch schwer zu bewältigen. Die Hardware unterscheidet sich von Hersteller zu Hersteller.
Das Trusted Platform Module[Bearbeiten | Quelltext bearbeiten]
Wir unterstützen nur TPM v1.2 !
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.
Nach neuen Informationen soll der TPM v2.0 demnächst veröffentlicht werden. Leider enthält dieser sehr viele Veränderungen die auf gewolltes DRM schließen lassen.
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 mit TPM Unterstützung Software[Bearbeiten | Quelltext bearbeiten]
Features | eCrypFS | Bitlocker | TpmCrypt | SecureDoc |
---|---|---|---|---|
Version | 86 | ? | 0.1_rc1 | ? |
Preis | Opensource | Closed Source | Opensource | Closed Source |
Betriebssystem | Linux | >=Windows Vista | Linux | Linux, Windows, Mac OSX |
Type of Encryption | Filesystem | Block | Alle* | Block |
Algorithmen | AES | AES-128,256 | Alle* | AES-256 |
Mode of Operation | CBC-ESSIV | CBC + Elephant Diffuser | Alle* | ? |
Hash | SHA-1 | SHA-256 | Alle* | SHA-1 |
Cascading | No | No | Yes | No |
Recovery Key | ? | Yes | Yes, Migration | Yes |
Header Key Derivation | PBKDF2 | PBKDF2 | PBKDF2 | PBKDF2 |
RNG | /dev/urandom | ? | TPM RNG | ? |
Preboot Auth. | Yes | Yes | Yes | Yes |
Multi Factor Auth. | Yes | Yes | Yes | Yes |
Token support(keyfile) | Yes | Yes | Yes | Yes |
Secure Hibernate | No | Yes | Yes | Yes |
Secure Swaping | No | Yes | Yes | Yes |
TPM support | Yes | Yes | Yes | Yes |
Authentication Secret | No | No | Yes | No |
Advanced Hybrid Enc. | ? | ? | Yes | ? |
Treshold Scheme | ? | ? | Yes, SSS | ? |
Alle* = Im Linux Kernel enthaltene Algorithmen und das sind wirklich ne ganze Menge.
Trusted Boot Scheme[Bearbeiten | Quelltext bearbeiten]
Sealing[Bearbeiten | Quelltext bearbeiten]
Unsealing in TpmCrypt with AHE und Authentication Secrets[Bearbeiten | Quelltext bearbeiten]
TpmCrypt[Bearbeiten | Quelltext bearbeiten]
TpmCrypt befindet sich momentan noch stark in Entwicklung jedoch wird es demnächst als Alpha Release zur Verfügung stehen.
Aufsetzen eines TpmCrypt geschützten Systems[Bearbeiten | Quelltext bearbeiten]
Kryptoalgorithmus, Mode of Operation und Hash[Bearbeiten | Quelltext bearbeiten]
Kryptoalgorithmen[Bearbeiten | Quelltext bearbeiten]
Bis heute als sicher geltene Algorithmen:
Algo | AES | Serpent | Twofish | MARS | CAST-256 |
---|---|---|---|---|---|
Block Size | 128 | 128 | 128 | 128b | 128 |
Key Sizes | 128-256 | 128-256 | 128-256 | 128-256 | 128-256 |
Structure | Sub*,Pmu* | Sub*,Pmu* | Feistel | Feistel | Feistel |
Rounds | 10,12,14 | 32 | 16 | 32 | 48 |
S-Box | Yes | Yes | Yes | ? | ? |
Linear Transf. | No | Yes | No | ? | ? |
GF Multi | Yes | No | No | ? | ? |
Shift | Yes | Yes | Yes | ? | ? |
Addition Modulo | No | No | Yes | ? | ? |
Xor | Yes | Yes | Yes | ? | ? |
Performance | Software | Hardware | ? | ? | ? |
- Sub = Substituion
- Pmu = Permutation
Dabei ist zu sagen das AES extrem schnell ist und Serpent der sicherste Algorithmus ist. Die Schlüsselgröße sollte mindestens 256bit sein.
Da der TPM 0 - 1.2 nur RSA nutzt sollte demnach eine Schlüsselstärke von min. 2048bit genutzt werden.
Empfehlung: AES,Serpent
Mode of Operation[Bearbeiten | Quelltext bearbeiten]
Bei symmetrische Verschlüsselung sollte immer ein sicher Mode of Operation genutzt werden. Es gibt 4 meist genutzte Modi:
Modi | CBC-ESSIV | LRW | XTS | EME |
---|---|---|---|---|
Primitive | CBC | ECB | ECB | ? |
ESSIV | Yes | No | Yes | ? |
Key Whitening | No | Yes | Yes | ? |
GF Multi. | No | Yes | Yes | ? |
Chaining | Yes | No | No | |
Parallelization | No | No | No | Yes |
Heutzutage gilt CBC-ESSIV und der XTS Modi als sicher. Jedoch soll XTS beim Einsatz für Datenmengen >1TB sicherer sein als CBC-ESSIV.
Empfehlung: XTS
Hash[Bearbeiten | Quelltext bearbeiten]
Aktuell sichere Hashfunktionen:
Hash | SHA-2 | Whirlpool | RipeMD |
---|---|---|---|
Structure | Merkle–Damgård | Miyaguchi-Preneel | ? |
Digest Sizes | 224-512 | 512 | 160-320 |
Rounds | 64,80 | 10 | 5 |
Empfehlung: SHA-512
LVM-Crypto-LVM[Bearbeiten | Quelltext bearbeiten]
Allgemein empfiehlt sich LVM für die Systemverschlüsselung. Folgendes Schemata hat viele Vorteile und lässt sich leicht nutzen:
Device | Name | Path | Group | Size | Type |
---|---|---|---|---|---|
/dev/sda | - | /dev/sda | - | 320GB | RAW |
/dev/sda1 | boot | /boot | - | 1GB | ext2 |
/dev/sda2 | outervolume | /dev/mapper/outervolume | - | 319GB | RAW |
/dev/mapper/outervolume | outervolume | /dev/mapper/outervolume | outervolume | 319GB | VG |
/dev/mapper/outervolume | root | /dev/mapper/outervolume-root | outervolume | 319GB | LV |
/dev/mapper/outervolume-root | crypted-root | /dev/mapper/crypted-root | outervolume | 319GB | RAW |
/dev/mapper/crypted-root | innervolume | /dev/mapper/innervolume | - | 319GB | RAW |
/dev/mapper/innervolume | innervolume | /dev/mapper/innervolume | innervolume | 319GB | VG |
/dev/mapper/innervolume | swap | /dev/mapper/innervolume-swap | innervolume | 2GB | LV,swap |
/dev/mapper/innervolume | root | /dev/mapper/innervolume-root | innervolume | 60GB | LV,ext4 |
/dev/mapper/innervolume | home | /dev/mapper/innervolume-home | innervolume | 258GB | LV,ext4 |
Wie aus dieser Tabelle ersichtlich ist benötigt man 2 Partitionen, 2 LVM Volume Groups, 1 Cryptsetup Volume und 4 LVM Logical Volumes. Dadurch ist es zum einen möglich, die gesammten Volumes mit PVmove zu verschieben und zum anderen liegen alle sicherheitskritischen Volumes in den verschlüsselten RAW Daten.
Initramfs[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 gibt es Folien zum Vortrag: