// the find
polhenarejos/pico-hsm
Hardware Security Module (HSM) for Raspberry Pico and ESP32
pico-hsm turns a Raspberry Pi Pico or ESP32-S3 into a PKCS#11-compatible hardware security module using mbedTLS for crypto and a USB CCID stack for host communication. It speaks the same protocol as a SmartCard-HSM, so OpenSC and standard PKCS#11 tooling just works. Aimed at developers who want cheap hardware key storage without paying $50-500 for a YubiHSM or Nitrokey.
The protocol compatibility is the real win — masquerading as a SmartCard-HSM means you get OpenSC, PKCS#11, and OpenSSL PKCS#11 engine support for free without any custom drivers. Key breadth is impressive for a microcontroller: RSA up to 4096, a wide ECC curve set including Curve448 and brainpool variants, BIP32/SLIP10 for HD wallet use, and ChaCha20-Poly1305 — this isn't just a toy signing key. The DKEK n-of-m threshold scheme is a serious feature; most hobbyist HSMs don't ship key backup/restore at all. The RP2350 and ESP32-S3 paths with OTP-stored MKEK and Secure Boot close the obvious hardware attack where you dump flash and brute-force the PIN offline.
The PIN-transmitted-in-plaintext caveat buried in the security section is a real gotcha: if you're not using secure messaging, your PIN goes over USB in the clear, which is fine on a localhost machine but undermines the threat model the README sells. RSA 4096 keygen taking ~17 minutes on the RP2040 isn't a dealbreaker but will surprise anyone who tries it without reading the table. There is no independent security audit cited anywhere — for something marketed as an HSM, 'trust us, the keys stay encrypted' backed only by a README is thin. The dual-licensing with AGPL for FOSS and a paid enterprise tier means multi-user/multi-device deployment, revocation, and audit logging are all paywalled, so the free version is realistically a single-developer tool.