I am using a non-SSD drive: Western Digital Black 1TB. Windows XP (please don't judge why I'm still using XP).
OK, I won't judge, but I will say that Windows XP (or any other equally vulnerable operating system) will only provide you with data at rest security. That is, when the system is powered off, the encryption is as secure as the underlying encryption and the key. An attacker with physical or network access to the computer can violate integrity and confidentiality without needing to break the encryption itself.
Q1. If I were to create a system partition drive C: and 2-3 non-system partition drives D:, E:, F:, etc. using a good password, is my data pretty much secure as long as nobody knows my password? Are there any flaws in my Truecrypt Security Setup? It shouldn't be less secure than "Whole Disk Encryption" since we are encrypting every partition?
If you define secure as providing data at rest security, then yes, it is as secure as your password. Do note that the presence of a hidden volume may be revealed due to a bug in TrueCrypt. Of course, even if you encrypt every partition, the bootloader itself still must be unencrypted. This makes it vulnerable to "evil maid attacks", where someone with the ability to write to privileged locations on the disk replaces the bootloader with a malicious version to steal your password. This requires the attacker have, e.g., physical or privileged local access, and it will only violate confidentiality at the next reboot. Assuming no one has tampered with your disk and your password is strong, it is secure.
Q2. If I had a weak password, and changed my password to a more secure password, is my data still secure? (As long as any "adversary" doesn't have the original TC Rescue disk or copy of your original Volume)
Yes it is. The way TrueCrypt (and many other disk encryption utilities that encrypt large amounts of data) work is by creating a master key and encrypting the drive with it. This master key is generated completely randomly and is not influenced by your password choice. The master key is then encrypted with your password, and the encrypted master key is stored on the disk. If your password is weak, it becomes easier to decrypt the master key, and then use it to decrypt the rest of the drive. When you change your password, you are not changing the master key itself. Rather, you are decrypting it with your weak password, then re-encrypting it with your new, strong password. The newly-encrypted master key is written over the previous, weakly-encrypted master key, making it unrecoverable. As long as no copies of this previous, weakly-encrypted master key are recoverable (through the recovery disk as you mentioned, or through SSD wear leveling), it cannot be retrieved.
Q3. SSD drives, I believe, are different because if you were to write data on the SSD drive BEFORE you created an encrypted partition, that data may possibly be retrieved. However, if you created encrypted partitions first, and wrote data to your encrypted SSD partitions AFTER they've been encrypted, is the data safe as long as nobody has the password?
The thing that makes SSDs a bit strange for encryption is wear leveling, which makes it impossible to intentionally overwrite specific data. The SSD's internal controller manages all writes and does not let the operating system control it directly. While you are correct in that there is no issue with writing to an encrypted partition on an SSD, the real issue is different. There are two issues, actually:
- Wear leveling prevents the operating system from overwriting specific data, causing previously-written contents to persist. This can be an issue if you set a weak password and later switch to a stronger one. The VeraCrypt documentation explains this. TRIM, if enabled, is a way to tell the SSD controller to securely overwrite and zero sectors that are no longer in use.
- TRIM can reveal to an observer what sectors are unused. This is unfortunate because TRIM can make the former issue less problematic. TRIM is designed to improve performance and allows secure deletion of unused data. While not an obvious issue (after all, the used sectors are still encrypted, and the unused ones are just zeros), it does give away the structure of your filesystem. This is described more in an excellent blog post.
Do I have to Turn on AES-NI? or is it default? so am I secure with default CPU settings or do I have to do something
AES-NI is a set of CPU instructions for doing AES encryption in hardware. It is designed to improve the performance of encryption, but it also has the benefit of creating side-channel resistance. A side-channel attack against AES is usually a cache attack. This involves running a malicious program on your computer that listens very closely to nanosecond-level delays when accessing data in the CPU cache in clever ways to determine what the AES key is. AES-NI prevents this by not using the cache. Since you say you are using Windows XP, you hopefully are not in a situation where a malicious process is in the position to run on your computer, or it has far better ways to get your key than a side-channel attack. In other words, a side-channel attack is an active attack against running encryption, but it cannot violate data at rest security.
TrueCrypt will use AES-NI by default if it is available.
I'm also switching to VeraCrypt but I don't know how secure it is in terms of TRUST and REPUTATION in comparison to Truecrypt (which is very trustworthy in my opinion)
It is based directly off of TrueCrypt and, like the former, has been audited. The source code is entirely open source. While some design decisions it has made are, in my opinion, kind of silly, the core of VeraCrypt is both secure and trustworthy. Continuing to use TrueCrypt opens you up to several unfixed issues which, of course, were not fixed since there are no more developers to fix them. This includes code execution vulnerabilities and some minor weaknesses in the crypto (bad random number generation, for example). Additionally, TrueCrypt uses a very low number of PBKDF2 iterations (usually 1000). Each iteration makes it harder to crack a password by making it take longer to derive the key from the plain password. VeraCrypt uses a variable number of iterations, often exceeding 100,000. For a very strong password, this does not matter.
To summarize, you are using a non-SSD drive on an insecure operating system but are using a strong password. This provides you with data at rest security. No one, should they get their hands on your disk, will be able to decrypt the contents without the password. The only way they could obtain the password is by attacking your computer with malware or exploits, or by tampering with your disk so that, next time you boot it up, you boot into a malicious bootloader. As long as your threat model only cares about data at rest security (e.g. you're using this on an airgapped PC), you should be fine.