Festplattenverschluesselung unter Linux LUKS und DM
Transcription
Festplattenverschluesselung unter Linux LUKS und DM
Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Festplattenverschluesselung unter Linux LUKS und DM-Crypt Paul Asmuth Chaos Computer Club Cologne e.V. http://koeln.ccc.de Köln 29.11.2007 Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Gliederung 1 Prinzipielles 2 Modes of Operation 3 DM-Crypt 4 LUKS 5 PBKDF2 6 Algorithmen 7 Praxis So geht’s On The Fly-Verschluesselung 8 Quellen&Links Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Gliederung 1 Prinzipielles 2 Modes of Operation 3 DM-Crypt 4 LUKS 5 PBKDF2 6 Algorithmen 7 Praxis So geht’s On The Fly-Verschluesselung 8 Quellen&Links Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Gliederung 1 Prinzipielles 2 Modes of Operation 3 DM-Crypt 4 LUKS 5 PBKDF2 6 Algorithmen 7 Praxis So geht’s On The Fly-Verschluesselung 8 Quellen&Links Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Gliederung 1 Prinzipielles 2 Modes of Operation 3 DM-Crypt 4 LUKS 5 PBKDF2 6 Algorithmen 7 Praxis So geht’s On The Fly-Verschluesselung 8 Quellen&Links Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Gliederung 1 Prinzipielles 2 Modes of Operation 3 DM-Crypt 4 LUKS 5 PBKDF2 6 Algorithmen 7 Praxis So geht’s On The Fly-Verschluesselung 8 Quellen&Links Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Gliederung 1 Prinzipielles 2 Modes of Operation 3 DM-Crypt 4 LUKS 5 PBKDF2 6 Algorithmen 7 Praxis So geht’s On The Fly-Verschluesselung 8 Quellen&Links Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Gliederung 1 Prinzipielles 2 Modes of Operation 3 DM-Crypt 4 LUKS 5 PBKDF2 6 Algorithmen 7 Praxis So geht’s On The Fly-Verschluesselung 8 Quellen&Links Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Gliederung 1 Prinzipielles 2 Modes of Operation 3 DM-Crypt 4 LUKS 5 PBKDF2 6 Algorithmen 7 Praxis So geht’s On The Fly-Verschluesselung 8 Quellen&Links Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Begriffsklaerung Begriffsklaerung Hash Eine Einweg-Funktion die aus einer beliebigen Menge Daten chaotisch einen ”Fingerabdruck erstellen” Algorithmus Eine Zwei-Wege-Funktion die Daten mit einem Schluessel so verrechnet, dass die urspruengliche Information verloren geht, allerdings - nur - mit dem Schluessel wiederhergestellt werden kann. Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Begriffsklaerung Beispiel: Hash wenig Daten echo foobar | md5sum 14758f1afd44c09b7992073ccf00b43d viele Daten dd if=/dev/urandom bs=1M count=10 | md5sum 9fab7b86d88170c48561a8fdc380e897 Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Begriffsklaerung Beispiel: Algorithmus GPG >>echo foobar >openchaos >>gpg –symmetric -a openchaos Enter passphrase: >>cat openchaos.asc Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Begriffsklaerung Beispiel: Algorithmus openchaos.asc —–BEGIN PGP MESSAGE—– Version: GnuPG v1.4.6 (GNU/Linux) jA0EAwMCeGrW8uYkJC9gySbfiuOzFmYUZ8EokosmhmJIzjbEna+ FSdVaXOUbfntkju/aNs6bgA===2L+m —–END PGP MESSAGE—– Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Uebersicht Was gibt es? • LUKS • DM-Crypt • LoopAES • Cryptoloop • Truecrypt Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Blockchiffrierung Was ist ein Blockchiffre? Streamchiffre Eine Verschlueselungsmethode bei der der Klartext in sehr kleinen Teilen – Bit oder Byteweise – verschluesselt wird. Blockchiffre Eine Verschlueselungsmethode bei der der Klartext Blockweise verschluesselt wird. Hierbei ist u.U. sog. ”Padding” notwendig. Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Blockgroesse Wie gross ist so ein Block? Festplatten-Block 2048 Byte, 4096 Byte Cipher-Block 256 Bit, 512 Bit, 768 Bit Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Was ist das? Modes of Operation Der ”Mode of Operation” bestimmt wie aus einem Klartextblock ein verschluesselter Block wird und wie - wenn vorhanden - der Initalisierungsverktor ermittelt wird. Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Salt und Initalisierungsvektor Salt Problem Werden Daten stets mit dem selben Schluessel verschluesselt entstehen aus gleichen Plaintextbloecken auch gleiche verschluesselte Bloecke. So lassen sich – durch Vergleiche – Rueckschluesse auf den Inhalt ziehen. Loesung Vor der Verschluesselung wird ein bekannter, aber stets anderer sog. ”Salt” mit ”eingerechnet”. Dadurch entstehen aus gleichen Plaintextbloecken verschiedene verschluesselte Bloecke. Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Salt und Initalisierungsvektor Initialisierungsvektor Problem Da es nicht praktikabel ist sich zu jedem Block einen IV zu ”merken”. Wird einfach ein Teil des vorherigen ”Crypto-Stroms” als ”Salt” genommen. Doch was verwendet man beim ersten Block? Loesung Der erste Block wird mit einem sog. Initialisierungsvektor verknuepft. Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Salt und Initalisierungsvektor Welche sind gängig? • ECB • CBC • LRW • XTS Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links ECB ECB • Total veraltet • Kein IV - kein ”Salt” Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links ECB ECB Abbildung: Ein Bild von Tux mit ECB ”verschluesselt” http://en.wikipedia.org/wiki/Image:Tux ecb.jpg Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links CBC CBC • Cipher Block Chaining Mode • Verknuepfung (XOR) des letzten Verschlueselten Blocks mit dem aktuellen Block • Hat einen Initialisierungsvector • In der Regel ist der IV Leider die ”gepaddete” Sektornummer, ein Timestamp oder einfach eine aufsteigende Zahl • CBC bietet rel. grosse Datensicherheit Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links ESSIV ESSIV • Im Kernel seit 2.6.10 • Encrypted Salt-Sector Initialization Vector • ESSIV ist das Salz in der CBC-Suppe • Der IV wird aus einem Hash des Keys und der Sektornummer gebildet. Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links LRW LRW • Liskow Rivest Wagner • Im Kernel seit 2.6.20 • Sicher und Performant • Berechnet den ”Salt” aus Sektornummer und Hash • im Gegensatz zu CBC nicht Rekursiv und Datensicherer Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links XTS XTS • Sicherheitsproblem wenn LRW seinen eigenen Key verschluesselt • XTS ist eine Art Bugfix • Noch Experimentell • Noch nicht im Kernel Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Was ist DM-Crypt? Was ist DM-Crypt? • DeviceMappter-Target • Zwischenschicht Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Was ist DM-Crypt? Was ist DM-Crypt? Virtuelles Device DM-Crypt Festplatte Open Chaos Paul Asmuth <[email protected]> /dev/mapper/xy Crypto-Algorithmus /dev/hdxN Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Was ist LUKS? Was ist LUKS? • Linux Unified Key Setup • Stadart zu Dateisystemverschluesselung • Virtuelle Schicht zwischen Dateisystem und Partition • 8 Key-Slots → Multi-User-Betrieb • Unabhaengig von Dateisystem, Algorithmus und Mode of Operation Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Was ist LUKS? Was ist LUKS? Dateisystem LUKS Partition Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Der LUKS-Header Die 8-Key-Slots phdr Open Chaos Paul Asmuth <[email protected]> KS 1 KS 2 ... KS8 Data Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Der LUKS-Header Der Header im Einzelnen • Version • Informationen ueber Key (Checksumme, Laenge) • UUID • Parameter fuer PBKDF2 und ”Anti-Forenische Speicherung” Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Strechting und Salting Was zur Hoelle? • Password-Based Key Derivation Function • Schuetzt das Passwort vor Brute-Force und Wordbook-Angriffen • PKCS#5 (Public Key Cryptography Standard 5) Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Strechting und Salting Salting • Anhaengen von Zufaelligen Zeichen an das Passwort Durch die beliebige Variierbarkeit muesste ein Universalwoerterbuch mehr Eintraege als Atome im Universum besitzen, um auf alle moeglichen PBKDF2-Kombinationen zu passen. http://de.gentoo-wiki.com/DM-Crypt Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Strechting und Salting Stretching • Erhoeht die Rechenzeit • beliebig viele Iterationen primitiver Operationen • cryptsetup: -i • Zeit in mS Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Strechting und Salting eine Kleine Rechnung • Gross-, Kleinbuchstaben; Zahlen, gaengige Sonderzeichen: 77 Zeichen • Passwortlaenge: 23 Zeichen • 1 Passwort/Sekunde Wie lange dauert es 7723 3600∗24∗365 = 7, 735 = 1031,027 Jahre Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Strechting und Salting Jahre 1.000.000.000.000.000.000.000.000.000.000 Alter der Erde 30.000.000 Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Strechting und Salting Anti-Forensische Speicherung • Problem: Sektorenweise ”Backups” in der Firmware verankert • Loesung: Aufblaehen sensitiver Daten (AF-Splitter) Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Bestandsaufnahme • AES • Blowfish • Twofish • Serpent • SHA256 Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Kurzer Abriss Eine Uebersicht AES ist der ”Advanced Encryption Standard”. Bei einer Ausschreibung gewann der Rijndael-Algorithmus. Block- und Keylaengen 128, 192 oder 256 Bit. AES ist frei. AES ist sicher - er ist von der US-Regierung fuer Geheimdokumente zugelassen. AES besitzt mathematische Schwachstellen. Blowfish und Twofish Blowfish wurde von Bruce Schneier entwickelt. Twofish ist der Nachfolger von Blowfish und hatte sich auch fuer den AES beworben. Twofish ist AES in Sicherheitsfragen ueberlegen. Twofish gilt auch als performanter. Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Kurzer Abriss Eine Uebersicht Serpent wat auch ein Kandidat fuer den AES. Serpent ist fuer die Festplattenveschluesselung jedoch definitv nicht zu empfehlen, da es langsamer ist. SHA256 ist einer der Secure Hash Algorithms und gilt als Kollisionssicher. SHA-1 wurde jedoch 2005 gebrochen – theoretisch Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links So geht’s no voodo-magic • cryptsetup -c aes-lrw-benbi -y -s 256 luksFormat /dev/hdX • cryptsetup luksOpen /dev/hdX crypto • mkfs.XYZ /dev/mapper/crypto • mount -t XYZ /dev/mapper/crypto /mnt/foobar • cryptsetup luksClose crypto Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links On The Fly-Verschluesselung Ist eine Verschluesselung on-the-fly moeglich? • Cryptsetup unterstuetzt das nicht • u.U muss LUKS-Header vor die Daten Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links On The Fly-Verschluesselung on-the-fly ohne LUKS 1 cryptsetup -c aes-lrw-benbi -y -s 256 create crypto /dev/hdX 2 dd if=/dev/hdX of=/dev/mapper/crypto bs=512 skip=0 seek=0 Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links On The Fly-Verschluesselung on-the-fly mit LUKS • extrem experimentell • Partition verkleinern • Daten nach hinten schieben • Luks-Header davor setzen • LuksConvert1 1 https://help.ubuntu.com/community/EncryptedFilesystemHowto7 Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne Prinzipielles Modes of Operation DM-Crypt LUKS PBKDF2 Algorithmen Praxis Quellen&Links Quellen&Links Quellen&Links 1 http://www.de.wikipedia.org 2 http://luks.endorphin.org/LUKS-on-disk-format.pdf 3 http://de.gentoo-wiki.com/ 4 http://clemens.endorphin.org/nmihde/nmihde-A4-OS.pdf Slides online http://www.paulasmuth.de/con/kram/slides/hdenc.pdf Open Chaos Paul Asmuth <[email protected]> Chaos Computer Club Cologne