Legal Disclaimer

"...For Dummies" is a registered trademark of Wiley Publishing, Inc. Wiley has not given authorization for this title, nor is it associated in any way with the Wiley (nee IDG Books, nee Hungry Minds) series "... for Dummies."

February 27, 2007

Use the --force, LUKS

Yet Another Project at Work has become very interesting, indeed. My favoritest times in college were programming. Kernel programming, specifically. What I like to dub my master's design thesis was a novel take on encrypted filesystems. Myself and my friends Divyakaran (now works for the 'zon) and Yuhua (disappeared?) made perhaps the Best Encrypted Filesystem ev4r. LUKS (Linux Unified Key Setup) is a project that actually does most of the same things that we did. It does some things a lot better, like not hacking the superblock to fit a key in. It also has a much better way of erasing old passwords than our system. But the principle was the same (eventually with ours, anyway): store keys where you could, change the way the filesystem mounted slightly and as seamlessly as possible. Later, I made it re-use the same cryptographic material, so you could change the disk password without having to decrypt and re-encrypt every filesystem block. Second star to the right, and straight on 'till morning.

I'm working to expand the specification now. What I want is to create a PKCS#11 solution, so we can all use smartcards to set up our keys. The symmetric key used to encrypt the disk would be just some random data (really random data if you will). We would then encrypt the symmetric key with each intended user's public key, using the PKI. Really it wouldn't matter where they had their private key. It could on a smartcard, on a floppy disk, whatever. It doesn't matter, so long as the data is secure and the user is responsible enough. They'd need their private key to decrypt the symmetric key, then they could decrypt the disk via cryptsetup. Voilla! I'd still have to figure out a way to elegantly handle certificate revocations, but otherwise everything is there in my head, and slowly going into some C files. Neat.

I think the changes won't be very painful, and it makes sense to expand the system in such a way. The key storage method should really be separate from the cryptosetup implementation. I've never had too much patience plowing through hundreds of documents of previous projects though -- it's more fun to just make it go first and see what the world thinks later. So it's on to project number 5 of Really Neat Things Reid is Doing At The Moment -- a little bit of reading to make sure it isn't done (seems doubtful because LUKS is pretty new). Here's hoping my bald head doesn't lose any more hair from the coding to come. Time for another case of guarana.

Post a comment










Please enter the number above into the box below.









Further back...

Archives