学习web的学习心得:WebAuthn是如何工作的
学习web的学习心得:WebAuthn是如何工作的目前,所有主流浏览器——Chrome、Firefox、Edge 和 Safari——都支持 WebAuthn 规范。如果您的手机(iPhone 或 Android)具有指纹读取器或面部扫描仪,则它支持 WebAuthn。Windows 通过 Windows Hello 提供 WebAuthn 支持。通常,当人们想到公钥密码学时,人们会想到用它来向一个人发送一个秘密消息,然后这个人将它解密并阅读它。好吧,这可以反过来工作。如果您向他们发送一条使用他们的公钥加密的消息,那么只有他们——并且只有他们——是唯一可以解密的人,因为只有他们拥有与给定公钥对应的私钥。一旦他们这样做了,您就可以高度确信他们就是他们所说的实体。FIDO 很快就制定了开放和免费的无密码身份验证规范。关键规范是万维网联盟 (W3C) 批准的WebAuthn标准。WebAuthn 使用公钥加密技术允许浏览器和 Web 资源使用无
每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。WebAuthn 是定义无密码身份验证方式的 FIDO 协议。本文简要介绍了该过程以及用户如何看待它。
在我之前的帖子中,我讨论了为什么密码充其量是有问题的,而在最坏的情况下是严重的安全威胁。但是,您目前可能有一个基于密码的身份验证解决方案。希望您已经实现了一些多因素身份验证。您甚至可能已经实施了蛮力密码保护和密码泄露检测。但最后,您意识到密码仍然是一个问题。当然,读完这些之后,你可能会想,“但还有什么?”
值得庆幸的是,一些非常聪明的人一直在研究这个问题。他们组建了一个组织,解决了这个问题,并提出了一个令人愉快的有效解决方案。
FIDO 联盟2012 年 7 月,快速身份在线联盟——FIDO——由 PayPal、联想和其他有兴趣摆脱密码的组织组成。很快,谷歌、微软和苹果以及许多其他公司都加入了进来。
FIDO 很快就制定了开放和免费的无密码身份验证规范。关键规范是万维网联盟 (W3C) 批准的WebAuthn标准。WebAuthn 使用公钥加密技术允许浏览器和 Web 资源使用无密码方法(例如生物识别技术)进行身份验证。
该解决方案正式称为“多设备 FIDO 凭证”,但非正式地称为“密钥”。密钥基于 FIDO 开发的称为 WebAuthn 的协议。
WebAuthn 的工作原理WebAuthn 非常聪明。它利用公钥加密的力量为用户创建一种登录移动和 Web 应用程序的方式,而这些应用程序根本不需要存储任何秘密信息。
通常,当人们想到公钥密码学时,人们会想到用它来向一个人发送一个秘密消息,然后这个人将它解密并阅读它。好吧,这可以反过来工作。如果您向他们发送一条使用他们的公钥加密的消息,那么只有他们——并且只有他们——是唯一可以解密的人,因为只有他们拥有与给定公钥对应的私钥。一旦他们这样做了,您就可以高度确信他们就是他们所说的实体。
目前,所有主流浏览器——Chrome、Firefox、Edge 和 Safari——都支持 WebAuthn 规范。如果您的手机(iPhone 或 Android)具有指纹读取器或面部扫描仪,则它支持 WebAuthn。Windows 通过 Windows Hello 提供 WebAuthn 支持。
所有这些都很好地转化为无密码身份验证。WebAuthn 通常是这样的:
- 你想登录一个网站,所以你去它。
- 该网站要求您提供唯一标识符,通常是您的电子邮件地址或电话号码。他们也可能会要求提供用户名。
- 该网站获取信息并意识到它以前从未听说过您。
- 该网站说,“嘿,给我一个我独有的公钥。”
- 您在设备上验证自己。这可以通过生物识别、PIN 或插入 Yubikey 之类的东西。
- 验证后,您的设备会生成一个仅与该网站关联的唯一公钥/私钥。
- 您向网站发送您的公钥。该站点将其存储以供以后使用。您将私钥保存在您的设备上。请注意,任何秘密信息都不会离开您的设备。
- 此时,该网站不知道您的真实身份,因此它可能想要验证您的真实身份,通常通过向您的电子邮件或电话号码发送一个魔术链接。请注意,应用程序不必这样做,因为它不是通过协议要求的,但它可能会希望它可以与您通信。
- 您单击消息中的链接,网站就知道您实际上是该标识符另一端的人。现在您已通过该站点的验证。
- 下次您想登录时,请访问该站点并提供您的标识符(电子邮件、电话号码..)。
- 该站点向您发送已知的数据块作为挑战。
- 然后,您的设备会使用您的私钥签署此质询并将其发回。
- 该站点使用您的公钥解密数据。如果您发回的内容与网站发送的内容相匹配,您将获得身份验证。
现在有很多步骤,看起来很复杂,但大部分都发生在幕后,是通过WebAuthn 的实现来完成的。
但更重要的是,它对您的用户来说非常简单。他们所提供的只是指纹读取器或FaceID印象或其他一些“你是”的东西。代码完成其余的工作。它工作得很好,非常安全,并且可以快速轻松地发生。无需摸索密码,无需启动身份验证器应用程序,无需检查您的电子邮件或文本,也无需担心妥协。
密钥如何适应?从本质上讲,密钥实际上只是为用户登录的每个位置创建的私钥。该密钥安全地存储在您手机上的“可信平台模块”或 TPM中。TPM 是现在大多数现代设备和计算机都包含的特殊芯片。例如,它必须存在才能安装 Windows 11。即使不法分子拥有您的手机,TPM 也很难妥协。
密钥的好处在于它们可以在不同的设备之间共享,包括在生态系统内部和(最终)在生态系统之间。谷歌、微软和苹果已经找到了一种方法,可以将这些密钥安全地保存在他们的生态系统中,这样你甚至可以在设备之间共享它们。甚至有一种方法可以从一个平台移动到另一个平台。
例如,如果您是一位全心全意的 Apple 人,您可以在 iPhone 上使用密码登录一次网站,然后该密码会自动在您的所有 Apple 设备之间共享。
如果您是“混血”人士并且拥有 MacBook 和 Android 手机,您可以通过 QR 码将您的登录信息从 MacBook 传输到 Android 手机。这个过程非常安全,它使用蓝牙LE来确保显示二维码的设备和读取二维码的设备彼此靠近。
此外,您的 Android 手机会在此过程中创建一个新的密钥,然后可在 Google 生态系统中共享。您可以将登录名迁移到使用相同系统的 Windows 设备。
这里的好处是,如果您丢失或升级手机,您的所有密钥都可以立即在您的新设备上使用,没有任何麻烦。
这就是一切的运作方式。但和以前一样,这提出了问题。“这样更安全吗?” 可能是一个出现。这将在我的下一篇文章中介绍。