VeraCrypt


VeraCrypt is a source-available freeware utility used for on-the-fly encryption. It can create a virtual encrypted disk within a file or encrypt a partition or the entire storage device with pre-boot authentication.
VeraCrypt is a fork of the discontinued TrueCrypt project. It was initially released on 22 June 2013 and produced its latest release on 6 October 2019. Many security improvements have been implemented and issues raised by TrueCrypt code audits have been fixed. VeraCrypt includes optimized implementations of cryptographic hash functions and ciphers which boost performance on modern CPUs.

License and source model

VeraCrypt inherited a substantial amount of code from its predecessor TrueCrypt, and also inherited the source-available TrueCrypt License for those files. This license is not one of many widely used open-source licenses and is not a free software license according to the Free Software Foundation license list, as it contains distribution and copyright-liability restrictions.
New parts of VeraCrypt have been licensed under the Apache License 2.0 since version 1.19.

Encryption scheme

Algorithms

Individual ciphers supported by VeraCrypt are AES, Serpent, Twofish, Camellia, and Kuznyechik. The Magma cipher was removed in version 1.19 in response to a security audit. Additionally, ten different combinations of cascaded algorithms are available: AES–Twofish, AES–Twofish–Serpent, Camellia–Kuznyechik, Camellia–Serpent, Kuznyechik–AES, Kuznyechik–Serpent–Camellia, Kuznyechik–Twofish, Serpent–AES, Serpent–Twofish–AES, and Twofish–Serpent. The cryptographic hash functions available for use in VeraCrypt are RIPEMD-160, SHA-256, SHA-512, Streebog and Whirlpool.

Modes of operation

VeraCrypt uses the XTS mode of operation.

Keys

The header key and the secondary header key are generated using PBKDF2 with a 512-bit salt and 200,000 to 655,331 iterations used by default, depending on the underlying hash function used.

Plausible deniability

As with its predecessor TrueCrypt, VeraCrypt supports plausible deniability by allowing a single "hidden volume" to be created within another volume. In addition, the Windows versions of VeraCrypt have the ability to create and run a hidden encrypted operating system whose existence may be denied.
The VeraCrypt documentation lists many ways in which VeraCrypt's hidden volume deniability features may be compromised and possible ways to avoid this.

Performance

VeraCrypt supports parallelized encryption for multi-core systems and, under Microsoft Windows, pipelined read and write operations to reduce the performance hit of encryption and decryption. On processors supporting the AES-NI instruction set, VeraCrypt supports hardware-accelerated AES to further improve performance. On 64-bit CPUs VeraCrypt uses optimized assembly implementation of Twofish and Camellia.

Security improvements

An audit of version 1.18 was conducted by QuarksLab on behalf of the Open Source Technology Improvement Fund, which took 32 man-days and was published on 17 October 2016. The major vulnerabilities identified in this audit were resolved in version 1.19, released the same day.

Security precautions

There are several kinds of attacks that all software-based disk encryption is vulnerable to. As with TrueCrypt, the VeraCrypt documentation instructs users to follow various security precautions to mitigate these attacks, several of which are detailed below.

Encryption keys stored in memory

VeraCrypt stores its keys in RAM; on some personal computers DRAM will maintain its contents for several seconds after power is cut. Even if there is some degradation in the memory contents, various algorithms may be able to recover the keys. This method, known as a cold boot attack, was successfully used to attack a file system protected by TrueCrypt versions 4.3a and 5.0a in 2008. With version 1.24, VeraCrypt added the option of encrypting the in-RAM keys and passwords on 64-bit Windows systems, with a CPU overhead of less than 10%, and the option of erasing all encryption keys from memory when a new device is connected.

Physical security

VeraCrypt documentation states that VeraCrypt is unable to secure data on a computer if an attacker physically accessed it and VeraCrypt is then used on the compromised computer by the user again. This does not affect the common case of a stolen, lost, or confiscated computer. The attacker having physical access to a computer can, for example, install a hardware or a software keylogger, a bus-mastering device capturing memory or install any other malicious hardware or software, allowing the attacker to capture unencrypted data or to decrypt encrypted data using captured passwords or encryption keys. Therefore, physical security is a basic premise of a secure system. Attacks such as this are often called "evil maid attacks".

Malware

Some kinds of malware are designed to log keystrokes, including typed passwords, that may then be sent to the attacker over the Internet or saved to an unencrypted local drive from which the attacker might be able to read it later, when they gain physical access to the computer.

Trusted Platform Module

The FAQ section of the VeraCrypt website states that the Trusted Platform Module cannot be relied upon for security, because if the attacker has physical or administrative access to a computer and it is used afterwards, the computer could have been modified by the attacker: e.g. a malicious component – such as a hardware keystroke logger – could have been used to capture the password or other sensitive information. Since the TPM does not prevent an attacker from maliciously modifying the computer, VeraCrypt does not and will not support TPM.