Most products issue 5–10 backup codes for account recovery.
I implemented a different model in Toqen:
• a single 15-character recovery code
• 31-symbol alphabet (ambiguous characters excluded)
• ~74 bits of entropy
• CSPRNG generation
• no modulo bias
• strict per-identifier rate limiting
• automatic rotation after use
Search space:
31^15 ≈ 1.92 × 10^22
~74 bits entropy.
Under an online threat model, brute-force becomes mathematically impractical.
The idea is to reduce complexity without reducing security.
Would genuinely appreciate constructive critique:
• threat model gaps
• distributed attack risks
• UX trade-offs
• anything that looks fragile
You can try the implementation here:
https://toqen.app
Interested in honest feedback.
Happy to answer questions about the architecture or integration details.