>经常在前端社区中被忽视,但Passkey对用户体验的影响,尤其是在身份验证和形式处理方面,是不可否认的。 本文探讨了Passkeys和Webauthn API,对这项新兴技术提供了全面的了解。 目录的
>键术语
依赖派对(服务器):
服务器处理身份验证请求。 我们将在本文中使用“服务器”。公共密钥公开访问,而私钥仍将存储在生成设备上。 WebAuthn的关键限制是设备依赖性。丢失设备意味着失去访问权限。 Passkeys通过云同步解决此问题,从而使多个设备访问访问。 但是,重要的是要注意,也存在单个设备凭证。
>>目前,iOS,MACOS和Android为云同伴Passkey提供了全面的支持,尽管浏览器兼容性仍然是一个因素。 Google密码管理器和Apple iCloud钥匙扣有助于同步。
>公共密钥密码学采用签名。 通过签名算法使用私钥处理数据,然后使用公共密钥进行验证。 任何人都可以生成一个密钥对,但是只有专用密钥才能使用相应的公钥创建签名。 此签名替换了密码。 服务器存储公钥,身份验证涉及通过签署随机挑战来验证私钥的拥有。
这种方法消除了与密码泄漏相关的风险。 如果数据库被妥协,则仅暴露了公共密钥,使攻击者无用。 由于浏览器记住凭据,简化了登录过程,因此被遗忘的密码成为过去的事。 生物识别技术或引脚可以增强安全性。加密解释
。 通过签名和验证来确保真实性。 发件人的私钥符号带有消息哈希,只能使用发件人的公钥进行验证。> >访问Passkeys
客户端到身份验证器协议(CTAP)提供了一个接口,用于通过各种方法(NFC,USB,蓝牙)访问身份验证器。 一个独特的功能是使用手机(通过蓝牙)作为缺乏本机Passkey支持的设备的身份验证器。
> Passkeys vs. Webauthn在存储和登录过程中,
passkeys(多设备)与WebAuthn键(单个设备)不同。 WebAuthn需要一个用户句柄和一个允许的列表,而Passkeys则利用服务器的域名识别关联密钥,从而简化了登录过程。 在密码学上,它们本质上是相同的。WebAuthn和Passkey生成都涉及接收服务器挑战并使用navigator.credentials.create
>签署新挑战,然后由服务器验证。navigator.credentials.get
详细介绍了Passkey实现
(注册)和
响应包括公共密钥和navigator.credentials.create
(包含
// ... (code snippet for PublicKeyCredentialCreationOptions) ...
)。 服务器验证此数据并存储公共密钥,ID,以及(可选)clientDataJSON
和cose算法。type
断言challenge
origin
attestationObject
>处理断言。
(包含原点哈希和navigator.credentials.get
)。 该服务器验证签名,
// ... (code snippet for PublicKeyCredentialRequestOptions) ...
>
authenticatorData
潜在的缺点signCount
clientDataJSON
>当前限制包括有限的操作系统支持(尤其是Windows和Linux)以及Google和Apple的Passkey平台之间的互操作性。signCount
>
更多资源
演示github存储库
以上是Passkeys:什么哎呀,为什么?的详细内容。更多信息请关注PHP中文网其他相关文章!