Festplattenverschlüsselung Sichere Datenspeicherung unter Linux Mathias Tausig Kompetenzzentrum für IT Security, FH Campus Wien. Erstellt von: Mathias Tausig 1
Mathias Tausig > DI Technische Mathematik (TU Wien) > Linux User seit 1998 (Suse 6.0, Kernel 2.0.36) > Berufserfahrung als Entwickler (mono) und SysAdmin > 8 Jahre Mitarbeiter einer österreichischen CA > Lektor im Masterstudium IT-Security Erstellt von: Mathias Tausig 2
Motivation Erstellt von: Mathias Tausig 3
Ziele > Warum brauche ich Festplattenverschlüsselung? > Welche Arten von Festplattenverschlüsselung gibt es? > Welche Tools gibt es? > Wie kann ich das am besten verwenden? Erstellt von: Mathias Tausig 4
Szenario 1 Sie sind als Systemadministrator für den Datenbankserver Ihres Unternehmens verantwortlich. Sie haben vor 1 Monat eine Festplatte im RAID-1 Verbund ersetzen müssen. Nun springt die neue Platte beim Hochfahren nicht mehr hoch, vermutlich ein elektronischer Defekt im Controller. Erstellt von: Mathias Tausig 5
Szenario 1 Sie haben drei Möglichkeiten: > Festplatte für einen Garantieaustausch einschicken. Sensible Daten können in falsche Hände geraten > Vor dem Einschicken die Platte einem Spezialisten zur sicheren Datenvernichtung übergeben. Kostenpunkt: einige 1000e > Festplatte selbst mechanisch vernichten und durch eine neue ersetzen. Kostenpunkt: einige 100e Erstellt von: Mathias Tausig 6
Szenario 2 Sie möchten wichtige persönliche Dokumente wie z.b. private Photos oder eingescannte Dokumente über einen Cloudspeicherdienst sichern um einen potentiellen Datenverlust zu vermeiden. Erstellt von: Mathias Tausig 7
Szenario 2 I Sie haben die folgenden Möglichkeiten: > Sie vertrauen einem kommerziellen Anbieter (Google Drive, DropBox, icloud,...). Der Anbieter und alle von ihm autorisierte Dritte haben jetzt Zugriff auf Ihre Daten Erstellt von: Mathias Tausig 8
Szenario 2 II > Sie vertrauen einem kommerziellen Anbieter der eine Datenverschlüsselung verspricht (SpiderOak, Wuala). Client Software ist proprietär und stammt vom Anbieter. Keine substantielle Verbesserung Erstellt von: Mathias Tausig 9
Szenario 2 III > Sie verwenden einen eigenen Server. Für Privatpersonen aufwendig und teuer zu konfigurieren und betreiben Erstellt von: Mathias Tausig 10
Lösung Daten verschlüsselt abspeichern Erstellt von: Mathias Tausig 11
Verschlüsselungsarten Erstellt von: Mathias Tausig 12
Dokumente oder Dateien verschlüsselt zu speichern ist nichts neues. > Manche Dateiformate erlauben verschlüsseltes speichern (pdf, odt, doc) > Dateicontainer erlauben Verschlüsselung (zip, 7zip) > Beliebige Dateien können mit externer Software verschlüsselt werden (gpg) Erstellt von: Mathias Tausig 13
Das sind alles Speziallösungen für einzelne besonders sensible Dokumente. Um eine breite Sicherheit der Daten zu gewährleisten benötigt man eine Festplattenverschlüsselung Erstellt von: Mathias Tausig 14
Eigenschaften > Festplattenverschlüsselung passiert automatisch (on-the-fly encryption) > Die Verschlüsselung passiert völlig transparent, der Benutzer sieht ein gewöhnliches Volume > Entschlüsselung kann mittels Passwort und/oder Key erfolgen Erstellt von: Mathias Tausig 15
Abbildung: Verschlüsselter USB Stick im Dateimanager Erstellt von: Mathias Tausig 16
Typen von Festplattenverschlüsselung Man unterscheidet zwischen zwei grundsätzlichen Typen von Festplattenverschlüsselung > Volumeverschlüsselung > Dateisystemverschlüsselung Erstellt von: Mathias Tausig 17
Abbildung: I/O Stack eines Linux Systems. Quelle: Mahesh Sreekandath, https://msreekan.com/2015/04/24/linux-storage-cache/ Erstellt von: Mathias Tausig 18
Volumeverschlüsselung Ein gesamtes Volume wird verschlüsselt und dem Betriebssystem als Blockdevice zur Verfügung gestellt. Das verschlüsselte Volume kann dabei eine ganze Festplatte, eine Partition oder aber auch eine einfache Containerdatei innerhalb eines bestehenden Dateisystems sein. Spezialfall: OS Encryption. Benötigt eine Pre-Boot Authentifizierung. Erstellt von: Mathias Tausig 19
Dateisystemverschlüsselung Auch als Stacked Filesystem bekannt. Dabei wird innerhalb eines bestehenden Dateisystems ein verschlüsselter Bereich definiert. Typischerweise werden die verschlüsselten Dateien in einem Verzeichnis abgelegt, die Klartexte sind in einem anderen Verzeichnis verfügbar. Gut geeignet um ein einzelnes mit einem Cloud Drive synchronisiertes Verzeichnis zu sichern. Erstellt von: Mathias Tausig 20
Vorteile Vollverschlüsselung > Allumfassend. Es kann keine sensible Datei vergessen werden. > Integration in das Betriebssystem bringt im allgemeinen Performancevorteile > Inhalt kann beliebig sein und ist nicht von den Beschränkungen eines Dateisystems abhängig > Metadaten sind ebenfalls vollständig geschützt Erstellt von: Mathias Tausig 21
Vorteile Dateisystemverschlüsselung > Kann von Benutzern ohne Admin Zugriff verwendet werden > Feinere Zugriffsrechte möglich (pro Nutzer statt pro System) > Keine Speicherreservierung notwendig > Wahlfreier Lese- und Schreibzugriff auf jede Datei > Kleine Änderungen erzeugen nur kleine Änderungen (gut für Synchronisation) Erstellt von: Mathias Tausig 22
Software Erstellt von: Mathias Tausig 23
dm-crypt Erstellt von: Mathias Tausig 24
Im Linux Kernel sind seit der Version 2.6.0 1 Werkzeuge zur Festplattenverschlüsselung integriert. > dm-crypt ist ein Modul des Device Mappers im Kernel, welches mit Hilfe der Crypto API des Kernels Blockdevices transparent verschlüsselt > cryptsetup ist das Kommandozeilen Interface für dm-crypt, welches die Authentifikation übernimmt > LUKS ist eine Erweiterung von cryptsetup, welche ein Headerformat für verschlüsselte Geräte spezifiziert 1 Dezember 2003 Erstellt von: Mathias Tausig 25
> $ cryptsetup help cryptsetup 1.6.6 Usage: cryptsetup [OPTION... ] <action> <action specific>... <action> is one of : open <device> [ type <type>] [<name>] open device as mapping <name> close <name> close device (remove mapping)... luksformat <device> [<new key f i l e >] formats a LUKS device luksaddkey <device> [<new key f i l e >] add key to LUKS device... Default compiled in key and passphrase parameters : Maximum keyfile size : 8192kB, Maximum interactive passphrase length 512 (ch. ) Default PBKDF2 iteration time for LUKS: 1000 (ms) Default compiled in device cipher parameters : loop AES: aes, Key 256 bits plain : aes cbc essiv :sha256, Key: 256 bits, Password hashing : ripemd160 LUKS1: aes xts plain64, Key: 256 bits, LUKS header hashing : sha1, RNG: /dev/urandom > $ dd i f =/dev/ zero of=/tmp/ container bs=1024k count=100 > $ cryptsetup luksformat /tmp/ container WARNING! ======== This will overwrite data on /tmp/ container irrevocably. Are you sure? (Type uppercase yes ) : YES Enter passphrase : Verify passphrase : Erstellt von: Mathias Tausig 26
> $ cryptsetup luksdump /tmp/ container LUKS header information for /tmp/ container Version : 1 Cipher name: aes Cipher mode: xts plain64 Hash spec : sha1 Payload offset : 4096 MK bits : 256 MK digest : 50 74 9f c6 c0 3c 10 f3 ec 2a 89 ba bc de 6d 80 de d6 64 6b MK salt : 4a 5d df 9a bb 55 a7 01 ec 28 b4 19 d1 52 a4 65 02 08 61 20 ce 65 8f 2f 30 e8 c9 e8 e1 29 b9 a6 MK iterations : 115000 UUID: 2798583c 2cff 4db4 82c0 b9d6e08d0780 Key Slot 0: ENABLED Iterations : 463767 Salt : 77 1f 58 93 8c 24 8d 02 41 64 34 7e f1 0f d6 55 c9 17 28 25 5a d5 74 0d ae 0d 7c c0 d5 3c 22 79 Key material offset : 8 AF stripes : 4000 Key Slot 1: DISABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED Erstellt von: Mathias Tausig 27
> $ sudo cryptsetup open /tmp/ container container_decrypted Enter passphrase for /tmp/ container : No key available with this pass phrase. Enter passphrase for /tmp/ container : " / org / freedesktop / UDisks2 / block_devices / loop0" has new interfaces :... " / org / freedesktop / UDisks2 / block_devices /dm_2d6" has new interfaces :... > $ sudo mkfs. ext4 /dev/dm 6 mke2fs 1.42.13 (17 May 2015) Creating filesystem with 100352 1k blocks and 25168 inodes... > $ sudo mount /dev/dm 6 > $ sudo umount /mnt > $ sudo cryptsetup close container_decrypted Erstellt von: Mathias Tausig 28
Verwendung > Kann auf beliebiges Blockdevice angewandt werden (Partition, Festplatte, Logical Volume, Containerdatei,...) > Soll das ganze System verschlüsselt werden, wird in der Regel eine große Partition verschlüsselt und diese dann in Folge als PV für LVM verwendet > /boot darf nicht verschlüsselt sein Erstellt von: Mathias Tausig 29
Erstellt von: Mathias Tausig 30
Veracrypt Erstellt von: Mathias Tausig 31
Kurze Geschichte I > Die erste Version von Truecrypt entstand 2004 auf Basis der eingestellten Software Encryption for the Masses. > In den folgenden Jahren entstanden Portierungen von Windows auch auf Linux und MacOS. > Das Programm wurde zum de-facto Standard für verschlüsselte Container jenseits von Betriebssystem spezifischen Lösungen. Erstellt von: Mathias Tausig 32
Kurze Geschichte II > Die Lizenz von Truecrypt war immer problematisch. Grundsätzlich Open Source, wurden jedoch mehrere uneinheitliche und nicht von der OSI bzw. der Free Software Foundation anerkannte Lizenzen verwendet. > Die letzte voll funktionsfähige Version (7.1a) erschien im Feber 2012 Erstellt von: Mathias Tausig 33
Kurze Geschichte III > 2014, auf dem Höhepunkt des NSA Skandals in Folge der Enthüllungen von Edward Snowden gaben die - anonymen - Hauptentwickler die Einstellung des Projektes bekannt und empfahlen den Umstieg auf Alternativen, da die Sicherheit nicht gewährleistet werden könne. "WARNING: Using TrueCrypt is not secure as it may contain unfixed security issues" > In der Folge entstanden zahlreiche Forks, die auch versuchten die Lizenzproblematik zu beheben. Als führend hat sich dabei Veracrypt herauskristallisiert. Erstellt von: Mathias Tausig 34
Audit Noch vor der Einstellung von Truecrypt wurde ein großes Audit des Sourcecodes gestartet. Dessen Bericht im April 2015 stellte unter anderem die Korrektheit der zum Download angebotenen Binärdateien fest. Es wurden 4 Sicherheitsprobleme gefunden, die großteils in VeraCrypt behoben wurden. Ein fundamentales Problem, welches bei der Einstellung von Truecrypt angedeutet wurde, konnte nicht gefunden werden. Erstellt von: Mathias Tausig 35
Veracrypt Veracrypt ist ein Fork von Truecrypt, der unter der Apache Licence vertrieben wird. Er ist voll abwärtskompatibel und kann bestehende Truecrypt Container lesen und schreiben. In Folge von Security Fixes wurde jedoch auch ein neues Containerformat vorgestellt, welches für neue Installationen empfohlen wird. Erstellt von: Mathias Tausig 36
Funktionen > Verschlüsselung > Betriebssystem-Verschlüsselung (nur Windows) > Hidden Volumes > Hidden Operating System > Als PortableApp verwendbar > Binaries verfügbar für Linux, Windows und OSX (und Raspbian) > https://veracrypt.codeplex.com/ Erstellt von: Mathias Tausig 37
Vergleich mit dm-crypt > Plattformübergreifend > Plausible Deniability > Einfachere Benutzung > Schlechtere Performance (FUSE statt Kernel Integration) Erstellt von: Mathias Tausig 38
Abbildung: Mounten eines Veracrypt Containers Erstellt von: Mathias Tausig 39
gocryptfs Erstellt von: Mathias Tausig 40
Kurze Geschichte I > 2003 begann mit EncFS die Entwicklung des ersten FUSE basierten verschlüsselten Overlay Dateisystems > 2014 wurde ein Security Audit von EncFS 1.7.4 durchgeführt welches einige Security Schwachstellen offenbarte, die hauptsächlich auf das große Alter der Software zurückzuführen sind > Die Weiterentwicklung zu einer Version 2.0 die alle Kritikpunkte des Audits berücksichtigt lief (läuft) nur sehr langsam, auch weil es in der Zwischenzeit einige Konkurrenzprodukte gab Erstellt von: Mathias Tausig 41
Kurze Geschichte II > 2015 wurde von einem EncFS Entwickler 2 ein neues Projekt gestartet, welches die Vorzüge von EncFS mit einem modernen Design zusammenführen sollte: gocryptfs > Im Juli 2016 erschien gocryptfs 1.0 (aktuell: v1.3), im September 2016 EncFS 1.9.1 > EncFS ist für Linux, MacOS, FreeBSD und Windows verfügbar, gocryptfs derzeit nur für Linux (Windows und MacOS sind in Arbeit) 2 übrigens ein Österreicher Erstellt von: Mathias Tausig 42
Eigenschaften > Vollständig im Userspace > Jede Datei wird in eine eigene Datei verschlüsselt > Die Verzeichnisstruktur ist identisch > Verschlüsselt wird mit einem Masterkey, der aus einem Passwort abgeleitet wird > Daten werden mittels Authenticated Encryption verschlüsselt, um Manipulationen zu verhindern > https://nuetzlich.net/gocryptfs/ Erstellt von: Mathias Tausig 43
Verzeichnisstruktur encrypted/ gocryptfs.conf decrypted/ gocryptfs.diriv foo.txt bjvltzh-xu-ios39xprjcw== subdir/ FTW2CqDT4O-0tBaIaB8rtg==/ bla.txt gocryptfs.diriv AivMmxqOIUsrez4tx1sb-A== Erstellt von: Mathias Tausig 44
> $ mkdir enc dec > $ gocryptfs init enc Choose a password for protecting your f i l e s. Password : Repeat : The filesystem has been created successfully. You can now mount i t using : gocryptfs enc MOUNTPOINT > $ find enc / dec / enc enc / gocryptfs. conf enc / gocryptfs. diriv dec > $ gocryptfs enc / dec / Password : Decrypting master key Your master key i s : c8a810db b11a0275 6581d755 cee04dbf c554d880 f40060a4 8d14b27e 1eb64f1f I f the gocryptfs. conf f i l e becomes corrupted or you ever forget your password, there is only one hope for recovery : The master key. Print i t to a piece of paper and store i t in a drawer. Filesystem mounted and ready. Erstellt von: Mathias Tausig 45
> $ find enc / dec / enc enc / gocryptfs. conf enc / gocryptfs. diriv dec > $ echo " Hallo Welt" > dec / foo. txt > $ mkdir dec / subdir > $ find enc / dec / enc enc / gocryptfs. conf enc / n9zujviqv2yfdj 7Y5 DIw== enc / n9zujviqv2yfdj 7Y5 DIw==/gocryptfs. diriv enc / gocryptfs. diriv enc / z EW7fGXLZEkRYMjmYkxBg== dec dec / subdir dec / foo. txt > $ fusermount u dec > $ find enc / dec / enc enc / gocryptfs. conf enc / n9zujviqv2yfdj 7Y5 DIw== enc / n9zujviqv2yfdj 7Y5 DIw==/gocryptfs. diriv enc / gocryptfs. diriv enc / z EW7fGXLZEkRYMjmYkxBg== dec Erstellt von: Mathias Tausig 46
Probleme Erstellt von: Mathias Tausig 47
Sicherheitsrisiken > Rechner nur eingeschlafen statt heruntergefahren > Schadsoftware (Keylogger, Viren) > Swap Bereich (Auslagerungsdatei) > Hibernation Datei/Partition > Data Leaks (Daten werden in nicht verschlüsselten Bereichen gespeichert) > Datenreste im RAM (Cold Boot) > Seitenkanalattacken Festplattenverschlüsselung ist kein Allheilmittel! Erstellt von: Mathias Tausig 48
Abbildung: Das schwächste Glied... Quelle: https://www.xkcd.com/538/ Erstellt von: Mathias Tausig 49
Fazit Erstellt von: Mathias Tausig 50
Festplattenverschlüsselung löst viele Probleme, aber bei weitem nicht alle. Empfehlungen > Festplatte des eigenen Systems: dm-crypt > Portable Medien: Veracrypt (Plattformübergreifend) oder dm-crypt (nur Linux) > Cloudspeicher: gocryptfs Erstellt von: Mathias Tausig 51
Danke für die Aufmerksamkeit! Erstellt von: Mathias Tausig 52