Truecrypt 7.0a FDE on SSD

I always wanted to encrypt my laptop disks, however the performance impact with software AES on 2.5″ HDDs is just too significant to ignore.  Recently, I bought a laptop with an i5 580M (with AES-NI), coupled with a 120GB G.SKILL Phoenix Pro SSD (SF-1200).  On the i5 580M, Truecrypt can get over 1GB/s with AES-NI, and it supports SSD TRIM commands.  I thought I can finally have FDE without a noticeable performance penalty.

Well, I was wrong.  It turns out FDE and SSD do not mix, and not just because of performance issues.  But first, some benchmarks.

The unencrypted throughput seems consistent with other SF-1200 drives when processing incompressible data.  The throughput of the encrypted drive is noticeable lower, especially for 4K operations.  Applications do launch faster on an unencrypted disk by a few seconds, but it is still much better than platter drives and definitely usable.

The bigger problem is that encrypting the whole drive is essentially equal to completely filling the drive with data, a no-no on flash devices.  Because all the empty sectors are still encrypted (and written to the SSD), there are no blocks left for wear leveling (except the reserve blocks), and TRIM is essentially useless until you start deleting a large amount of data.  To confirm this, I formatted the drive (so now it is “empty” and unencrypted), and reran the benchmarks.  The read speeds were back to pre-encryption levels, but the write speeds stayed low.

Anecdotal evidences suggest that if an unencrypted partition is left on the drive, then wear leveling and TRIM will have more resources to work with, and therefore increase the SSD’s performance and extend its lifespan.  But with a 120GB SSD, every gigabyte is precious, and wear leveling still has significantly less resources.

The last problem with FDE is specific to Sandforce drives.  Sandforce controllers compress data before writes, which increases both the speed and reliability of the SSD.  Encryption makes compression impossible, making encrypted SSDs even slower than benchmarks would suggest.

Unfortunately all of these cons out weight the security benefits of FDE compared to encrypted containers.  I guess I’ll have to wait few more years for FDE and SSD to mature.

17 Responses to “Truecrypt 7.0a FDE on SSD”

  1. Mike Says:

    Thanks for sharing, just the information I was searching for. Too bad about your conclusions. Peace!

    • Siyu Zhang Says:

      Since that post I’ve actually moved to a setup of 30GB encrypted partition, 80GB unencrypted, 10GB unallocated. It seems to fix the write penalty for sequential data. The 4KB penalties are about the same but only on the encrypted partition. I only encrypt the OS and some small programs (browsers) and user sensitive data.

  2. Mike Says:

    Are you sure it is really secure to only encrypt a partition of the SSD? “Due to security reasons, we recommend that TrueCrypt volumes are not created/stored on devices (or in file systems) that utilize a wear-leveling mechanism (and that TrueCrypt is not used to encrypt any portions of such devices or filesystems).” http://www.truecrypt.org/docs/?s=wear-leveling

    • Siyu Zhang Says:

      Wear leveling means when you overwrite a file, it might not be overwritten on disk. If it is already encrypted, there is no problem.

      Encrypting only one partition does have its risks, but if you are careful not to install applications that save private data on the unencrypted partition, and use symlinks when required to move large files onto the data partition, it’s more than secure enough.

      There are much weaker chains than encryption guarding your information. I mainly view encryption as a way to prevent nosy thieves from gaining access to my personal information.

  3. Daniel Says:

    Hmm, what would just encrypted single files/folders? Ie, encrypting all of \windows and your user directory? (and possibly Program files)

    (As well as your swap file, possibly. Or just disable it)

    Just wondering what performance difference you’d see with file/folder encryption instead of FDE/partitions?

    Was thinking of getting a new SF-2500 when it comes out once I build my Z68/67 sandy bridge box!

    • Siyu Zhang Says:

      If you’re encrypting that much stuff (user/program/windows files), you might just well carve out a whole partition to encrypt. The performance penalty will be just as bad if not worse. TRIM might have more space to work with, but you’ll be past the region of diminishing returns.

  4. Lee Says:

    How does the overall “response” of your system feel, using the encrypted 30GB partition, as compared to a totally unencrypted system?

    I was planning to partition 20GB for W7 (using 7customizer to slim the installation, remove pagefile, etc) and encrypt it, while leaving the remainder of the 120GB SSD drive for programs and games – unencrypted.

    Would my large unencrypted partition perform at full SSD speed? (which is where all my applications, except browsers, would be installed)

    • Siyu Zhang Says:

      I have to say I don’t really notice a difference. Windows 7 is pretty well optimized regarding disk I/O.

      I haven’t noticed any performance penalty on the unencrypted drive.

      • Lee Says:

        Thank you for the blog and response. Would it be sensible to conclude your benchmarks for your unencrypted partition (D:) score similar to a totally unencrypted drive?

        I was also wondering how important is that 10GB unallocated section you’re using. What is this for? My plan was 20GB and the rest partitioned to (D:), do you suggest against this?

      • Siyu Zhang Says:

        As far as I know, the benchmarks scores are about the same. The 10GB (well, 7GB now) is a buffer, like the 8GB already reserved by the manufacturer. I read somewhere that after 15GB of reserved space you reach diminishing returns regarding TRIM. But the 8GB already reserved is probably enough.

  5. jay Says:

    Would it have helped to use Truecrypt’s Quick Format option, which does not fill the entire disk with random data? The only downside of the Quick Format, as I understand, is that a snoop can see how much of the disk you’ve used — a non-issue for me.

    • Siyu Zhang Says:

      I don’t think that was an option when I tried it, but it should give you the same performance as a small encrypted partition. You are giving up quite a bit of security to do so (*), but as a precaution against nosy thieves it should be more than good enough.

      * A large portion of data that was on the disk before encryption might still be there unencrypted due to wear-leveling, which means if by some strange occurrence your encryption password got dumped to the page file (it is suppose to be locked, but you’d never know) or hibernation file, it is possible that after encryption, your password will still exists in plaintext on the SSD until TRIM manages to clear those sectors.

  6. Matti Says:

    Hi,

    excellent article! Just a question, if I were to do a full disk encryption with truecrypt 7.0a and then delete a partition to free disk space, would the wear-levelling then be able to utilize this free space? And if so, do you think 5-10% is enough for effective wear levelling?

    Thanks in advance!

    Best regards,

    Matti

    • Siyu Zhang Says:

      If the operating system supports TRIM, it should notify the disk that the sector’s are freed. 5-10% is plenty of wear-leveling especially when you consider the space manufacturers reserved already.

      • Matti Says:

        Excellent, thanks! I am running Win7 professional, so that should be ok… Thanks again for the information!

        Best regards,

        Matti

  7. CoolHandLuke Says:

    How would you restore the write speeds back to pre-full disk encryption?


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.