Introduction: MicroKeyRing: Tiny Password Storage That Fits in Your Pocket
Passwords, passwords and more passwords.
Every website, mail application, or google service needs a password. And you SHOULD'T use the same password in two places.
Where can you store them? In an desktop application? In a (suppossely secure) web app? They will need its own password!
Some years ago I was tinkering with the famous Arduino boards when I discovered the Leonardo model. It is an special board with a software defined USB port. It can behave like a keyboard or a mouse when you plug it into a computer. You just need to program the board properly and it will send the keystrokes you defined to the computer, like a standard keyboard.
Browsing the current huge catalog of Arduino style boards, I found a tiny board with a flat USB plug and the atmega32u4 chip. It has got this keyboard emulator feature. Perfect for a pocket digital keyring!
To build one NanoKeyring like this you will need these materials:
- A DIYMore USB Board (search for ATMEGA32U4-AU Beetle)
- A couple of small buttons (3x6x7mm)
- A few centimeters of thin isolated wire
And these tools:
- Soldering Iron
- A 3d printer
- A computer
- A magnifying glass, if your eyes are as old as mine :-D
Step 1: Board and Buttons
I decided to add two buttons: one for user/password/whatever autotyping and other for user selection. This way you can carry your four or five commonly used passwords and select the one you need easily.
Buttons need a resistor to avoid floating values. This board has got these pull_up resistor in it, so you only need to activate them in your software. A pull_up resistor makes your program read a continuos high value until you short the pin and ground (using a button).
I placed one button in the middle of the side opposite to the usb connector. This will be the main one. These buttons have got long legs. Just bend them carefully and pin the tip into the hole labeled D10. If yours are different, solder a short piece of wire to connect one leg and D10.
Add the other button in the middle of the right side and bend its leg towards the D11 hole.
Join together the other two legs, and solder a wire to connect both legs and the GND hole.
As you can see, soldering is not my strong suit. I use all kind of tools to make nice joints (magnifiers, helping hands, temperature selectable iron...), but nothing seems to work. This should bring you to assemble your NanoKeyring!
Last second advise: you can make the case before and use it as a rig to put the buttons in place. Take care to avoid melting the case with the soldering iron.
Step 2: A Cute Case
After 96 prototypes, I came with a design that fits perfectly the board and keep the buttons in place.
Download it from thingiverse (https://www.thingiverse.com/thing:4003337) and print it in your own 3d printer. It does not need to be specially strong, so any material -like PLA- will be fine.
Alternatively you could ask a friend or order it from a online service.
If 3dprinting is not an option for you, maybe some kind of polimer clay could be a good substitute.
You could even make a luxury version with some pieces of varnished wood!
Step 3: Magic Software
You need to upload my code to the tiny board.
You will find hundreds of tutorials about uploading code to arduino, using Arduino IDE or the new PlatformIO.
I have prepared code and libraries for this last IDE. Download everything from this repository:
Step 4: How to Use It?
As you probably have seen in the video, this MicroKeyRing has many functions:
- Press the main button to inject your username
- Long press the main button (until LED flashes) to inject your password
- Double click the main button to inject addtional data (telephone, visa card number...)
- Press the secondary button (the one in one side) to switch to the next user/password set.
An extra (and not very well tested) function: long press the secondary button to activate/deactivate the anti-idle feature. When this feature is activated, MicroKeyRing will move the mouse one pixel every 30 seconds to prevent the screen lock. Handy if your corporate policy enforced a really short idle time.
Participated in the