PassKey

 

PassKey

This project was born from an uncomfortable feeling I’ve had ever since I first clicked “OK” when FireFox asked if I would be cool with them remembering my password for my google account. That was quite a few years ago, but today, because I just can’t be troubled to remember passwords, passwords.google.com has a nice long list of all my important passwords. Now every time I hear about a retail store or bank getting hacked, my mind immediately jumps to passwords.google.com.

Passwords and internet security are a difficult problem. By it’s very nature, a password must be remembered. So we think of things that mean something to us, and thus are easy to guess/hack. Security demands long and complicated passwords that are impossible to remember. And so we turn to a service (such a google or I think apple has a similar password saving system) to remember and type our passwords for us. But how secure (really) is that service?

I have always preferred the old key type padlock to the combination style. It’s comforting to me to know I have the key on a keyring, and it wont be left and forgotten. “Can I have a “key” for my internet accounts?”

ABSOLUTELY

 

Requirements

  • Store 1 or more passkeys, of any length, containing any characters.
  • No wireless connectivity
  • Compatible with computers and smartphones
  • Will input password at the cursor
  • Will input password with the touch of a button
  • Small enough to fit in pocket

 

Design

  • uC – small with ability to natively emulate keyboard without additional drivers. I chose an Arduino clone using the ATmega32u4 uC (pro micro). This allows rapid prototyping, small size, affordability, and a built in usb port for connecting to a pc.
  • Buttons – microswitch buttons are cheap, plentiful, and easy enough to use and debounce.
  • Other components – solid core copper wire, proto-board, headers soldered through unused pins to hold the Arduino to the PCB, and no passives.
  • I chose to utilize the internal pullup resistor on the ATmega as external passive components would increase size. For the same reason, I rely on software debouncing.

This is really a quite simple project. There are even examples built into Arduino. Go to File>Examples>USB>Keyboard>KeyboardMessage. The only changes required are to add new variables and new code for extra button pins, buttonstates, and lastbuttonstates. Change the input type to INPUT_PULLUP, specify the pins your buttons are on, and replace the counter and designated text with the password you wish to type out.

At the end of the day, my device has 2 buttons, 1 for a more “simple” password, and one for a “complex” password.

 

Future Work

I came up with several ways to improve this device.

  • Dip switches to enable storing and selecting from a much larger number of passwords.
  • Use 1 switch to copy whatever text is selected on the pc, and store it as the new password, the other switch would print the stored password.
  • Further decrease the size, using an ATtiny on a custom pcb.

 

Parts

Arduino

Microswitch

Proto-board

Copper Wire