Encryption Scheme When mounting a TrueCrypt volume (assume there are no cached passwords/keyfiles) or when
performing pre-boot authentication, the following steps are performed:
1.
The first 512 bytes of the volume (i.e., the standard volume header) are read into RAM, out
of which the first 64 bytes are the salt (see
TrueCrypt Volume Format Specification ). For
system encryption (see the chapter
System Encryption ), the last 512 bytes of the first logical
drive track are read into RAM (the TrueCrypt Boot Loader is stored in the first track of the
system drive and/or on the TrueCrypt Rescue Disk).
2.
Bytes 65536–66047 of the volume are read into RAM (see the section
TrueCrypt Volume Format Specification ). For system encryption, bytes 65536–66047 of the first partition
located behind the active partition
*
are read (see the section
Hidden Operating System ). If
there is a hidden volume within this volume (or within the partition behind the boot
partition), we have read its header at this point; otherwise, we have just read random data
(whether or not there is a hidden volume within it has to be determined by attempting to
decrypt this data; for more information see the section
Hidden Volume ).
3.
Now TrueCrypt attempts to decrypt the standard volume header read in (1). All data used
and generated in the course of the process of decryption are kept in RAM (TrueCrypt never
saves them to disk). The following parameters are unknown
†
and have to be determined
through the process of trial and error (i.e., by testing all possible combinations of the
following):
a.
PRF used by the header key derivation function (as specified in PKCS #5 v2.0; see
the section
Header Key Derivation, Salt, and Iteration Count ), which can be one of
the following:
HMAC-SHA-512, HMAC-RIPEMD-160, HMAC-Whirlpool.
A password entered by the user (to which one or more keyfiles may have been
applied – see the section
Keyfiles ) and the salt read in (1) are passed to the header
key derivation function, which produces a sequence of values (see the section
Header Key Derivation, Salt, and Iteration Count ) from which the header encryption
key and secondary header key (XTS mode) are formed. (These keys are used to
decrypt the volume header.)
b.
Encryption algorithm: AES-256, Serpent, Twofish, AES-Serpent, AES-Twofish-
Serpent, etc.
c.
Mode of operation: XTS, LRW (
deprecated/legacy ), CBC (
deprecated/legacy )
d.
Key size(s)
*
If the size of the active partition is less than 256 MB, then the data is read from the
second