[plug] Self encrypting drives
Brad Campbell
brad at fnarfbargle.com
Fri Jan 20 15:54:26 AWST 2017
G'day all,
I run (ran) LUKS/dm-crypt on all my data drives, swap and basically
anything other than boot/root on all my machines.
The 6 year old root SSD on my desktop started to crap out yesterday, so
I replaced both root and home drives with a pair of new Samsung 850's.
These shiny new drives support SED, so I thought I'd have a crack at
replacing dm-crypt on the home drive with SED, and I thought it might be
of interest so I made some notes.
My machines are relatively archaic, so I couldn't get sedutil to compile
from source because of way out of date header files. I didn't actually
try very hard, I just used their pre-compiled cli binary.
Because I'm only encrypting a data drive I don't need the pre-boot
environment or any of that complexity. Nor do I need this to come up in
the initramfs.
I set the drive up with --initialsetup, then enabled encryption with
--enableLockingRange 0. I thought I'd be clever and not bother enabling
the fake MBR as I didn't need the PBE. *Big* mistake. Booting a kernel
with a locked drive that does not have the MBR enabled spends about 30
seconds spewing ATA errors into the logs as it tries over and over again
to read the MBR. This is not a trickle, rather a continuous blast.
So, *always* enable the fake mbr (--setMBREnable on) when you encrypt
the drive.
To unlock the disk, I've created a little initscript that runs very
early in the boot process that basically contains the following (excuse
the gross bash) :
SEDU=/usr/local/bin/sedutil-cli
do_start () {
for i in `$SEDU --scan | awk '{print $1}' | grep '/dev/'` ; do
if [ -n "`$SEDU --query $i | grep 'Locked = Y'`" ] ; then
echo $i Locked
if [ -z "$KEY" ] ; then
KEY=`get-key-script`
fi;
$SEDU --setlockingrange 0 rw $KEY $i
$SEDU --setMBRDone on $KEY $i
/sbin/blockdev --rereadpt $i
else
echo $i Already Unlocked
fi;
done;
}
This uses sedutil to get a list of all drives that support SED, it then
iterates them to see if any are locked and if so it proceeds to unlock
them. No point trying to unlock an already unlocked drive, and as I
rarely power cycle my machines on most boots they'll already be unlocked.
It's important to re-read the partition table after unlocking and
swapping the MBRs.
The only thing this loses over using dm-crypt is the machine is now
susceptible to power-on attacks. So you can soft-boot it into another OS
and get access to the disk. For my particular threat model that's not an
issue. I'm more worried by someone breaking in and walking away with the
box, and if they do that I'm covered.
Encrypting the drive is really just enabling the locking and setting a
key, so there is no data loss or other interaction required with the disk.
Regards,
Brad
More information about the plug
mailing list