Ephemeral Key Derivation using WebAuthn
PRF extension + HKDF for keys that exist only while the authenticator cooperates — with a path to multi-chain wallets that never store seed material on disk.
01 · The problem
Seed phrases punish users and concentrate risk. Server custody reintroduces the honeypot. Passkeys already prove presence and user verification — the missing piece is deriving material without persisting it.
02 · PRF as root secret
The WebAuthn PRF extension returns deterministic pseudo-random output for a given salt, gated by the same ceremony as a normal assertion. High-entropy seed you never write to localStorage.
03 · Derive, use, forget
// assertion with prf.eval.salt1
const prfOut = assertion.getClientExtensionResults().prf.results.first;
// domain-separated chain keys
const evmKey = hkdf(prfOut, { info: enc("stall.one/evm/v1") });
const solKey = hkdf(prfOut, { info: enc("stall.one/sol/v1") });
// sign → zeroize when session ends
04 · Multi-chain & rotation
One ceremony, many domain-separated child keys. Info strings keep EVM and Solana material non-interchangeable. Rotate by incrementing a version label — no new 24-word mnemonic.
05 · Threat notes
- PRF availability is authenticator-dependent
- XSS can still abuse a live session
- Pair with CSP + short-lived in-memory handles
- Better default than seeds in IndexedDB
Visual sandbox · cryptographic pipeline
Simulated data flow. The WebAuthn ceremony acts as the root. HKDF expands that single high-entropy salt into isolated key branches via domain info strings. Mock keys only — no real authenticator call.
Prefer ephemeral derivation over durable seed storage. This is not a silver bullet — it is a better default for biometric-gated, multi-chain signing without plaintext mnemonics on disk.
06 · Takeaway
WebAuthn PRF + HKDF gives a path to stateless wallets: authenticate, derive, sign, forget. Live demo: passkeywallet.vercel.app.
Note: the live demo is not maintained and may not work.