理论上,使用公钥进行身份验证应该比使用密码简单得多。最终用户无需记住任何事情,只需单击一个按钮即可完成注册。出于所有意图和目的,这应该比传统的基于密码的身份验证更加用户友好。
那么,为什么Webauthn不到处使用呢?为什么它还没有替换密码?
理论上,使用公钥进行身份验证应该比使用密码简单得多。最终用户无需记住任何事情,只需单击一个按钮即可完成注册。出于所有意图和目的,这应该比传统的基于密码的身份验证更加用户友好。
那么,为什么Webauthn不到处使用呢?为什么它还没有替换密码?
它没有那么灵活。
我在朋友家,我在手机上收到警报,有人从我的银行账户中汇出一些钱!我需要登录我的银行网站以查看最新信息。但是,我的公钥/证书在我的电脑中,我没有使用我朋友的机器注册到银行。或者我忘记随身携带我的 Yubikeys。现在我该怎么做才能快速登录?
它还没有必要的客户支持。
我们将 webauthn 用于组织中的一些内部工作流程。它在 Web 浏览器上完美运行,但还没有对其他客户端的必要支持。例如,有几个应用程序在 Windows/Linux/Mac 等上作为桌面客户端运行。
如果您查看 FIDO 联盟网站上的支持矩阵,他们对某些场景的支持仍在进行中: 来源
Electron 是一个流行的基于 Chromium 浏览器的应用程序框架。它还没有对 U2F 支持的明确答案。一些用户声称它可以工作,而有些用户则无法正常工作。
如果您的应用程序将在浏览器之外得到支持,那么目前您没有太多选择。
最迟在 2020 年 2 月,主要设备制造商之一苹果公司加入了 FIDO 联盟,以使用户远离密码。因此,甚至没有足够的紧迫性来支持许多用户场景。
完全替换密码并非易事
摆脱密码意味着改变用户行为。这需要一段时间。在这里,您的安全机制的可用性起着巨大的作用。
在 Face ID、手机中的生物识别身份验证和 Windows Hello 出现之前,公众没有廉价的方法可以使用密码以外的任何东西登录。这些都是相当新的技术。
到目前为止,手机在集成单独的身份验证器(如滑动模式、生物识别等)来替换密码方面做得很好。但是,除非我们获得可用于桌面大众市场的如此简单和免费的技术,否则很难替换密码。
极限的回答解释了为什么这项技术还没有起飞的三个很好的原因,但我还有一个:
开发人员的时间有限且昂贵
当公司查看需要在他们的产品中实现什么时,他们中的大多数人不会对花时间添加额外的身份验证方法感兴趣,因为他们“已经拥有完全可用的方法”。这与许多公司仍然没有多因素身份验证和/或现代密码复杂性要求的原因相同。
支持 Webauthn 作为主要身份验证方法的大型站点的一个示例是 eBay。他们的博客文章只提到了移动设备,但我在笔记本电脑上使用它,带有指纹读取器和 Windows Hello:
我编写软件,我知道我可以为我自己的产品实现这一点,除了一个问题:eBay 有 30,000 名员工,其中包括很多开发人员,而我工作的公司只有不到十几个开发人员。
与其他答案中的原因一样,这也将及时解决,它只需要等到我们获得较低优先级的 TODO 项或有某些理由使其具有更高优先级。