Skip to the content
PCBKitNew board
2 layers50 × 18.3 mmStickPassV2, the printed circuit board in 3D

StickPassV2

Drulex/StickPass

Final Year Engineering Project

Size
50 × 18.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
12
Nets
9
Pads
38
Tracks, vias
71, 1
Pours
2
Routed
Yes
KiCad
KiCad 4
Created
21 Jan 2016
Updated
13 Apr 2016

Overview

StickPassV2 is an open-source printed circuit board by Drulex, from the Drulex/StickPass repository on GitHub. It is a 2-layer board of 50 × 18.3 mm with 12 parts on 9 nets, routed with 71 tracks and 1 via.

Its parts include 5 resistors, 3 diodes, 1 capacitor, 1 IC and 1 connector. It belongs with the AVR (ATmega, ATtiny) boards of this library.

README

README.md

STICKPASS

What is the StickPass project?

StickPass is a hardware password manager based on the ATTINY85 microcontroller. It allows the user to securely store his identities (username/password combinations) on a physical device and use them with the press of a button. At the moment it uses the V-USB library to implement USB functionality in software.

Scope

The scope of the project is to develop a low cost integrated hardware password management solution. The project is realized as a final year electrical engineering project and the timeline is 12 weeks at about 9 hours of work per week.

Why ATTINY85?

There are two obvious ways of going when thinking about the architecture of this project:

  1. Use an IC with integrated USB.
  2. Use a general purpose IC and a separate chip acting as USB bridge.

Yet I chose to explore a third more obscure option: Use a software implementation of the USB protocol.

The reasons for this decision are the following:

  • V-USB if fully compliant with USB1.1.
  • ATTINY85 is an extremely small package (8 pin DIP package). There are no ICs with integrated USB that are this small.
  • Very cheap (~1.67$) compared to other ICs with USB integrated or compared to using two ICs.
  • Hardware is greatly simplified as the IC is powered directly from USB VCC and does not require a single external component (not even oscillator).
  • This project does not require a lot of CPU and memory resources nor does it need full speed USB protocol.
  • AVR chips are very well documented and used in various projects in the online community.
  • Need to go from nothing to "production ready" in less than 150 hours.

Compiling the firmware

At the moment this was only tested on Linux. Cross platform support is coming.

Linux

The following packages are required in order to build the firmware:

  • avr-libc
  • arvdude
  • binutils-avr
  • gcc-avr

If you are not using the USBTINY programmer to flash your ATTINY85 modify line 6 of the Makefile to call your programmer.

To compile the project: make hex

To flash the chip: make flash

To flash the fuses: make fuse

OSX

Coming soon.

Windows

Coming soon... or not.

Compiling the user application

In order to use the user application (StickApp) you will need a recent version of:

  • gcc
  • libusb

To compile the app: make app

Using the StickApp

Device initialization

./stickapp --init <unlock key>

This will initialize the device with the given unlock key. This key must be used to unlock the device any time it is plugged in the future! When used on an already initialized device it will wipe the memory contents and reset the key.

Send credentials to device

./stickapp --send <idName> <idUsername> <idPassword>

  • idName: nickname associated with credential
  • idUsername: username associated with credential
  • idPassword: password associated with credential
Clearing the EEPROM

./stickapp --clear Will clear the memory contents and preserve the unlock key.

Using credentials

To use the device:

  1. Plug in computer. The LED should light up and stay solid. This means the device is locked.
  2. Unlock the device using the unlock key.
  3. A pushbutton shortpress (lesser than 1 second) will display and iterate through available idNames.
  4. A pushbutton long press (greater than 1 second) will inject the idUsername, the TAB character and the idPassword.

Limitations

Some decisions were made to implement some features (most of them related to memory management) with limitations in order to satisfy the requirements, but at the same time decrease complexity and ultimately save some time. I am obviously aware that these implementations are suboptimal and I plan on fixing them as soon as the semester is done and time allows.

Current limitations on version 1.0:
  1. Maximum of 8 credentials capacity as per scheme below:
    • idName: 10 bytes
    • idUsername: 32 bytes
    • idPassword: 21 bytes
  2. Unlock key size is 7 bytes.
  3. No mechanisms implemented to prevent EEPROM corruption. This means that if you remove power during an EEPROM write cycle your data WILL be corrupted.

Next version

I already have some ideas for the next iteration the main ones being:

  1. External memory chip with hardware encryption.
  2. NFC support for 2 factor authentication.
  3. Rotating knob for navigation.
  4. Tiny OLED matrix display.

If you have suggestions contact me at alexandru@jora.ca I would love to get some feedback.

Parts

12
QtyValueFootprintReferences
268RResistors_ThroughHole:Resistor_Horizontal_RM7mmR3, R4
2ZENERResistors_ThroughHole:Resistor_Horizontal_RM7mmD1, D2
10.1uResistors_ThroughHole:Resistor_Horizontal_RM7mmC1
110KResistors_ThroughHole:Resistor_Horizontal_RM10mmR1
11k5Resistors_ThroughHole:Resistor_Horizontal_RM10mmR2
1220RResistors_ThroughHole:Resistor_Horizontal_RM10mmR5
1ATTINY85-Pstickpass:DIP-8_W7.62mmIC1
1LEDLEDs:LED-5MMD3
1SW_PUSHswitch:SPST-4-PIN_6mm_thruSW1
1USB_AConnect:usb_a_molex_48037-0001P1

Questions

How big is the StickPassV2 PCB?

It measures 50 × 18.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the StickPassV2 use?

12 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the StickPassV2 KiCad files?

From the Drulex/StickPass repository on GitHub, at the commit this page was made from: the board is electronics/StickPassV2.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the StickPassV2 design in my own project?

Its repository states no licence, so its author keeps all rights: ask Drulex before reusing the design.

Similar boards

  • 2 layersNrf bga, the printed circuit board in 3D

    Nrf bga

    github-linguist/linguist

    Language Savant. If your repository's language is being reported incorrectly, send us a pull request!

    12 parts14kMIT
  • 2 layers66.9 × 74.5 mmDeskHop, the printed circuit board in 3D

    DeskHop

    hrvach/deskhop

    Fast Desktop Switching Device

    12 parts7.9kGPL-3.0
  • 2 layers40 × 15 mmSensors, the printed circuit board in 3D

    Sensors

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    12 parts3kApache-2.0
  • 2 layers42.7 × 56.5 mmTle6240 driver, the printed circuit board in 3D

    Tle6240 driver

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    12 parts1.2k
  • 2 layers49 × 25 mm5v boost regulator, the printed circuit board in 3D

    5v boost regulator

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    12 parts915
  • 2 layers28.3 × 10.3 mmTap Photosensor PCB, the printed circuit board in 3D

    Tap Photosensor PCB

    VoronDesign/Voron-Tap

    Tap is a nozzle-based z-probe for the V2 and Trident printer designs. The entire toolhead moves to trigger an optical switch. Tap offers many advantages:

    12 parts716GPL-3.0
  • 2 layers25.4 × 70.4 mmTpmsniffer, the printed circuit board in 3D

    Tpmsniffer

    stacksmashing/pico-tpmsniffer

    A simple, very experimental TPM sniffer for LPC bus

    12 parts696