The Secure Circuit
Hey crew,
This issue is about something most people now use without ever seeing: the little cryptographic ceremony behind a passkey login.
The project is ESP32-Key, an experimental Arduino CLI firmware project that turns Waveshare ESP32-S3 display boards into USB FIDO/WebAuthn lab authenticators. In plain English: it is a tiny board that can act like a security key in disposable WebAuthn tests, show what the browser is asking it to do, and make the hidden parts of passkey authentication easier to reason about.
That last sentence needs a big boundary around it. This is not a certified security key. It is not production hardened. It is not for your email, bank, code hosting, cloud admin, password manager, crypto wallet, work systems, or anything you would panic about losing.
It is a bench key. That is exactly why I like it.
USEFUL KNOWLEDGE
🌎 Why Build A Lab Key?
Passkeys are becoming normal. The FIDO Alliance's 2026 report says passkeys are now in active use at global scale, with broad consumer awareness and growing workforce deployment. That is great for sign-in security. It also means more builders are going to touch WebAuthn from the outside without understanding the moving parts inside.
ESP32-Key gives you a way to slow the whole thing down.
Instead of treating a security key as a sealed object, the project turns the login chain into something you can inspect:
A browser asks for registration or sign-in.
The device receives FIDO HID packets over USB.
CTAP2 commands move through the firmware.
The board asks for physical user presence.
BOOT acts as the intentional touch.
The authenticator creates or uses credential material.
The browser decides whether the WebAuthn flow completed.
That chain is the lesson. A passkey is not just a nicer password field. It is a ceremony between a relying party, a browser, an authenticator, a user gesture, and cryptographic proof.
Good questions for the bench:
What does the browser actually ask the authenticator to do?
When should the device require a physical button press?
What counts as compile proof, upload proof, probe proof, or browser proof?
Why is a working demo still not a production security device?
That is the sweet spot: learn the protocol, respect the boundary, and do not confuse interoperability with hardening.
THE HARDWARE
What the ESP32-Key Does
ESP32-Key turns small ESP32-S3 display boards into USB FIDO/WebAuthn lab authenticators.
The useful bits:
USB FIDO HID: The board enumerates as a FIDO HID authenticator for lab testing.
CTAP2 registration and sign-in: The firmware handles registration, assertions, discoverable credentials, credential management, host-entered lab PIN flows, and guarded reset paths.
BOOT user presence: The physical BOOT button is the intentional touch for sensitive operations.
Display prompts: The screen shows host activity, prompts, errors, and reset/admin state.
Two board profiles: The 1.8-inch Waveshare AMOLED profile and the 1.47-inch Waveshare LCD profile have separate build paths.
Host probes: A Python probe tool checks CTAPHID, CTAP2, U2F, PIN, browser-compat behavior, and cleanup reset paths.
Lab recorder option: The project can write redacted proof notes and diagnostics to a TF card without exposing credential material as a mass-storage device.
The 1.8-inch AMOLED board gives you a bigger visual consent surface. The 1.47-inch LCD board is the tiny version: compact, cheaper-feeling, and more demanding about screen layout. Both are interesting because they make a hidden security flow visible on hardware you can hold.
The design goal is not to beat a commercial authenticator. The design goal is to learn what a real authenticator has to do before you trust one.
THE TOOLS
Build / Test / Try It With Codex
For a first pass, focus on these paths:
Path | Best for | Hardware / Repo / Tool |
|---|---|---|
AMOLED lab key | larger display prompts and the main baseline script | Waveshare ESP32-S3-Touch-AMOLED-1.8, |
Tiny LCD lab key | compact board bring-up and proof discipline | Waveshare ESP32-S3-Touch-LCD-1.47, |
1. Start With The Safety Boundary
Before plugging anything in, decide what accounts are allowed.
Use only:
disposable accounts
local test relying parties
public demo relying parties such as WebAuthn.io
boards you own
hosts you control
Do not use the device for important accounts. The project stores or derives credential secrets from ESP32-S3 flash/NVS state. Physical access to the board may be enough for the wrong person with the right tooling to extract or clone useful material.
That is the whole operating boundary.
2. Pick The Right Profile
The two main build paths are:
fido-labfor the Waveshare ESP32-S3-Touch-AMOLED-1.8fido-lab-147for the Waveshare ESP32-S3-Touch-LCD-1.47
The debug profiles exist for bring-up work, but the realistic browser/WebAuthn path should not depend on serial debug output. A security-key-shaped demo should expose the FIDO interface it is trying to prove, not a pile of extra host interfaces.
3. Climb The Proof Ladder
ESP32-Key is useful because it names the proof levels.
Compile-ready: Arduino CLI build succeeded.
Uploaded: The board was flashed and verified.
Enumerated: The host sees a FIDO HID device.
Probe-proven: The host probe ladder passed.
Browser-proven: A real browser registration/sign-in succeeded.
That ladder is worth borrowing for almost every hardware project. A compile is not a flash. A flash is not a working device. A probe is not a browser. A browser demo is not a security certification.
The repo documents Chrome/WebAuthn.io registration and sign-in success for disposable lab flows, including non-discoverable and discoverable/resident credentials. That proves a useful lab path. It does not prove production security.
WHAT’S GOING ON
Recent News And Similar Projects
Passkeys are no longer a niche feature. FIDO's 2026 consumer and workforce report says passkeys have reached global scale, with 5 billion passkeys in active use, 90% consumer familiarity, 75% consumer enablement on at least some accounts, and 68% of surveyed organizations deploying, piloting, or rolling them out for employee authentication. That makes protocol literacy more valuable, not less.
WebAuthn Level 3 is still moving through the standards track. The W3C Web Authentication Level 3 document is a Candidate Recommendation Snapshot intended to gather implementation experience. That is a reminder that passkeys are mainstream in use, but the platform details still evolve.
The Waveshare boards are real embedded UI hardware, not just USB dongles.
Waveshare's 1.47-inch Touch LCD board uses an ESP32-S3R8, USB-C, BLE/Wi-Fi, PSRAM, 16MB flash, a 172 x 320 touch display, and a TF card slot.
The 1.8-inch AMOLED board adds a 368 x 448 AMOLED display, BOOT/PWR buttons, IMU, RTC, TF slot, microphone, speaker, and power-management hardware. Those extra surfaces matter because a lab authenticator should make consent and state visible.
Comparable commercial keys solve a different problem. A certified authenticator is for protecting real accounts. ESP32-Key is for understanding what the protocol asks a tiny device to do. Those are different jobs. The moment the project sounds like a replacement for a YubiKey, SoloKey, Titan key, platform authenticator, smart card, or passkey manager, the framing has gone wrong.
THE BOTTOM LINE
ESP32-Key is a small way to understand a big chain:
browser prompts
FIDO HID transport
CTAP2 commands
user presence
credential storage
signatures
relying-party decisions
proof boundaries
That is the lesson.
The project is interesting because it does not hide the rough edges. It tells you which board profile to use, which commands matter, which probes prove what, and why a functional WebAuthn demo still belongs on the bench instead of your real account list.
Build one if you want to learn how passkeys work under the hood.
Until next week,
Cypher
Check out my website for more content:
https://prosperlift.com





