使用Passkeys加密:PRF扩展与hmacCreateSecret扩展该如何选择?
WebAuthn扩展
prf与hmacCreateSecret的疑问解答 背景说明
在Chrome 130.0.6723.117版本中,navigator.credentials的Passkey API同时支持prf和hmacCreateSecret两个扩展。二者特性相似:均接收1个必填的salt参数和1个用于密钥轮换的可选salt参数,输出结果可用于派生对称加密密钥。
疑问解答
这两个扩展的功能用途是否完全一致?
不完全一致。hmacCreateSecret是FIDO2早期推出的过渡性扩展,核心是让认证器生成HMAC密钥材料用于后续密钥派生;而prf是WebAuthn 3规范中正式标准化的扩展,它是对hmacCreateSecret的优化与规范统一,在参数定义、错误处理、流程逻辑等细节上更严谨,同时兼容了hmacCreateSecret的核心能力。简单来说,prf是官方标准化后的正式版本,hmacCreateSecret属于早期实验性实现。若需创建可导出的对称密钥(例如供认证器外部的加密服务使用),应当选择哪一个扩展?
优先选择prf扩展。原因有两点:一是prf是WebAuthn 3的标准扩展,后续浏览器和认证器的支持会更广泛、实现更统一,兼容性更有保障;二是prf在密钥派生的流程定义上更清晰规范,能更好适配导出对称密钥到外部服务使用的场景。而hmacCreateSecret作为早期非标准扩展,存在设备/浏览器实现差异的风险,长期来看有被prf取代的趋势。
内容的提问来源于stack exchange,提问作者Eri
相关产品推荐
相关产品推荐

