USBkey

This project was inspired by a problem we had, where I formerly employed, with a key to prevent people copying the software onto lots of machines.  I'm not a fan of activation keys or dongles but if they really want to use one then I'd rather they used mine.  Of course, they didn't because it got hit with the "not invented here" syndrome.  Anyway, it's basically a USB dongle with a unique serial number that cannot be changed and some non-volatile memory where some personalised information can be stored.  The circuit is remarkably simple - it's an FTDI USB->Serial converter chip hooked up to an iButton unique serial number chip.

USBkey schematic
The image looks a bit crap because it has been shrunk down.  If you copy it and view it separately, then it'll look fine.  It was created on my previous schematic capture program so this is a quick and nasty scan from my paper records.

Initially I tried to create a USB connector directly on the PCB and the following pictures show this surrounded by a metal shield made out of an old floppy disc shutter.  It wasn't a huge success so I subsequently cut it off and replaced it with a regular USB connector which did unfortunately make it rather bigger than I would like.  If you're wondering why it looks a bit mottled it's because this board has been heavily coated in lacquer for protection and yes, it was very tricky to solder those tiny components - it took a very fine soldering iron, some fine solder together with tweezers and a big magnifying glass.

USBkey top side   USBkey bottom side
USBkey with normal connector

Now you still need software to talk to this device.  You can download drivers for Windows from FTDI but the necessary drivers for Linux have been shipped in most distributions for years.
This source code can be used to build a program to read the unique ID code out of the iButton chip in Linux.

Now you could leave the iButton chip off the PCB and instead fit a regular iButton socket.  Now you can read any iButton that's pressed into the socket.  You could use it as an access key or possibly an encryption key.  Here's such an arrangement that I constructed out of the prototype board which I made before the USB dongle design above:
USB iButton reader