Boston Linux & Unix (BLU) Home | Calendar | Mail Lists | List Archives | Desktop SIG | Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings
Linux Cafe | Meeting Notes | Blog | Linux Links | Bling | About BLU

BLU Discuss list archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss] TrueCrypt with SSD

On Fri, Aug 12, 2011 at 09:30:30PM -0400, Chris O'Connell wrote:
> I bought my boss a really awesome computer and specifically wanted to use an
> SSD for the many benefits (sound, speed, power consumption).

Which one?  I compared the OCZ (and all the other SF2281-based ones)
vs. Intel 510 (marvell-based) and decided on the latter for Intel's
better stability & Q/A testing, etc. over the higher performance but
horror stories of frequent lockups and firmware issues of the SF2281

> Before encrypting the drive using trusty TrueCrypt I did a little googling.
>  I found that full disk encryption significantly decreases performance.  I
> also found on TrueCrypt's website a statement telling users who have wear
> leveling drives (using TRIM) that TC should not be used.  TC claimed that
> their program could not be guaranteed to work properly.
> Has anyone had any experience with this?  Thoughts?

Going through this myself now.  From my research (no experience yet)
TrueCrypt is correct in what they say.  The problem is that many/most
full disk encryption systems will not issue TRIM/discard for unused
blocks.  They don't want to distinguish to the lower block layers
which blocks are unused, because that would give away information
about the encrypted data (namely, which blocks have valid encrypted
data, and which are unused).  This could theoretically be used to
perform known-plaintext attacks against the encrypted data, especially
if certain filesystem structures are made apparent by the pattern of
used/unused blocks.

Secondly, most FDE systems want you to randomize the whole disk before
encrypting.  This is done to also hide which blocks are being used for
real encrypted data.  Once you do that on an SSD, however, the SSD is
fully "used" from its own perspective, so it doesn't have any empty
space with which to perform wear-leveling and parallel writing for
NAND flash longevity and performance.  There is always some "spare"
space that the SSD reserves for this purpose, but consumer SSDs don't
have as much of this spare/hidden space as enterprise SSDs.

Thirdly, with SSDs you have to worry more about "deleted" data.
Whereas on a spinning HDD you can overwrite unused or deleted data
sectors with a high degree of certainty that the data is really gone
(excepting when the drive remaps a bad sector to a spare sector), on
SSDs this is virtually impossible to achieve due to the wear-leveling
techniques in use.  Some SSDs have built-in AES encryption to mitigate
this issue, but you have to trust the vendor to get the encryption
right because none have so far opened up their systems to scrutiny by
independent labs.

These problem also exist with dm-crypt/LUKS-based encryption.  I'm
still researching to find out for sure, but I believe the basic Linux
device-mapper layers (for LVM support etc.) have support for TRIM now
in the newest kernels.  However, this hasn't made it into dm-crypt yet
for encrypted devices.  Teaching dm-crypt to TRIM would trade some of
the security for performance and longevity of SSDs.  Many who have
SSDs think this is an acceptible tradeoff and I agree with them, but
it isn't there yet.

Don't forget to align your entire block device stack (partition
beginnings, LVM offsets, LUKS offset, filesystem) with the erase-block
size of the underlying SSD.  If you don't do that, your performance
will suffer and your SSD will wear out faster.  The newest Linux
distros have the latest tools which will do this for you mostly
automatically, but it is worthwhile to check to be sure everything
came out right.

BLU is a member of BostonUserGroups
BLU is a member of BostonUserGroups
We also thank MIT for the use of their facilities.

Valid HTML 4.01! Valid CSS!

Boston Linux & Unix /