WebAuthn 凭证 ID 生成器
指导
WebAuthn 凭证 ID 生成器
以 Base64url 格式生成具有加密安全性的 WebAuthn 凭证 ID,或解码现有凭证 ID 以检查其原始字节。设置字节长度(16–64 字节),生成多个 ID 的批次,并解码任何 Base64url 凭证 ID 以查看其字节计数和十六进制表示。
如何使用
设置字节长度(根据 FIDO2 规范推荐 32 字节),选择要生成的凭证 ID 数量,然后点击 产生。每个 ID 都以 Base64url 格式显示,并带有复制按钮。使用解码部分检查任何现有凭证 ID。
特征
- 可配置长度 – 16 至 64 字节(FIDO2 推荐 32 字节)
- 批量生成 – 一次多个 ID
- 凭证 ID 解码器 – 将 Base64url 解码为十六进制和字节计数
- Base64url 输出 – 网址安全,无填充,可用于 WebAuthn API
- 加密安全 – 使用
crypto.getRandomValues() - 仅客户端 – ID 永远不会离开您的浏览器
常问问题
-
什么是 WebAuthn 和凭证 ID?
WebAuthn(Web 身份验证 API,W3C 标准)通过公钥加密实现无密码身份验证。当用户注册密码凭证或安全密钥时,身份验证器会生成一个密钥对并返回一个凭证 ID — 一个唯一的不透明字节序列,用于标识凭证。服务器将凭证 ID 与公钥一起存储。在身份验证过程中,服务器会将凭证 ID 发送给身份验证器,以提示身份验证器使用相应的私钥对挑战进行签名。
-
为什么凭证 ID 必须是加密随机的?
可预测的凭证 ID 会允许攻击者枚举已注册的凭证,可能发现哪些用户已注册密码凭证并进行有针对性的网络钓鱼。FIDO2 规范要求身份验证器生成的凭证 ID 必须与随机数据无法区分。在服务器端为测试或模拟身份验证器生成凭证 ID 时,使用像
crypto.getRandomValues()这样的 CSPRNG 是强制性的。 -
什么是 Base64url 编码以及为什么 WebAuthn 使用它?
Base64url 是 Base64 的一种网址安全变体,它将 + 替换为 -,将 / 替换为 _,并省略 = 填充。WebAuthn 使用 Base64url 是因为凭证 ID 必须作为 JSON 字符串在 authenticatorData 和 clientDataJSON 结构中传输。标准的 Base64 字符(+ 和 /)在 JSON 上下文中需要进行网址编码,增加了复杂性。Base64url 在不进行转义的情况下,使数据紧凑且对网址、标头和 JSON 安全。
-
WebAuthn 与传统密码身份验证有何不同?
WebAuthn 使用非对称加密:私钥永远不会离开身份验证器(硬件安全密钥或平台身份验证器,如 Face ID/Touch ID),因此服务器上没有什么可以被窃取。服务器仅存储公钥和凭证 ID。身份验证通过使用用户私钥对服务器生成的挑战进行签名来证明私钥的所有权。即使服务器被攻破,攻击者也只能获得公钥——在用户设备上没有私钥的情况下是无用的。
