When I create a VeraCrypt file container using the GUI, it displays a warning whenever I type in a password under a given number of characters. I was wondering just how insecure, in practical terms, such a method of encryption really is.

To give a concrete example, suppose:

  • I have a 4 GB VeraCrypt-generated container on a USB drive.
  • The password for said container consists of 9 lower case letters, from the standard English 26 letter alphabet.
  • Within said container are a dozen or so files, ranging from a few bytes to a few hundred megabytes in size.
  • The USB drive in question falls into the hands of a party hostile to me.
  • Other than the contents of the USB drive described above, this hostile party has no knowledge of how the container is encrypted.

How much trouble will that hostile party have in decrypting my container? Could an intelligent and motivated, but otherwise quite ordinary, programmer with a mid-range laptop do it, or would he have to call in the CIA, etc?

  • $\begingroup$ the container has, if I remember correctly, a well known structure and if an attacker wants to decrypt it it will probably try to recover the key with a dictionary attack on the password. Weaker the password, easier the attack. $\endgroup$ – ddddavidee May 27 at 9:25

9 lower case letters with standard English alphabet make around 40-bit direct search this is very low password entropy. This is quite achievable even you use high iteration numbers like 200000 iterations for the HMAC-SHA-256. 200000 makes $\approx 2^{18}$ so in total $\approx 2^{58}$

Even public laboratories in the USA, like Oak Ridge Summit, can achieve this;

  • The super computer Summit can reach $\approx 2^{63}$ SHA-1 hashes around one hour, $\approx 2^{72}$ hashes in one year.

Actually there are two recommendations for you

  1. Use diceware based passwords. EFF has a very decent page about this. This is a very good method to generate strong passwords that one can easily remember. With 8 words one can reach the 96 bits password entropy. A small list;

    • 7 words have 80 bits
    • 8 words have 96 bits
    • 9 words have 128 bits password entropy.
  2. Use the hidden volume in VeraCrypt. The hidden volume is created under a VeraCrypt volume that is indistinguishable from the free space of VeraCrypt volume since the free space in VeraCrypt is random, not zero, or FF. Keep in mind that, you must use a different password for this hidden volume.

    An important aspect of the hidden volume is the plausible deniability. One can give the key of the outer VeraCrypt volume as honesty and keep the hidden volume key for themself. Since the hidden volume is indistinguishable from the free space it is not noticeable.

    Note that as pointed by Mark, a forensic analysis can reveal the hidden volume. It is not perfect yet.

| improve this answer | |
  • 2
    $\begingroup$ The default should be enough with a good entropy password. It can be used to measure the brute-force time. $\endgroup$ – kelalaka May 27 at 14:21
  • 2
    $\begingroup$ First off all, hashing is not encryption. You download can use hashcat to measure your pc time. $\endgroup$ – kelalaka May 27 at 15:16
  • 1
    $\begingroup$ @chancellorofpaphos Yes, my mistake. Corrected, thanks $\endgroup$ – kelalaka May 27 at 15:23
  • 3
    $\begingroup$ Yes, approx. I'm not claiming that I'm clever than anybody :) $\endgroup$ – kelalaka May 27 at 16:07
  • 2
    $\begingroup$ Downvoting for the bit about the hidden volume. The TrueCrypt/VeraCrypt hidden-volume functionality only provides plausible deniability if your adversary is a mathematician. If instead you're facing a data forensics expert, the hidden volume sticks out like a sore thumb. $\endgroup$ – Mark May 27 at 19:44

Obviously using such a short password is bad. However, you may possibly benefit from security-by-obscurity here. If the attacker has no knowledge of the password and the data doesn't seem valuable at first you have a pretty good chance of them not trying BF attacks at all.

| improve this answer | |
  • $\begingroup$ Is there anything about the file itself that would give away the fact that it was a TrueCrypt/VeraCrypt container? Is such knowledge necessary in order to break the encryption? $\endgroup$ – chancellorofpaphos May 27 at 23:15
  • 1
    $\begingroup$ First of all, there's nothing hinting for password length. Also, the design choices within TC original code make sure there's no unique signature to tell with 100% confidence a file is a container. However, 50GB of random file without any recognizable signature gives out a strong suggestion of being an encrypted volume. There also other techniques: raedts.biz/forensics/detecting-truecrypt-veracrypt-volumes $\endgroup$ – kiler129 May 28 at 0:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.