September 17, 2012

Friends, erasure codes, and symmetric encryption for password-based private key recovery

Following up on previous ideas on P2P social networks, one idea I recently had about peer-assisted private key recovery was the possibility of using erasure codes with symmetric encryption. You'd encrypt your private key with your password, use an erasure coding scheme to break it up into chunks so that you'd need some N > 1 chunks to recover the encrypted key, send out a chunk to a friend when you "friend" them.

When you're at a public computer, your friends would only send a chunk to you if you've managed to authenticate with them (using a zero-knowledge password proof, perhaps SRP). When you've collected enough chunks, you get the encrypted key, and decrypt it with your password.

You'd have to trust your friends not to collude to share chunks with each other, and even if they do, they still have to guess your password.

September 11, 2012

CLiki news is finally up on the cliki2 software (the ALU wiki has been running it for a while).

CLiki2 features real user accounts, effective anti-spam protection, and much improved article versioning (you now get graphical diffs like Wikipedia, among other things). Change notification for the whole wiki and for each individual article is provided by ATOM feeds. There is now code coloring support. Pages can be deleted for real. The layout and ATOM feeds have been designed to be accessible, and work great in console browsers.

The biggest casualties in the move were latin1 characters (some pages were a mix of utf-8 and latin1, and latin1 lost). In particular, if your name contains a lot of accents, I aplogize.

So grab yourself an account, read up on tips for writing CLiki pages, and contribute some information about Common Lisp libraries or other topics.

If you want to write about Lisps other than Common Lisp, the ALU wiki is the place. Right now it is a little sparse and could use more contributions.

Bonus link: Check out Takeru Ohta's github account for some neat Common Lisp software: