finds.dev← search

// the find

polhenarejos/pico-hsm

★ 555 · C · AGPL-3.0 · updated Jul 2026

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.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →