v9.20 — Open Source Firmware

Your Passwords.
Your Hardware.
Your Control.

A military-grade hardware password manager built on ESP32-S3. ECDH P-256 + AES-256-GCM end-to-end encryption. Zero cloud. Zero trust. Zero compromise.

0-bit
AES Encryption
0
Security Layers
Zero
Cloud Dependency
0
Access Modes
Features

Built for the paranoid

Every feature designed with adversarial assumptions. No cloud. No trust. Every byte stays on hardware you control.

AES-256-GCM Encryption

Every data frame encrypted with AES-256-GCM using an ECDH-derived session key. Fresh random nonce per message — authenticated encryption prevents tampering.

ECDH P-256 Key Exchange

Ephemeral P-256 keypairs per session. Session key via HKDF-SHA256 with 6-digit code as PSK — MITM cannot derive the key without physical access.

Pattern Unlock

Morse-like short/long press patterns on the joystick — second unlock factor running in parallel with PIN. Configurable up to 12 elements.

Duress Mode

Decoy vault under a separate duress PIN — indistinguishable from the real vault. Protects under coercion without revealing real credentials.

TOTP Generation

Time-based one-time passwords on-device using the DS3231 RTC. No phone needed for 2FA — the vault itself is your authenticator.

Hardware Security Module

ESP32-S3 hardware-accelerated P-256 via mbedtls. Keygen + ECDH in ~50ms. MPU6050 tamper detection. AT24C32 EEPROM for secure storage.

Memory Zeroing

All session keys, ECDH private keys, and codes zeroed with secureZero() (volatile-pointer memset) on timeout, lock, or exit.

Atomic SD Writes

4-step safe write: backup → write .tmp → verify integrity → atomic commit. Boot-time recovery from .bak. No data loss on power cut.

How It Works

Security you can see

Every step is designed so that even if an attacker intercepts the wire, they learn nothing.

1

Power On & Unlock

Boot the device. Enter your PIN or use pattern unlock (Morse-like short/long presses). Duress PIN opens a decoy vault.

2

Choose Access Mode

BLE Mode for credential typing, Dashboard Mode for USB management, or AP Mode for WiFi hotspot access from your phone.

3

6-Digit Code Displayed

The ESP32 generates a cryptographically random 6-digit code. It appears on the TFT — you type it into the companion app. It never crosses the wire.

4

ECDH P-256 Handshake

Both sides exchange ephemeral P-256 public keys. Session key derived via HKDF-SHA256 with the 6-digit code as PSK. MITM-proof by design.

5

AES-256-GCM Session

Every message after handshake is encrypted with AES-256-GCM. Fresh nonce per frame. Auth tag prevents tampering. Your vault data flows securely.

6

Auto-Lock & Zeroing

60s inactivity auto-lock. All session keys, ECDH keys, and codes zeroed with secureZero() — volatile memset that cannot be optimized away.

Encryption Flow

Watch your data get protected

1
plaintext
vault_entry(password="s3cur3!")
user sends data
2
AES-256-GCM encrypt
🔑 session_key → nonce + encrypt + tag
encryption applied
3
on the wire
[01] [02] 0xf3a7... 0x9c2e... 0x1d8b
MITM sees: random noise
4
decrypted on device
vault_entry(password="s3cur3!") ✓
auth tag verified → zero buffer
Access Modes

Three paths. One vault.

BLE for typing. USB for management. WiFi for convenience. All encrypted. All isolated. All zeroed on exit.

BLE Mode

Bluetooth Low Energy

BLE HID keyboard — types credentials directly into your computer or phone like a real keyboard. Zero app install needed for typing.

Active

Dashboard Mode

USB Serial

USB-CDC serial + ECDH handshake. Full vault management over a single USB cable with AES-256-GCM on every frame.

Available

AP Mode

WiFi Hotspot

Self-contained WiFi hotspot. Manage your vault from your phone browser — captive portal, WPA2 + ECDH + AES all active.

Available
ESP32ESP32-S3
All modes share the same ECDH + AES-256-GCM encryption pipelineSession keys zeroed on exit
Hardware

Purpose-built for security

Every peripheral chosen for a reason. DS3231 for TOTP. MPU6050 for tamper detection. Nothing is decorative.

MCU
ESP32-S3 Dual-Core 240MHz
Flash
16MB QIO + 8MB OPI PSRAM
Display
2.4" ILI9341 320×240 TFT + Touch
RTC
DS3231 + AT24C32 EEPROM
Storage
microSD on dedicated HSPI
Input
5-Way Joystick + Cap Touch
IMU
MPU6050 Motion Detection
Power
INA219 Current Sensing
Security Architecture

4-Layer
Security Stack

Dashboard Mode is unreachable without an authenticated ECDH session. There is no unauthenticated endpoint. Every layer exists because the layer below is insufficient alone.

1

Physical Handshake

ESP32 generates a random 6-digit code displayed on TFT. User types it into the companion app. The code never crosses the wire — mixed into KDF as PSK.

2

ECDH P-256 Key Exchange

Ephemeral keypairs exchanged. Session key = HKDF-SHA256(ecdh_secret ∥ SHA-256(code)). Even MITM intercepting both pubkeys cannot derive the key.

3

AES-256-GCM Wire Encryption

Every post-handshake message: [version][msg_type][payload_len][12B nonce][ciphertext][16B auth tag]. Fresh nonce per message. Authenticated encryption.

4

Memory Zeroing & Isolation

Session key, ECDH private key, code live ONLY in module-static buffers. Zeroed with secureZero() on timeout, lock, exit, or disconnect.

ESP32-S3 Device
Generates 6-digit code + ECDH keypair
ECDH P-256
Companion App
Electron / Web — enters code + completes handshake
AES-256-GCM Encrypted Channel
[01] [02] [0042] [12B nonce] [66B ciphertext] [16B tag]
↓ decrypt → vault entries → zero buffer after use
Session Key Derivation
key = HKDF-SHA256( ecdh_secret ∥ SHA256(code), salt="SecureVault-v3" )
AP Mode Defense

Obfuscation layers

AP Mode adds four obfuscation layers on top of the 4-layer security stack. Even the WiFi traffic shape reveals nothing.

URL Obfuscation

API paths tunneled through non-obvious URL patterns to resist fingerprinting and automated probing.

Header Obfuscation

HTTP headers randomized and padded to defeat traffic analysis and protocol fingerprinting.

Method Tunneling

HTTP methods tunneled through uniform interface — no REST verb leaks revealing API structure.

Traffic Obfuscation

Timing and size normalization make encrypted traffic indistinguishable from random noise.

SecureVault

Take control of your credentials

Build your own SecureVault. Flash the firmware. Own your security. No subscriptions. No cloud. No trust required.

$pio run -t upload