Assuming you're not running on a compromised machine and you're following common recommendations (long random passwords, etc.), who specifically (name and affiliation) asserts that TrueCrypt is secure?
migrated from unix.stackexchange.com Aug 19 '13 at 14:26
This question came from our site for users of Linux, FreeBSD and other Un*x-like operating systems.
My name is an alias, and I am a professional paranoiac.
If you start from the philosophically cynical position that every piece of technology required to produce and distribute information is potentially compromised, then you will have difficulty accepting any current successful theory of information security.
Take the simple case of a desktop computer used to type an e-mail.
What would it look like to have a secure chain from at least your fingers to your ISP?
Keyboard: self made from simple momentary push buttons
And at that point you are screwed, because any modern technology is complex enough that it must be designed by and manufactured by people unknown to you and uncontrolled by and unresponsive to you.
This requires trust.
I must trust that whoever designed and manufactured the CPU is selling a uncompromised product. I can take steps to reduce the risk that the individual CPU that I purchase is compromised, but this then requires a theory of who is capable of compromising a CPU and what would motivate her to implement such a compromise.
The modern view of risk is based on a rough social theory about who attempts to do what and for what purpose.
Intel, AMD, and ARM, and other CPU manufacturers seem to want to make money. Compromising their own product seems to be inconsistent with their profit goal. The number of individuals capable of covertly compromising a CPU such that it would introduce an vulnerability allowing them to covertly intercept your data is small. The effort required to perform such a compromise is great. The value of a individual person's e-mail is small. There are other easier ways to obtain access to a person's e-mail than CPU compromise, so most infosec professionals consider mass produced commodity CPUs to be an acceptable risk.
So the argument goes with most computer components, because as it has been shown again and again it is really much easier to compromise a person at your office, or at your ISP, or you than to pull off some amazing covert feat of technical hackery.
The answer is that no one is guaranteeing that Truecrypt is secure, but they don't have to because Truecrypt provide more evidence of honest functioning than any CPU maker, and RAM or Flash memory manufacturer, or any computer retailer.
The source code is available for inspection by anyone at any time.
You can compile a binary from the source code and compare it to precompiled binaries.
Unintentional security flaws have been discovered in the source code and fixed.
And if you are happily typing away at a café with free WiFi and some adversary is running Firesheep and intercepting your traffic, it doesn't matter if your hardware is un-compromised and Truecrypt is secure. If your OS or browser software is vulnerable, or you connect to a poorly configured WiFi router, your information is vulnerable.
Nobody asserts that "TrueCrypt is secure". However some people assert that they looked at the TrueCrypt entrails and found nothing bad about it, and are reasonably convinced that the development of TrueCrypt followed consistent and sane practices which ought to result in a product which achieves security or at least a relatively low number of vulnerabilities. That's about the best that can be hoped for in practice.
Among these people are the French government, for TrueCrypt version 6.0a. See the official report. Note that this is from 2008, for a specific version, and does not claim to be applicable to any other version.
The anonymous "TrueCrypt foundation" is. Not very reassuring, is it?
However, they have released the source code, so you can hope that someone would have found issues if there were any. As the Debian OpenSSL debacle has shown, relying on this is not a good idea. However, it is good enough to show that there are no blatant, obvious issues like there often are in proprietary solutions.
Xavier de Carné de Carnavalet, a Master's student in Information Systems Security at Concordia University, Canada, verified that the binary matches the source code, and he provided instructions how to do it yourself. This is good, because it shows that no backdoors have been added into the binary afterwards. Thus, if the code is clean, and you assume there is no backdoor in the OS or Compiler itself, then there is no backdoor. I was extremely surprised by this successful verification, as I kind of expected there to be a backdoor in the binary.
There is an attempt to audit TrueCrypt. This may produce the assertions by named persons that you want.
So, the trust situation with TrueCrypt is not perfect. However, what are you going to do? Use closed-source proprietary encryption software? Not encrypt at all?
Use TrueCrypt. Do not assume noone can break the encryption, especially since indirect attacks (cold boot, TEMPEST, pwning your machine while the key is in memory, evil maid replacing the bootloader, ...) are possible. Even if TrueCrypt has a backdoor, this is probably controlled by one organization or group of organizations. If that is the NSA and its partners, TrueCrypt still keeps you safe from everyone else. If that is the Russian Mafia, it still keeps you safe from everyone else.
TL;DR: The trust situation with TrueCrypt is not perfect, but it still is the best thing we have and good enough for most purposes.
The relative security of an encryption system is based on the encryption scheme it uses. The TrueCrypt website has a list of the ones available with some information about them. These are not unique to TrueCrypt, so you can find lots of other information about them online.
In basic terms, the strength of an encryption derives from the size of the key used. The schemes on the TrueCrypt page all use 256 bit keys. This means if someone wants to "brute force" break the encryption by trying all possible keys, there are 2^256 possible combinations. 2^256 is:
So, if the attacker can manage to test 100 combinations per second, it would take:
Years to try all the possibilities. This is why modern computerized encryption is generally considered unbreakable. However, the above is a bit idealistic: sometimes schemes end up having certain weaknesses ("backdoors"); attacks with much better chances than brute force are devised to exploit those weaknesses. AES has never been broken, but some people are always trying, and of course, if someone did, they might keep that a secret for a while. You would need very substantial resources, hardware wise, to bother trying, so this is in the realm of institutions like universities and government agencies.
Well, there are many points to consider, and I didn't quite understand your question, so I'll try to answer from what I understood:
1 - You have a trusted computer, etc., and want to use TrueCrypt, and you trust that you have a good copy of TrueCrypt, and you trust that TrueCrypt is a good, fair program:
In that case, your doubt is just if those encrypting methods (AES, Twofish, Blowfish, Serpent, whatever) are secure. Well, they are secure just as long they aren't broken. AES, for example, was chosen after a competition, where it was analyzed and some experts found it to be secure. No one can assure you, 100%, that it doesn' have a flawn. It's strengh resides on the fact that nobody knows how to crack it yet. The answer from goldilocks goes that way.
All secure methods of encryption, hashing, etc, were considered secure, until someone made some study, some trials, and saw how it could be broken.
And remember: secure means that there is no method faster than bruteforce to crack it.
2 - You have a trusted computer, etc., and want to use TrueCrypt, and you want to know if you have a good copy of TrueCrypt, since you believe that it is a good, fair program:
If you believe that Truecrypt is well built, so you download it from a trusted source (their site) and compare the checksums, so that you know that the program is not tempered.
3 - You have a trusted computer, etc., and want to use TrueCrypt, and you know that you have a good copy of Truecrypt, but you want to know if the program is secure, doesn't contain any backdoor, etc.:
You can download the sourcecode of the program, inspect it, see all datails that you find relevant, and then compile it yourself.
You won't get an assurance of security from anybody, nor should you expect one, nor should you trust such a thing if you ever found one. The security of a system is proved by how well it stands up to attack.
TrueCrypt is built on known-secure foundations, which is a step in the right direction. It's also open-source, which helps alleviate most concerns about hidden backdoors embedded in the code (compare to BitLocker).
There have also been a number of academic and government-related reviews in attempt to find flaws in the implementation or theory which have come short.
But more interesting still are the high-profile cases where well-funded governments were unable to break TrueCrypt encryption in a real-world scenario.
All of this, though, only means that TrueCrypt has been secure in the past. There is no guarantee that anything will remain secure in the future, which is why no reasonable individual or organization would dare to make such a claim.
No security isn't perfect because it's designed by humans. However if you consider security more as an inconvenience for your attacker you can start to appreciate it more. I mean look at the humble pin number, it's a 4 digit number with each number ranging from 1 - 10(0), 4 numbers separate an attacker from your money yet the vast majority of the world use these on a daily basis. But when you look at it carefully there are 10 possible numbers for every number in your pin that's allot of possible combinations, to add to that inconvenience the attacker only has 3 goes before the card locks up completely for 24 hours, imagine the attacker starts at 0000 it would a considerable amount of time simply to get to 1000. It's the same for encryption assuming your not "special" and tell people your password the increase in entropy is related to the length of your password which makes life more and more inconvenient for someone trying to get to your data.
The algorithms are there, they work so as always the weakest link is you as the user. if your password is strong the encryption is strong.
tl;dr make a decent password