# VeraCrypt

VeraCrypt ist eine kostenlose quelloffene Software zur Datenverschlüsselung, insbesondere zur vollständigen oder partiellen Verschlüsselung von Festplatten und Wechseldatenträgern. VeraCrypt erschien erstmals 2013 als Abspaltung von TrueCrypt und ist teilweise dazu kompatibel. Größere Bekanntheit erhielt das Projekt durch das unerwartete Ende der Entwicklung TrueCrypts.

## Sicherheit

Der Vorgänger TrueCrypt wurde in der Version 7.1a, auf der VeraCrypt basiert, einer Auditierung unterzogen und zunächst als relativ fehlerarm bewertet. Eine unabhängige Sichtung des Quelltextes der Version 1.18 von VeraCrypt fand im Jahr 2016 statt. Durchgeführt wurde diese vom Unternehmen Quarkslab in Zusammenarbeit mit der Initiative Ostif. Während der Vorbereitungen wurde die Meldung herausgegeben, das Audit würde womöglich sabotiert, da E-Mails zwischen den Parteien ihr Ziel nicht erreicht hätten. Später wurde ein falsch konfiguriertes E-Mail-Programm vermutet und die Veröffentlichung dieser Probleme als Fehler bezeichnet.
Im August 2016 wurde vorab ein schwerwiegender Fehler bestätigt, der sowohl in True- als auch VeraCrypt das Erkennen von versteckten Containern (Hidden Volumes) ermöglicht und somit den Schutz des Benutzers durch die glaubhafte Abstreitbarkeit aufhebt. Eine Lösung floss in die Version 1.18a von VeraCrypt ein, allerdings mussten Benutzer ihre vorhandenen Containerdateien erneuern.
Der endgültige Bericht legte zahlreiche Programmierfehler offen. Einige davon flossen erst nach der Abspaltung von TrueCrypt ein – andere wurden bereits bei der früheren Auditierung festgestellt und nicht behoben. So wurde die Verwendung einer bekannt fehlerhaften Version der Programmbibliothek zlib aus dem Jahre 1998 bemängelt, insbesondere da TrueCrypt seinerseits bereits eine modernere Variante nutzte. Passwörter werden im Zusammenspiel mit einer Komplett-Verschlüsselung der Systempartition gar nicht oder nur unzureichend im Arbeitsspeicher überschrieben, sodass sich zumindest die Länge des Passworts auslesen lässt. Des Weiteren wurde der neu hinzugefügte Algorithmus „GOST 28147-89“ auf unsichere Art angewandt.
Die kritischen, in Version 1.18 vorhandenen Fehler wurden mit der Version 1.19 korrigiert.
VeraCrypt ist auch für generelle, softwarebasierte Festplattenverschlüsselungsmethoden betreffende Angriffe anfällig. Da der zum Entschlüsseln benötigte Schlüssel im Arbeitsspeicher des Computers gespeichert wird, ist bei Zugriff auf die genutzte Hardware eine Kaltstartattacke möglich. Passwörter können durch Malware oder hardwareseitige Kompromittierungen des Systems wie Hardware-Keylogger abgefangen werden, die Verwendung von Schlüsseldateien kann diese Angriffsmethode jedoch erschweren.
In einer erst im Dezember 2019 veröffentlichten Sicherheitsuntersuchung der Vorgängersoftware TrueCrypt aus dem Jahr 2010 durch das Bundesamt für Sicherheit in der Informationstechnik (BSI) wurden zahlreiche als sicherheitsrelevant eingestufte Fehler aufgeführt, von denen viele auch in der zur Zeit der Veröffentlichung aktuellen VeraCrypt-Version (1.24 vom 6. Oktober 2019) noch enthalten gewesen seien. Allerdings sei keine der Schwachstellen einzeln betrachtet dramatisch und es wurden einige der Fehler umgehend behoben.
Das Bundesamt für Sicherheit in der Informationstechnik (BSI) gab ein Sicherheits-Audit für VeraCrypt beim Fraunhofer-Institut für Sichere Informationstechnologie (SIT) in Auftrag und veröffentlichte 2020 eine Zusammenfassung der Untersuchungsergebnisse. Das BSI und das Fraunhofer SIT schlussfolgern darin, dass keine substantiellen Sicherheitsprobleme gefunden wurden, solange das verschlüsselte Volume nicht im Betriebssystem eingebunden ist. Ein eingebundenes Volume hingegen ermögliche Angriffsvektoren auf das Betriebssystem. Die angewandten Entwicklungsprozesse und daraus folgende Codequalität gäben Anlass zur Sorge, sodass VeraCrypt nicht für sensible Daten und Personen oder Anwendungen mit hohen Sicherheitsanforderungen empfohlen werden könne. Das Fraunhofer SIT fasste die Ergebnisse unter der Überschrift „VeraCrypt mit leichten Mängeln“ zusammen.

## Funktionen
### Kompatibilität zu TrueCrypt

VeraCrypt ist in weiten Teilen zu TrueCrypt kompatibel. Dementsprechend ermöglicht das Programm, mit Hilfe eines Kompatibilitätsmodus bereits existierende TrueCrypt-Container zu entschlüsseln. Weiterhin lassen sich viele der Funktionen des TrueCrypt-Derivates auch in dessen Wurzel finden. Jedoch sind viele der von den VeraCrypt-Entwicklern implementierten Verbesserungen nur in dem veracrypteigenen Containerformat nutzbar. Daher empfehlen die Herausgeber von VeraCrypt, auf dessen eigenes Format zu migrieren. Seit Version 1.26.7 (1. Oktober 2023) ist VeraCrypt nicht mehr zu TrueCrypt kompatibel, TrueCrypt-Volumes können nicht mehr geöffnet werden.

### Verschlüsselungsmöglichkeiten

VeraCrypt bietet die Möglichkeit, gesamte Systeme, einzelne Partitionen oder sogenannte Container zu verschlüsseln. Bei letzterem handelt es sich um spezielle Dateien mit fester Größe, die nach dem Entschlüsseln wie virtuelle Laufwerke behandelt werden. Als Verschlüsselungsmodus wird XTS-AES genutzt.

### Algorithmen

Als Verschlüsselungs-Algorithmen stehen AES, Serpent, Twofish, Camellia und Kuznyechik zur Verfügung. Die Auswahlmöglichkeiten und die theoretische Stärke der Verschlüsselung werden jedoch dadurch erhöht, dass die Algorithmen AES, Serpent und Twofish miteinander in Kaskaden kombinierbar sind.
Temporär war auch die Blockchiffre Magma (definiert im russischen Standard GOST 28147-89) verfügbar. Diese Verschlüsselung wurde jedoch mit Version 1.19 nach einem Sicherheitsaudit (VeraCrypt 1.18 Security Assessment) entfernt, da Magma inzwischen als kryptographisch schwach gilt.
Für die kryptologischen Hash-Werte stehen SHA-256, SHA-512, Streebog, RIPEMD-160 und Whirlpool zur Verfügung. Beginnend mit VeraCrypt 1.0f ließen sich keine neuen Container mehr mit der veralteten Hashfunktion RIPEMD-160 anlegen, die Erstellung von Systempartitionen hingegen wird damit noch unterstützt.

### Personal Iterations Multiplier

Unter dem Personal Iterations Multiplier (PIM) verstehen die Entwickler von VeraCrypt eine mit Version 1.12 eingeführte Möglichkeit, die Anzahl der Verschlüsselungs-Iterationen zu verändern.
Der 512 Byte große Header eines Containers enthält unter anderem den Hauptschlüssel, mit dessen Hilfe sich der Container entschlüsseln lässt. Damit für potentielle Angreifer das Erraten dieses Schlüssels durch Ausprobieren (Brute-Force-Methode) erschwert wird, werden die Hash-Funktionen zum Erstellen des Headers mehrfach aufgerufen. Die Entwickler von VeraCrypt entschieden sich, die Anzahl dieser Iterationen von etwa 1000 deutlich zu erhöhen. So werden mit RIPEMD-160 bei einer vollständigen Systemverschlüsselung bis zu 327.661 Iterationen durchgeführt, bei Standard-Containern und einfachen Partitionen können es sogar bis zu 655.331 werden.
Hierdurch wird zwar die theoretische Sicherheit deutlich erhöht, jedoch steigt auch die zum Entschlüsseln notwendige Zeit an. Die für den Dateizugriff notwendige Zeit bleibt jedoch unverändert. Daher ermöglicht es VeraCrypt den Anwendern, die Anzahl der Iterationen zu variieren. Das Schema zur Berechnung der Iterationen lautet für Systempartitionen PIM × 2048, während es bei den restlichen Nutzungsmöglichkeiten 15000 + (PIM × 1000) beträgt. Der Wert des PIM muss jedes Mal für das Entsperren mit angegeben werden.
Aus Sicherheitsgründen wird eine sehr geringe Anzahl an Iterationen nur bei langen Passwörtern mit über 20 Zeichen ermöglicht.

### Glaubhafte Abstreitbarkeit

Wie das Vorbild TrueCrypt ermöglicht VeraCrypt den Benutzern glaubhafte Abstreitbarkeit. Dies wird durch sogenannte hidden volumes (deutsch: versteckte Container) umgesetzt.
Hierunter wird ein innerhalb eines anderen Containers verstecktes, virtuelles Laufwerk verstanden, das mit Hilfe eines separaten Passwortes entsperrt werden muss. Standardmäßig wird freier Speicherplatz eines regulären Containers mit zufälligen Daten aufgefüllt. In diesem freien Bereich wird von VeraCrypt der etwaige versteckte Container gespeichert. Für einen außenstehenden Betrachter ist nicht erkennbar, ob es sich bei einem Bereich eines Containers um überschriebenen freien Speicherplatz oder einen versteckten Container handelt.
Der äußere und der darin versteckte Container sind jeweils mit einem separaten Passwort zugänglich. Je nachdem, welches der beiden Passwörter eingegeben wird, wird der jeweilige Container entsperrt. Hierdurch können Anwender, wenn sie beispielsweise von den Behörden zur Herausgabe des Passwortes aufgefordert werden, weniger sensible Daten durch Eintippen des Passwortes für den äußeren Container preisgeben, ohne dass hierdurch die sensibleren Daten im versteckten Container erkennbar werden. Da für einen Angreifer nicht erkennbar ist, dass ein versteckter Container genutzt wurde, bleiben hierdurch die Daten geschützt.

## Leistung

VeraCrypt unterstützt die parallelisierte Verschlüsselung für Multicore-Systeme und, unter Microsoft Windows, die sogenannten pipelined Lese- und Schreibanfragen (eine Form von asynchroner Berechnung) um die Leistung von Verschlüsselung und Entschlüsselung zu optimieren. CPUs, welche AES-NI unterstützen, können mit VeraCrypt den Algorithmus AES mit Hardware-Beschleunigung verwenden, was die Leistung vergrößert. Für 64-Bit-CPUs wurde VeraCrypt hinsichtlich Twofish und Camellia optimiert.