|
| 1 | +# Pass Vault |
| 2 | +A biometric hardware security key that acts as a USB HID keyboard, mapping 10 fingerprints to specific passwords or macros. |
| 3 | + |
| 4 | +:::info |
| 5 | + |
| 6 | +**Author**: Polojan Radu-Mihai \ |
| 7 | +**GitHub Project Link**: https://github.com/UPB-PMRust-Students/fils-project-2026-radupolojan |
| 8 | + |
| 9 | +::: |
| 10 | + |
| 11 | +<!-- do not delete the \ after your name --> |
| 12 | + |
| 13 | +## Description |
| 14 | + |
| 15 | +The Pass Vault is a hardware security device that stores encrypted passwords and types them automatically when a recognized fingerprint is scanned. By acting as a USB keyboard (HID), it requires no special software on the host PC. It features a Multi-Profile interface where each finger triggers a different credential, all managed via a secure USB-C smartphone or pc companion app. |
| 16 | + |
| 17 | +## Motivation |
| 18 | + |
| 19 | +I chose this project to create a physical-first security solution that eliminates the vulnerability of software-based password managers. It combines biometric authentication with Rust’s memory safety to ensure that credentials remain unhackable and accessible only by the physical owner. |
| 20 | + |
| 21 | +## Architecture |
| 22 | + |
| 23 | + |
| 24 | +## Log |
| 25 | + |
| 26 | +<!-- write your progress here every week --> |
| 27 | + |
| 28 | +### Week 5 - 11 May |
| 29 | +* Bought and collected all the hardware components (Olimex RP2350 board, SFM-V1.7 sensor, and XIAO RP2040 board). |
| 30 | +* Checked the pinouts and connection diagrams for the parts. |
| 31 | +### Week 12 - 18 May |
| 32 | +* Wrote most of the microcontroller firmware code in Rust. |
| 33 | +* Studied and tested the `embassy` and `usb` libraries to understand how asynchronous hardware communication works. |
| 34 | +* Made the fingerprint sequential enrollment logic and the USB keyboard emulation. |
| 35 | +### Week 19 - 25 May |
| 36 | +* Created the desktop companion application for the PC using egui. |
| 37 | +* Designed the 3D case for the device and successfully 3D-printed the final physical enclosure. |
| 38 | +## Hardware |
| 39 | + |
| 40 | +The project uses the high-pin-count RP2350B, featuring 16MB FLASH and a 8MB PSRAM for advanced data handling and an XIAO RP2040 as the debugger. |
| 41 | + |
| 42 | +### Schematics |
| 43 | + |
| 44 | + |
| 45 | + |
| 46 | + |
| 47 | + |
| 48 | + |
| 49 | + |
| 50 | +### Bill of Materials |
| 51 | + |
| 52 | +--> |
| 53 | + |
| 54 | +| Device | Usage | Price | |
| 55 | +|--------|--------|-------| |
| 56 | +| [RP2350-PICO2-XXL OLIMEX](https://www.tme.eu/ro/details/rp2350-pico2-xxl/kituri-de-dezvoltare-altele/olimex/) | Main MCU | [55 RON](https://www.tme.eu/ro/) | |
| 57 | +| [Senzor amprenta SFM-V1.7](https://www.emag.ro/modul-senzor-amprenta-sfm-v1-7-ai779-s808/pd/DLGZLTMBM/?ref=history-shopping_485604297_38837_3) | Biometric authentication | [94 RON](https://www.emag.ro/) | |
| 58 | +| [Seeed Studio XIAO RP2040](https://www.tme.eu/ro/details/seeed-102010428/kituri-de-dezvoltare-altele/seeed-studio/xiao-rp2040/) | Hardware SWD Debug Probe | [30 RON](https://www.tme.eu/ro/) | |
| 59 | + |
| 60 | + |
| 61 | +## Software |
| 62 | + |
| 63 | +| Library | Description | Usage | |
| 64 | +|---------|-------------|-------| |
| 65 | +| [embassy-rp](https://github.com/embassy-rs/embassy) | Async runtime and HAL for RP2040/RP2350 | Provides async drivers for hardware timers, UART communication with the sensor, and internal flash controllers. | |
| 66 | +| [embassy-usb](https://github.com/embassy-rs/embassy) | Asynchronous USB device stack | Handles the concurrent USB stack, configuring the device as a composite USB CDC Serial class and USB HID Keyboard. | |
| 67 | +| [usbd-hid](https://github.com/lyonel/usbd-hid) | USB HID class and report descriptor generator | Generates the official boot keyboard reports used to type decrypted characters into any OS host text-field. | |
| 68 | +| [embedded-storage](https://github.com/rust-embedded/embedded-storage) | Storage traits for embedded systems | Provides standardized interfaces to safely interact with non-volatile memory sectors. | |
| 69 | +| [eframe / egui](https://github.com/emilk/egui) | Immediate mode GUI framework for Desktop | Drives the minimalist PC companion application interface, managing background thread message passing channels. | |
| 70 | +| [serialport-rs](https://github.com/serialport/serialport-rs) | Cross-platform serial port library for Rust | Enables the desktop client app to perform background plug-and-play USB hardware polling based on unique VID/PID signatures. | |
| 71 | + |
| 72 | +## Links |
| 73 | + |
| 74 | +<!-- Add a few links that inspired you and that you think you will use for your project --> |
| 75 | + |
| 76 | +1. [Rust documentation](https://youtu.be/oWThq9rKjQw?si=yXI7mbcZzjzmGdt4) |
| 77 | +2. [XIAO RP2040 as DebugProbe](https://community.element14.com/products/raspberry-pi/b/blog/posts/seeed-studio-xiao-rp2040-as-picoprobe) |
| 78 | +3. [ChaCha20 Algorithm](https://datatracker.ietf.org/doc/html/rfc7539) |
| 79 | +4. [Egui / Eframe](https://www.youtube.com/watch?v=zZKjBMt4kZ4) |
| 80 | +5. [Egui / Eframe git](https://github.com/emilk/egui) |
| 81 | +6. [Embassy Framework (Async Rust Embedded)](https://embassy.dev/book/) |
0 commit comments