Introduction: Password Keeper
This is my latest password keeper which has a lot of improvements over the last iteration. Improvements include, aes-256 bit encryption, smaller form factor & this version costs considerably less than the previous version. The key to the encryption is not stored on the password keeper, instead I opted to have a companion android application transmit the encryption key over blue-tooth to the device at start-up. This prevents someone from dumping the program space and extracting the encryption key.
In addition to being a password keeper, it has the ability to generate strong 16 digit mixed case passwords. No special characters are ever included which allows you to generate passwords for almost any site. All the password data is encrypted and stored on the SD card. The device acts like a keyboard also & can type the passwords so you don't have to.
The SD card is removable for two reason's, first so you can backup your encrypted password file to your computer in case you device disappears. Secondly, if you want, you can remove you SD card and keep it somewhere other than inside the device.
No account information or username of any kind is stored in the device for security reasons; all the text based descriptions of the password entries are also generic, i.e. "email", "bank", "phone".
Step 1: Gather the Necessary Components
Teensy 3.1 + header $19.95
http://www.adafruit.com/products/1625
0.96" OLED i2c Display (3.3V - 5.0V) $18.00
https://www.tindie.com/products/miker/096-oled-i2c...
MicroSD card breakout board+ $14.95
http://www.adafruit.com/products/254
Navigation Switch Breakout Board $9.00
https://www.tindie.com/products/miker/navigation-...
JY-MCU Bluetooth $6.43
http://www.dx.com/p/jy-mcu-arduino-bluetooth-wire...
Total without shipping: $68.50
You will also need to make some sort of a case for your project. For my case, I choose a radio-shack project box, and then made changes to the box using a dremel and file. Below is a link to the project box I used.
Project Enclosure (3x2x1") $3.49
Step 2: Setup Build Enviroment, Get Code & Libraries
You should start off by downloading version 1.0.5 of the Arduino IDE, from the following URL:
http://arduino.cc/en/main/software
Next you will want to download and install the teensy installer, which will add the Teensy to the Arduino IDE:
https://www.pjrc.com/teensy/td_download.html
The source code for the project along with the libraries are available from github, at the following URL:
https://github.com/davidhend/Teensy-Password-Keepe...
Finally you will need to create an empty file named, "wdt.h" and store it under this directory, " /hardware/teensy/cores/teensy3/avr".
Next you will want to setup Eclipse ADT, which is Eclipse with the Android SDK already bundled together:
http://developer.android.com/sdk/index.html#downlo...
The source code the the Android side of things is available from Github also:
https://github.com/davidhend/PasswordKeeper
On the Android side of things, you will need to make two changes to Authentication.java:
1. You will need to set the MAC address of your bluetooth module.
private static String address = "00:12:08:17:13:14";
2. You will need to make up an encryption key with 32 values.
sendData("start:15,84,5,68,46,10,8,59,61,82,25,49,87,2,99,37,14,74,95,52,66,75,84,26,81,4,86,19,24,62,40,6:end");
Step 3: Connect Everything on a Bread-board
I started off on connecting all the components on a bread-board, you don't necessarily have to do the same, but I would suggest that you do. This will allow you to make sure everything works as you would expect and get a feel for the project before undertaking any other steps.
This would also give you a chance to get all the code working correctly before putting anything in a permanent case. The knowledge that all the parts you ordered, do happen to work, might aid in the debugging process later on; because you will know that everything worked in the beginning.
Step 4: Make a Case
Now that you know your project is going to work, it is time to make an enclosure for you project. I made my first enclosure using balsa wood, it worked well and was an easy material to work with.
On my second attempt, I opted for a plastic case and went about measuring and cutting all the necessary holes. You can choose anything you would like; a 3d printed case would look great ;)
Whatever you choose make sure to allot enough room for all of the components. Also try to be patient during this step and cut slowly if you do happen to use plastic. You can always remove more but adding it back isn't an option.
If you have access to a 3D printer; printing the case would definitely look the best. Maybe at some point I will also do the same and print a case.
Step 5: Finalize Build
It's now time to install your components into your case and wire everything up. Pay close attention to your clearances and use electrical tape & heat shrink to avoid any potential electrical shorts.
Take your time and don't rush this step; if you get frustrated, take a break.