Secure Coding mailing list archives

Best practices for encrypting client-side data


From: ljknews at mac.com (ljknews)
Date: Tue, 8 May 2007 10:11:05 -0400

At 10:09 PM +1200 5/8/07, Robin Sheat wrote:
Content-Type: multipart/signed; boundary="nextPart6783111.ysaAiqc79P";
      protocol="application/pgp-signature"; micalg=pgp-sha1
Content-Transfer-Encoding: 7bit

I'm no security professional, just a programmer with a healthy interest in it, 
most of what I've gleaned has come from lists such as this, and the various 
securityfocus ones.

A little while ago I was asked to implement something that I didn't have much 
of a low-level idea of, so I hope here is an appropriate place to ask.

Basically, I needed to encrypt the on-disk format of some data that is 
accessed as a seekable file (it's actually a Lucene index, but the details 
aren't too relevant). The use case for this is to ensure the data is kept 
private, even if the disk or computer the data is on is taken (it's a 
network-aware client app, so they log in to the program using a username and 
password).

There should be concern that the computer might be temporarily stolen to
install a keyboard sniffer and then returned for long enough to scarf
up the password.

What protections do you have to prevent the user from choosing the same
password for some _other_ system ?  The smart thief will obtain the user
password before stealing the box.

I would suggest two factor authentication, requiring some smart card
(with built-in keypad, to prevent intercept of the pin) that actually
provides the decryption.  Make the user keep the smart card with them,
such as by requiring it for entrance to the cafeteria or rest room.

Obviously other smart card features are in order, such as going dead
after N bad tries at the pin, and a duress code.
-- 
Larry Kilgallen


Current thread: