WebAuthn PRF Test

静态站 · 无服务器 · challenge / salt / PRF / 加密全部在本机浏览器内完成

0环境检测

1创建测试 Passkey

创建一个 resident passkey,并带上 prf 扩展。 成功后 getClientExtensionResults().prf.enabled 为 true,说明这个 credential 真的支持 PRF。

2本机 PRF 测试

用随机 salt 发起一次带 prf.eval.first 的 assertion。 页面只显示 SHA-256(PRF output),不显示 PRF 原值。

3再执行一次

用同一个 salt 再跑一次,比较两次的指纹是否一致。 这一步测的是同一 credential 在同一设备上的 PRF 稳定性。

4跨设备测试(PC → QR → 手机)

真实跨设备调用:点击下面的按钮,在浏览器弹窗里选择“使用手机 / 其他设备”,扫描浏览器生成的二维码。PRF 指纹直接返回电脑。手机上需已有本站的 Passkey。

补充:在手机网页上运行 PRF

PC 生成带当前 salt的二维码 → 手机扫码打开 → 手机用自己的 passkey 算 PRF → 拿到指纹后传回 PC。传回方式二选一:手机复制粘贴,或手机再显示一个二维码由 PC 扫。

5比较

只在同一 credential、同一 salt 下判断 PRF 是否稳定。不同 credential 的结果不能用来判断跨设备一致性;同步或跨设备是否返回相同结果,以实测为准。

6密钥保管(静态加密演示)

磁盘上只留 encryptedPrivateKey 与 wrappedDEK。 解开时 DEK 与私钥都只短暂以 byte 形式存在,随即导入 extractable = false 的 CryptoKey 并清空 buffer。