AP4.Analyse_v1.0_geschwrzt_.pdf

Dieses Dokument ist Teil der Anfrage „Untersuchungen zum Verschlüsselungsprogramm „TrueCrypt“

EINSTUFUNG AUFGEHOBEN VS NUR liQR DEN ClliiNSl=GiiliR.l),UCiol Historie Untersuchung TrueCrypt Arbeitspaket 4 Software-Analyse 1rsion: Datum: 1.0 15. November. 2010 Seite 1 von 74 I 12010 BelteZvon74j· ·········
VS . NUR 1"0R CEN ClliNSTGEEIR.AUCM Inhaltsverzeichnis 1 Architektur von TrueCrypt. ..........................................................................................8 1.1 TOE Design I High-Level Design ..... ,..................................................................8 1.1.1 Sourcecode-Arialyse Linux ...............................................................·......... 10 1.1.2 Einstiegspunkt bei Linux................. :.......................................................... 10 1.1.3 Sourcecode-Analyse Wlndows ............... .-.................................................. 12 1.1.4 Einstiegspunkt bei Wlndows ...................................................................... 12 Valurne Creation Wlzard .................................................................................1.2 Mount-Anwendung .......................................................................................... 13 1.1.5 Subsysteme. .................:............................................................................ 13 Übersicht. ..................................................... :.................................................. 13 Boot (nur Wlndows) ........................................................................................ 14 Common (hauptsächlich Wlndows) ................................................................14 Core (nur Unix und Derivate) .......................................................................... 15 Core/Unix (nur Unixund Derivate) .......:......................................................... 15 Crypto............................................................................................................. 15 Driver (nur VVlndows) ......................................................................................15 Drlver/Fuse (nur Unixund Derlvate) ...............................................................15 Format (nur Wlndows) ....................................................................................1.5 Main ..............................,................:.......................... ,......... :......... ~ ................. 16 Mount (nur Wlndows) ..................................................................................... 16 Platform.., ............................................................... :.................................. ,..... 16 Platform/Unix (nur Unixund Derivate) ..................................................:......... 16 Volume (nur Unixund Dertvate) .....................................................................16 1.1.6 Use Case Realization ................................................................................ 16 Volume erzeugen ............................................................................................ 16 Verstecktes Volume erzeugen ........................................................................ 17 Bestehende Partition versci)IOsseln (nur VVindows) ....................................... 17 Systempartition oder-testplatte verschlOssein (FDEJPBA) (nur Vv'indows) ... 18 Volume öffnen ..................... :... ~ ............................................................., ......... 19 Valurne einhangen ............................................................................ ~ ..............21 Valurnezugriff Lesen/Schreiben ......................................................................22 Passwort ändern ......................................................................... :................... 24 Header sichemlwiederherstellen.:................................................... :.............. 25 Sicheres Löschen/Überschreiben .................................................................. 25 1.1.7 Designbewertung und Auffalligkeiten ........................................................ 25 1.1.8 Sicherheitsrelevante Designschwachen ....................................................26 Least Prlvilege Prinzip..........:.........................................................................26 CoreServlce Designfehler................... :...................................................:.......26 1.1.9 Sicherheitsrelevante Codeschwächen ...................................................... 27 Veraltete/Unsichere ·Funktionen .....................................................................27 Unsichere Umgebungsvariablen I execvpO ohne Pfadangaben ........... .-........ 28 Mildprobe Umgebungsvariable ........ :............................................................. 28 Off-by-one Overflow.. :... :........................................................................ :........29 Seite 3 von 74 , • • • • • • • • • • VS NUR IOOR CEN ClliNSTGiHRAUCM 1.1 .10 Bewertung ................................................................................................30 1.1 .11 Empfehlung ..............................................................................................~0 1.2 Functional Specification ...................................................................... :... ~ ......... 30 1.2.1 Entrypoints {VVindows) .............................................. :..........................,..... 30 1.2.2 Entrypoints (Unlx) .........,............................................................................30 1.2.3 Bootloader (Wlndows) ...............................................................................31 1.2.4 Kemei-Mode-Treiber (Wlndows) ................................................................ 31 1.2.5 CoreServlce Interface (Unix) .....................................................................37 1.2 .6 Userspace Treiber (Unix mit FUSE) ..........................................................38 Dateisystemfunktlonen ................................................................................... 38 Race Condition fOr Fehlercode 2................................................:................... 39 1.2.7 Security Token .. :....................................................................... :................ 39 1.3 Security Architecture Description ..............................:....................................... 39 1.3.1 Encryplion Layout/Deslgn ...............:..........................................................39 1.3.2 Sicherer Zufall ............................................................................................40 Llnux ...............................................................................................................40 Schwachstelle in der Anblndung von /dev/random unter Linux ..................... 41 Wlndows .........................................................................................................42 1.3.31/0 Separation ................ :...........................................................................43 Llnux ...............................................:..........................................................:....43 Windows ... :.....................................................................................................43 1.3.4 Cache Design .................... :.......................................................................43 Unux ......................................................................... ,.....................................43 Windows...........................................................................:............................. 44 1.3.5 Privilege Separation ...................................................................................44 Linux ........ :......................................................................................................44 Windows .................................................................................................,.......45 Analyse der Komponenten bezOglieh Angriffen durch Malware .....................47 1.3.6 Secure Startup ................................................................................,..........48 1.3.7 Auslagerung im Betrieb und bei Ruhezustand ..........................................48 Windows ...... :.................................................................................................. 48 Linux............................................................................................................... 48 2 Modularisierbarkeit /'Erweiterbarkeit von TrueCrypt.. ..............................................50 2.1· Kryptoalgorithmen .............................. :..............................................................50 2.1.1 Beschreibung ............................... :.:........................................................:.• 50 2.1.2 Ort notwendiger Änderungen .......:.............................................................50 Linux .. :............................................................................................................ 50 Wlndows .........................................................................................................51 2.1.3 Bewertung ................................................................................................... 51 Llnux.. .............................................................................................................. 51 Windows .........................................................................................................51 2.1 .41mplementierungsaufwand fOr einen AES-ähnlichen Krypto-Aigorithmus.51 2.2 Hashalgorithmen .......................... ~ ....................................................................54 2.2.1 Beschreibung ......................................:...................................................... 54 2.2.2 Ort notwendiger Änderungen .....................................................................54 Unux........................................................... :................................................... 54 Windows .........................................................................................................54 Seite 4 von U 1 2CIIO
ltS NUR fiOR DiN CIENS-.:GiBRAUCM 2.2.3 Bewertung ................................................................................................... 55 Linux ... ;........................................••..............................................................•..55 Windows .......................................................•••............................................... ss 2.2.4 Hashalgorithmus der Fuii-Disk-Encryption austauschen (Windows) ...•.... 55 Ort notwendiger Änderungen ...................................••.................................... 55 · Bewertung ...........•................................._.................•, ......................................-.55 2.3 Betriebsarten f!lr die Kryptoalgorithmen .........:•................................................ 56 2.3.1 Beschreibung ............................................................................................. 56 2.3.2 Ort notwendiger Änderungen ......................•.............•..........;..•....., ............ 56 Linux ...............................................................................................................56 Windows .......................................................................................................... 57 2.3.3 Bewertung ...-........................................................................_....................... 57 Linux .......... ;.................... :............................................................................... 58 Windows ..-.......................................................................................................58 2.4 Zusatzliehe Quellen f!lr Zufallszahlengenerator ............................................... 59 2.4.1 Beschreibung ... :............. ;........................................................................... 59 2.4.2 Ort notwendiger Änderungen .....................................................................59 Linux............................................................................................................... 59 Windows .........._................................:.............................................................. 59 2.4.3 ·sewertung .................................................................................................. 59 2.5 Verbot dateibasierter Volumes ....................................................................... :.. 59 2.5.1 Beschreibung ................................................... :.........................................59 2.5.2 Ort notwendiger Änderungen ...............................................-......................60 Linux.................................. ,...............,.................................... ;.......................60 Windows ......................................................................................................... 60 2.5.3 Bewertung .........,........ :...............................................................................60 2.6 lntegritatsprOfung .... _. .......................................................................................... 60 2.6.1 Verwendung eines Dateisystems mit lntegritatsprOfung ..................:........60 2.6.2 Kryptagrafische Hashes auf Blockebene .......... ,........................................61 Ort notwendiger Änderungen (Windows) ....................................................... 61 Ort notwendiger Änderungen (Linux) ............................................................. 61 Bewertung .......................................................................................................61 2.6.3 RAID;artige Redundanz innerhalb eines Volumes .................................... 62 Ort notwendiger Anderungen .........................................................................62 Bewertung ............................................. .-.........................................................62 2.7 Key-Management. ........................................................................................... ..63 2.7.1 Verfahren zum entfernten Aufsetzen von FDE oder Containe·r mit Escrow ........................................................................................................ .-...................63 e~:~~:=~~~~g~~::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::~~ Ort notwendiger Änderungen (FDE) ...............................................................63 Ort notwendiger Änderungen (Container) ......................................................63 Bewertung (FDE) ........................................................... .- ................................63 Bewertung (Container) ............................ .............,.............;: ..........................64 2.7.2 Verfahren bei Vertust des SchlOsseis f!lr einen Contalner........................64 Beschreibung ..................................................................... ....,........................64 Voraussetzungen ............................................................................................64 Selte.Svon741·········· vs NUR FOR DII!N I)IEiNSTGiBMUCH Ort notWendiger Änderungen .......................................................................... 64 Bewertung ................................ .......................................................................64 2.7.3 Verfahren bei Vertust des SchlOsseis f!lr FDE ...........................................64 Beschreibung ..................................................................................................64 Voraussetzungen................................................... :.......................... ;........... .. 65 Ort notwendiger Anderungen ......................................................................... 65 Bewertung ................................................................... ,..................... .-............. 65 2. 7.4 Austausch des Schlllsselmaterials ........ :................................................... 65 Ort notwendiger Änderungen ......................................................................... 65 Bewertung ........................................................................._..... ,........................ 65 2.8 Security Token ............................................................:.......... :...........................66 2.8.1 SmartCard beim Bootvorgang .............. :.................................................... 66 Ort notwendiger Änderungen .........................................................................66 Bewertung ....................................................................................................... 66 2.8.2 Anbindung nlcht-PKCS#11 kompatibler Gerate .........................................66 · Ort notwendiger Änderungen ............. .- ............................................................67 Bewertung .......................................................................................................67 2.9 Authentisierung ................................................................................................,67 2.1 0 Multirollen/ -user Betrieb .................................................................................67 2.1 0.1 Beschreibung ...........................................................................................67 Verwendung verschiedener Headerkopien .................................................... 67 Verwendung-eines anderen Headerformats ...................................................68 2.1 0.2 Ort notwendiger Anderungen ................................................................... 68 Linux ................................................................................................................ 69 Windows......................................................................................................... 69 Zusatzliehe Änderungen fDr Full Disk Encryption .......................................... 69 2.10.3 Bewertung ................................................................ ,............................... 69 Linux...............................................................................................................69 Windows ......................................................................................................... 70 Zusatzliehe Änderungen f!lr Fuii-Disk-Encryption .......................................... 70 2.11 Trennen von Header und Volume..............:.................................................... 70 2.11 .1 Beschreibung ........................................................................................... 70 2.11.2 Ort notwendiger Änderungen ................................................................... 70 Linux ............................................................................................................... 70 Windows .........................................................................................................70 2.11.3 Bewertung .................. :...._..................................................,...................... 71 Linux............................................................................................................... 71 Windows.: ....................................................................................................... 71 2.12 Sicheres Löschen von Volumes ............ :......................................................... 71 2.12.1 Beschreibung ...................... .-....................................................................71 2.12.2 Ort notwendiger Änderungen ...................................................................72 Linux ............................................................................................................... 72 Windows ......................................................................................................... 72 2.12.3 Bewertung .......................................:.........................................................72 2.13 Fuii-Disc-Encryption unter Linux.....................................................................72 2.13.1 Beschreibung ...........................................................................................72 2.13.2 Ort notwendiger Änderungen ........ ,..........................................................73 Selto 8 von 741 12010
VS "S . NUR FÜR CiN CIENSTGiiBRA.UCW NUR JOÜR CEN CIENS+GiiRA.UCW 2.13.3 Bewertung ......... ........... .........•........................•............•............................ 73 Kompatibilität zwischen Distributionen ....••......••.......................••.•..................73 Test- und Integrationsaufwand fOr verschiedene Distributionen .. .................. 73 2.14 Sprachversionen unter Linux ........ .................................................................. 73 2.14.1 Beschreibung ................................................................ ,....................... ;.. 73 2.14.2 Ort notwendiger Änderungen ................................................................... 73 2.14.3 Bewertung ........ ............ ........................................................................ .... 74 1 Architektur von TrueCrypt 1.1 TOE Design !High-Level Design TrueCrypt in der hier vorliegenden und untersuchten Ver.iion 7 besteht aus mehreren Komponenten und Submodulen. Es werden Sourcecodepakete tor IJIJindows und Unux angeboten, die sich zwar in ihrem Inhalt unterscheiden, jedoch trotzdem Code vornjeweils anderen Betriebssystem enthalten. Eine Unterscheidung nach den herausgegebenen Paketen ist daher nicht sinnvoll, stattdessen bietet sich eine Unterscheidung nach der eigentlichen Verwendung an (ob gemeinsam oder nur in einer der beiden Umgebungen): Gemeinsam genutzter Code: . . . . . Common Crypto P/atform* Release Resources Windows-Only: . . . . . . . Boot/Windows Driver Mount Format Setup Unlx-9enerlc: . . . . Seite 7 von U 1 2010 Core* Main P/atforrn/Unix Resources/lcons Volume DrlvertFuse Seite II von 741 1 2010
'JS us NUR F'ÜR DEN CIEiNSTG&IiRAUCW NUR IOÜR DEN l:liEiNSTGiiliRAUCW Llnux: . 1.1.1 Sourcecode-Analyse Llnux - - - Cotellinux MacOSX: .. Build/Resources/MacOSX Core/MacOSX Solaris: . . Core/Solaris FreeBSD: Core/FreeBSD SLOC Directory SLOC-by-Language (Sorted) 23829 COJIIIIOn ansic~l9452,cpp~3056,xml=l321 15260 Main cpp=l5260 9485 Crypto ansic-7195,asm=2290 4730 Voluma cpp=4730 4006 core cppc4006 3761 Platfoz:m cpp=3761 32 Build xml•32 0 R.esources (none) Damit sind fllr Wlndows/Linux die folgenden Verzeichnisse Interessant: Windows: . . . . . . . . . . Boot/Windows Common Crypto. Driver Format Mount Platform Release Resources Setup Totals grouped by language (dominant language first) : Linux: . . . . . . . . . . . . . epp: Core ... anaic: Core/Linux Common 30813 (50.43%) 26647 (43.61%) : 2290 (3.75%) >0111: 1353 (2 .21%) Crypto · Driver/Fuse Deutlich sichtbar ist hier, dass der Sourcecode in allen Ordner bis auf Common und Crypto ausschließlich in C++ programmiert ist. Die· Crypto-lmplementierung ist hierbei tatsächlich die einzige gemeinsam genutzte Komponente. Common wird zwar wahrend · des Unuxbuilds auch benutzt, allerdings werden dort lediglich 4 Implementierungen (Crc, Endian, GfMul und Pkcss) und einige Header benutzt. BerOcksichtigt man diese Tatsache fllr das Common Verzeichnis, so stellt dieses Verzeichnis nur noch 1400 SLOC in C, sowie 613 SLOC in C++ bereit. Dadurch steigt in der Gesamtbetrachtung der Anteil von C++ am tatsächlich genutzten Code, während der C Anteil sinkt: Main Main/Unix Platform Platform/Unix Release Resources Resources/lcons Totals grouped by language (dominant language first) : Volume epp: - -- - - Im Folgenden werden (aufgetrennt nach Linux/VIIindows) die Source Unes of Code (SLOC) je nach Ordner dargestellt. Dadurch lässt sich vor allem Oberblicken, .in welchen Sprachen das Produkt hauptsächlich geschrieben ist. 28370 (69.86'111 (30813 - 3056 + 613) an•ic: 8595 (21.17'11) (26647 - 19452 + 1400) aea: 2290 (5 . 64\) xml: 1353 (3.33%) Damit liegt der Anteil von C++ bei knapp 70"h. 1.1.2 Einstiegspunkt bel Llnux Unter Linux startet das Programm wie folgt: Seite 9 von 7 .. 1 2010 Seite 10 von 74 2010
\tS NUR IOOR D&N CIEiNSTQiiliRAUCW pun ix/Ma in. cpp - - -- 'JS NUR FÜR CliN DI&NSTGiiliRAUCiol j ---- ln der main < ) -Routine wird zunächst das verwendete Betriebssystem und die Systemumgebung ilberproft. Dann wird geproft, ob das Programm im CoreServlce- Modus ausgefOhrt werden soll. ln diesem Falle wird ausschließlich 1.1.3 Sourcecode-Analyse Wlndows SLOC Directory SLOC-by-Language (Sorted) 23829 Common ansic-19452,cpp=3056,xm1=1321 9485 Crypto ansic=7195,asm=2290 8537 Mount ansic=76 25,cpp=912 8325 B'oz:mat ansic=B143,cpp=182 CoreService{) 6102 Driver ansic=6102 EncryptionThr eadPoo1() 3424 Boot cpp=2752,ansic=507,asm=165 3091 Setup ansic=3024,cpp=67 2796 P~at~onn cpp- 2796 0 Release (none) 0 Resources (none) 0 top_dir (none) Corese r vice::Proc essE1evatedRequests() gestartet. Ist dies nicht der Fall, so wird Im Normalmodus zuerst gestartet. Im Anschluss wird Oberpr!lft, ob· TrueCrypt als reine textbasierte Anwendung: Appl~cation::Initialize (Useri nterfaceType::Text) laufen oder die GUI gestartet werden soll: Totals g rouped by language (dominant language first) : ansic: Application : : I nitialize (Use r interfaceType::Graphic) 52048 (79.35\) cpp: 9765 (14.89l) um: 2455 (3. 74\) xm1: 1321 (2.01\) Im Gegensatz zu Unux besteht die Windowslmplementierung zu knapp 80o/o aus C- Code und nur zu einem sehr geringen Teil aus C++. 1.1.4 Einstiegspunkt bei Wlndows Unter Windows gibt es zwei Einstiegspunkte in unterschiedlichen Subsystemen, die durch zwei getrennte Binaries begrundet sind. Volume Creatlon WJzard Die WinMain () Methode des · Vo/ume Creation Wizattf lin Fonnat-5ubsystem (Format/Tcformat. c) instantiiert zunächst ein BootEnctyption-Objekt zur Verwaltung der Fuii-Disk-Encryption unter Windows, und fOhrt dann die generische lnitialisierungsfunktion rni tApp () aus. Im Anschluss daran werden: Randinit () Dri verAttach {) Auto.T estAlgorithms {) Seite 11 von 74 1 2010 Seite U von 74 2010
VS NUR I"ÜR g&N glliNST~IiiRA,UCW iJS NUR !ZOR g&N glliN&+GiiiliiMUCW -gestartet. Erst nach erfolgreichem Abschluss dieser Funktionen wird das eigentliche Hauptdialogfenster angezeigt. ~ Mount-Anwendung ~ Die · WinMain () Methode der Mount-Anwendung im Mount-Subsystem (Mount/Mount. c) verhält sich ähnlich zum Volume Creation Wizard, fOhrt aber die Funktionen Randin i t () und AutoTestAlgorithms () nicht aus. 1.1.5 Subsysteme . Im Folgenden wird die Ordnerstruktur des Soürcecodes zur Unterteilung in einzelne Subsysteme genutzt. Sofern nicht anders gekennzeichnet, ist das Subsystem und seine Beschreibung tor beide Betriebssysteme (Linux und \Nindows) zutreffend. ~-~.= ~, Obersicht Eine Gesamtobersicht der Subsysteme wird in Bild 1 sowie Bild 2 gegeben. [ ~=21 llestPauwortwn Pte-BootAulhenlk:atlon ·- - - ~-- -- --- -- - - --- - - -- -- --- - - Maln Bild 2: Obersicht der Subsystembeziehungen in UnixA.inux ~ Boot (nur Wfnctows) Das Boot-Subsystem enthält die nötige Implementierung tor die Pre-Boot Authentication-Funktion; welche ausschließlich unter \Nindows zur VerfUgung steht und das Booten des Betriebssystems von einer verschiOsselten Partition erlaubt. Hierzu wird ein eigener Bootleader verwendet. welcher die Auswahl des zu bootenden Systems anbietet und mittels Eingabe eines Passworts das Öffnen einer verschiOsselten Betriebssystempartition ermöglicht. Nach erfolgreichem öffnen wird der eigentliche Betriebssystembootleader gestartet. Bild 1: Obersicht der Subsystembeziehungen in Windows Common (hauptslichlich Wtndows) Das Common-Subsystem enthält verschiedenste Grundfunktionen, die hauptsachlich unter \Nindows genutzt werden. So stellt dieses System die Crypto- und Volume- Abstraktionen, den Zufallszahlengenerator sowie viele Lew-Level-Funktionen (z.B. Funktionen zum Formatieren von FAT/NTFS, Zugriff auf die \Nindows-Registry, Laden von Sprachdateien, mathematische Primitive, PrOfsummen uvm.) zur VerfOgung. Dieses Subsystem scheint veraltet und wurde fOr unixartige Betriebssysteme in mehrere Subsysteme (Volume, Core, Main); aufgeteilt. Nur ein sehr geringer Teil dieses Systems (insgesamt nur 4 _Komponenten) wird auch von anderen Betriebssystemen verwendet. Selt~t13 von 1• 1 2010 Seite 1• von 7.4. 2010
VS NUR f=ÜR g&N gii!NST~IiiBRl\.UCiol VS Core (nur Unix und Derivate) Das Core-Subsystem enthalt generische Implementierungen bestimmter Kernelemente von TrueCrypt, die parallel auch in den Common-/Format-/Mount- Subsystemen fOr Windows implementiert sind. Dazu zahlen u.a. der RandomNurnberGenerator und der VolumeCreator. Das Subsystem ist so aufgebaut, dass es betriebssystemspezifisch erweiterbar ist (siehe Core/Un/x). NUR f=OR g&N gt&NS+G&BRAUCiol Die COM-Technik, eine windowseigene TeChnik .f llr lnterprozesskommunikation, kommt hier zum Einsatz, damit das entsprechende Interface zur VerfUgung gestellt werden kann, unabhängig davon, in welchem Prozess es gerade läuft. Dies ist insbesondere wichtig fOr Windows UAC, wenn das Interface mit erhöhten Rechten gestartet (separater Prozess), aber dennoch von der Implementierung mit Nutzerrechten bedient werden soll. Maln Cora!Unlx (nur Unlx und Derivate) Das Core/Unix-Subsystem erweitert Core um Unix-spezifische Implementierungen. ln weiteren Unterordnern wi~d diese Implementierung fOr Unixderivate (Linux, MacOSX, FreeBSD, usw.) vervollständigt. So wird in Core/Unix/Limix beispielsweise die Interaktion mit dem Llnux Device Mapper implementiert. Das Main-Subsystem stellt den Entrypoint unter unixartigen Systemen bereit und enthalt sowohl das textuelle Interface, als auch die GUI (wxWidgets-basiert). Dieses Subsystem kommuniziert nach dem Start hauptsachlich mit dem Core-Subsystem, um die geW!lnschten Aktionen durchzufahren. Mount (nur INfndows) Crypto Das Ctypto-Subsystem enthält die Implementierung sämtlicher unterstillzier kryptagraphischer Primitive, d.h. Verschlllsselungs- und Hashalgorithmen. Das Mount-Subsystem enthält die Implementierung fOr die Mount-Anwendung voo TrueCrypt, welche fOr den Umgang mit vorhanden Volumes (z.B. Öffnen und Schließen) verantwortlich ist. Diese Komponente · kann ebenfalls Ober das COM- · Interface angesprochen werden (siehe Format-Subsystem). Driver (nur Windows) . Das Driver-Subsystem enthält Kerne1-Mode-Treiber für Windows zum Betreiben verschlllsselter Laufwerke. Der Treiber implementiert unter anderem einen Filter fllr Laufwerke und Volumes, der Ver- und Entschlllsselung beim Zugriff transparent abwickelt. Zu diesem Zwecke kommuniziert der Treiber mit dem Common- Subsystem und nutzt dort den EncryptionThreadPool. Das notwendige Passwort erhält der Treiber entweder aus dem Userspace oder direkt vom Boot-Subsystem (bei Pre-Boot Authentication). PlatfOnn Das · P/atform-Subsystem enthält generische Implementierungen oft benötigter Basisfunktionen (z.B. tor Bulfer, Stringmanipulation, File und Gonsole 110, etc.). P/atform!Unix (nur Unlx und Derivate) ln P/atform/Unix sind die P/atform-lmplementierungen tor Unix (und Derivate) zu finden. Diese umfassen z.B. File/Filesystem, Pipes, Logging, Threading und Time. Driver/Fuse (nur Unix und Derivate} Das Fuse-Subsystem enthalt eine Treiberimplementierung fOr den Zugriff auf ein TrueCrypt-Volume mittels des FUSE-Frameworks (Filesystem in USErspace), welches unter mehreren Unixderivaten zur VerfUgung steht. Dieses Framewerk kann genutzt werden, wenn die Nutzung des Linux Device Mapper nicht möglich ist (z.B. unter MacOSX mit MacFUSE). Format (nur Windows) Das Format-Subsystem stellt Routinen zum Formatieren (Erzeugen der TrueCrypt Struktur) von Partitionen unter Windows bereit, sowie die nötige GUI zum Bedienen dieser Routinen (Vo/ume Creation. Wlzard). Teile dieser Komponente benötigen erhöhte Rechte und können über Windows UAC (User Account Control) entsprechend Administratorrechte anfordern (durch Bestätigung des Benutzers). Diese Komponente kann zusatzlieh Ober ein COM Interface angesprochen werden, u.a. durch Teile des Common-Subsystems (z.B. BootEncryption). Die eigentlichen Routinen zum Formatieren des inneren Dateisystems liegen ebenfalls im Common- Subsystem und werden von Format dort aufgerufen. Seile 15 von 7'ol 2010 Vo/ume (nur Unfx und Derivate) Das Volume-Subsystem stellt eine Abstraktion eines TrueCrypt-Volumes sowie seiner Bestandteile dar und beinhaltet gleichzeitig eine Abstraktion und Implementierung der nötigen Betriebsmodi fOr die Kryptoalgorithmen (HierfOr werden die kryptagraphischen Primitive aus dem Crypto-Subsystem verwendet). Das Valurne- Subsystem verwendet Definitionen aus dem Common-Subsystem (welches die Volumeabstraktion tor Windows enthält), verwendet aber nicht dessen Implementierung. 1.1.6 Use Case Reallzatlon Vo/ume erzeugen · Über GUI oder Kommandozeile werden zunächst die nötigen Parameter der Operation festgelegt: • Dateibasiertes oder diskbasiertes Valurne Seiteie von 7-4 1 2010
VS VS NUR I=LIR CliN l)liNSTGiiEIRt.UCM • Standard- oder Hidden-Volurne (siehe Verstecktes Vo/ume erzeugen) • VerschiOsselungs- und Hashalgorithmus • Valurnegröße bei dateibasiertem Vcilume • Passwort oder zu verwendendes Keyfile • Zu verwendendes Dateisystem Unter Windows ist hier konkret die Anwendung Tcformat aus dem Format- Subsystem zuständig, unter unixartigen Systemen ist das Main-8ubsystem zuständig. Sind alle notwendigen Daten vorhanden, kann das Volume angelegt und ggf. formatiert werden. Unter Linux wird hierzu die Komponente VolumeCreator aus dem Core-Subsystem fOr .die Erzeugung ·des Volumes angesteuert. Diese Obernimmt auch die Abwicklung der notwendigen kryptagrafischen Schritte (Erzeugung des Master-Keys, Salting, Headerverschlosselung, etc.). Ist eine Formatierung gewonscht, so wird diese entweder durch die Komponente FatFormatter (far FAT) ebenfalls aus dem Core- Subsystem oder durch Methode createVolume im TextUserinterf<;lce (far ext2 u.a.) im Anschluss durchgefahrt. Unter Wlndows Obernimmt die Format-Komponente aus dem Common-Subsystem sowohl die Erzeugung als auch die Formatierung des Volumes. Die Erzeugung des Volume-Headers (inkl. der oben genannten kryptagrafischen Schritte) wird hierbei von der Valurne-Komponente im gleichen Subsystem Obemommen·. Verstecktes Vo/ume erzeugen Die notwendigen Schritte um ein verstecktes Valurne zu erzeugen sind bis auf wenige Abweichungen identisch zum vorhergehenden Kapitel 1/o/ume erzeugen: • • Der Datenteil des versteckten Volumes wird Innerhalb eines normalen Volumes erzeugt und am Ende dieses Volumes auf einen kontinuiei1iche Bereich freien Speichers abgelegt. Der Header des versteckten Volumes wird direkt hinter den Header des normalen Volumes abgelegt. Dieser Platz ist in jedem Fall :ror den versteckten Header reserviert und, .sofern kein verstecktes Volume vorhanden ist, mit Zufallsdaten gefOIIt. · • Ver1<1einerung des Dateisystems mittels der zugehörigen Wlndowsfunktion: Hierbei wird das Dateisystem soweit verkleinert, dass fOr insgesamt 4 TrueCrypt-Header (2 am Anfang und ·2 am Ende als Sicherung) Platz entsteht. Voraussetzung hierfOr ist, dass genug freier Speicher zur VerfOgung steht. Ist der Speicher so fragmentlert, dass nicht genUgend freier Speicher am Ende der Partition zur VerfOgung steht, so versucht TrueCrypt selbst, die Daten zu verschieben, bevor eine Verkleinerung vorgenommen wird. • Erzeugen des Headers im Speicher (genau wie bei der Erzeugung eines normalen Volumes) und Schreiben des Backup-Headers. Der Originai-Header wird erst nach Abschluss der gesamten Operation geschrieben .. • Umwandlung (VerschiOsselung) der Partition, beginnend am Ende. Hierzu wird in jedem Schritt ein Klartextblock gelesen, verschlOsseil und dann einen Block hinter die ursprUngliehe Position geschrieben. Wie weit die VerschlOsseJung bereits durchgefahrt wurde, wird Im Header nach jeder Blockoperation festgehalten. · Bei einem Ausfall des Systems während der Operation gehen so keinerlei Daten verloren und der Prozess kann auch nach Unterbrechung jederzeit mit den Informationen im Backup-Header wieder aufgenommen werden. • Schreiben des Headers am Anfang der Partition. Systempartition oder -festplatte verschlUssein (FDEIPBA) (nur Wlndows) Das Einrichten einer verschiOsselten Systempartition oder -festplatte wird Ober die Anwendung Tcformat aus dem Format-Subsystem gesteuert. Die tatsächliche Implementierung der einzelnen - benötigten Schritte · während des Setups implementiert die Klasse BootEncryption Im Common-Subsystem. Zunächst ist zu bemer1<en, dass im Gegensatz .zur VerschlOsseJung normaler Partitionen keine VerJdeinerung der Systempartition erfolgt, wenn diese verschlüsselt werden -soll. Der Grund hierfor ist, · dass der TrueCrypt Header nicht in die Systempartition geschrieben werden muss. . Die einzelnen Schritte, die von BootEncryption ausgefOhrt werden, sind: • Sicherung des Systembootloaders • Erzeugung des Volume-Headers im Speicher, ähnlich wie bei der Erzeugung normaler Volumes. Abweichend ist lediglich eine verringerte Rundenzahl far die PBKDF2 Key Derivation (hier werden nur 1000 statt den Obilehen 2000 Zyklen verwendet), vermutlich weil in der Pre-Boot Authentication die normale Zyklenzahl eine zu hohe Verzögerung far den Benutzer bringen WOrde. • Installation des TrueCrypt-BooUoaders (Sektoren 0 bis 62) • Installation des Volume-Headers im letzten Sektor des TrueCrypt-Bootloaders • Registrierung des TrueCrypt-Gerätetreibers als Boot-Treiber Seide Teile sind äußerlich gesehen nicht von Zufallsdaten unterscheidbar, lediglich die Headerposition des versteckten Volumes ist festgelegt. Bestehende Partition verschlUssein (nur Wlndows) Unter Wlndows können auch Partitionen 'verschiOsselt werden, die bereits Daten enthalten. Hierzu werden von der InPlace-Komponente im Format-Subsystem folgende Schritte ausgefOhrt: Seite 17 ven 7• 1 12010 NUR I=ÜR !;lEiN !;llliNSTGiiliiRAUCiol Danach wird zunächst das System neu gestartet um zu testen, ob der Bootloader korrekt arbeitet. Nach dem Systemstart wird sofort wieder TrueCrypt gestartet, Selt~~t 18 von 741 f2010
vs NUR r<ÜR CliN CI&NSTGI!IiiR'>UCtl '!S . NUR r<ÜR DII!N CI&NS:S:GII!RRO.UCW welches dann nach Bestätigung ein Signal an den TrueCrypt-Geratetreiber zum Starten der VerschiOsselung gibt. Daraufhin beginnt der TrueCrypt-Geratetrelber mit der VerschiOsselung der Systempartition bzw. -festplatte. Der eigentliche Vorgang der UmschiOsselung verläuft genau wie im vorherigen Punkt tor normale Partitionen, d.h. die VerschiOsselung wird vom Ende zum Anfang durchgetohrt und der Fortschritt wird im Header gespeichert. Volume öffnen Generell wird zum Öffnen eines Volumes zunächst aus dem Passwort (und evtl. einem bzw. mehreren Keyfiles) des Benutzers sowie dem Saft (Pialntext am Anfang des Headers) das Secret (entsprechend PKCS #5 PBKDF2) abgeleitet. Mit diesem Secret wird der erste Header des Volumes entschiOsselt. Ob diese Operation erfolgreich war, wird mittels zwei CRC32 PrOfsummen im entschlUsseilen Header OberprOft. Da weder der zu verwendende Hash tor PBKDF2, noch der kryptagrafische Algorithmus und sein Betriebsmodus bekannt sind, testet TrueCrypt alle möglichen Kombin-ationen dieser Parameter durch. Konnte der Header erfolgreich geöffnet werden und wurde die Hidden Vo/ume Profeetion als Option tor das Offlien aktiviert, so wird mit dem angegebenen Hidden Volume Passward der gesamte Vorgang (SchiOsselableitung, EntschiOsselung) fUr den zweiten Header wiederholt. War dieser Vorgang ebenfalls erfolgreich, . so wird mittels der Informationen Im Hldden Volume Header der Bereich des versteckten Volumes von TrueCrypt als schreibgeschUtzt betrachtet (was unter Windows durch den Geratetreiber und unter Linux durch den FUSE Treiber umgesetzt wird). Dann wird das geöffnete Volume zur VerfUgung gestellt (siehe Volume einhängen). Konnte im ersten Schritt der Header nicht erfolgreich entschlOsseil werden, so wird die gesamte Operation fOr den zweiten Header wiederholt Sind die Schritte fUr den zweiten Header erfolgreich, so wird das versteckte Volume geöffnet . und zur VerfUgung gestellt. Sind die Schritte ebenfalls nicht erfolgreich, so erhält der Benutzer eine Fehlermeldung. Die komplette Abfolge dieses Vorgangs ist auch in Bild 3, der Unterprozess tor die EntschiOsselung des Headers in Bild 4 beschrieben. Seite 18 von ·u ,• • • • • • • • • • Seit• 20 von 74 I 2010
Go to next pages