简体中文
  • 认证
  • 密码
  • oauth
  • oidc
  • 身份

密码并没有消亡

去年,互联网上充斥着新闻报道,称大型科技公司联合起来要消除密码。一些创业公司甚至宣布密码已经过时和过时。

Gao
Gao
Founder

引言

去年,在网络上充斥着新闻报道说,像苹果,谷歌和微软这样的大型科技公司正在联合起来消除密码。一些创业公司甚至宣布密码已经过时和陈旧。当我深入研究身份管理领域几个月后,我开始质疑这些声明的有效性和实用性。

密码的作用是什么?

乍看之下,答案似乎显而易见:密码被用于登录和验证身份。然而,如果我们考虑到密码不能真正第验证你是谁,我对此的看法就有所不同了:

  • 当用户使用电子邮件和密码登录网站时,网站无法确定这些凭证背后的实际人物。他可能是人,甚至可能是猫。
  • 任何人只需输入正确的PIN码就可以解锁iPhone。

实际上,密码的目的是匿名地证明某物的所有权:用户账号,设备或门的接入权限。

当前的“密码杀手”

前面提到的公司提出了各种“密码杀手”。很多人声称,他们提出比在身份验证过程中记住复杂、静态密码更安全的替代方案。然而,这些替代方案大多数并不完全实用,无法完全移除密码。

FIDO 身份验证

FIDO (快速身份线上认证),在其官方文档中解释的身份验证方法,利用公钥加密技术进行注册和登录 (值得注意的是,WebAuthn 是 FIDO2 规范的核心组成部分)。表面上看,这个过程似乎很吸引人:

简单,对吗?可惜,现在还有一个大问题在阻碍我们:兼容性。相比传统的"标识符和密码"组合,FIDO 身份认证需要:

  • 网站或应用程序支持 FIDO。
  • 浏览器和/或操作系统支持 FIDO。
  • 用户设备要有一个用户友好的校验机制。

一旦无法满足其中的任何要求,FIDO 身份认证就无法使用,只能fallback到其他的方法。

此外,即使所有的条件都满足了,什么才算是设备上的"用户友好的校验机制"呢?目前,这可能包括指纹或面部识别等生物识别方法,并配备如 PIN 码(也就是密码)这样的备选选项,最终我们又回到了原点。

从技术上讲,它不是一个"密码杀手",更象是一个通过密码装备的更安全和更用户友好的身份验证或验证流程。

一次性密码

尽管名字包含了“密码”这个词,但一次性密码 (OTP)并不是传统的密码,因为它们是动态的。OTP主要有两种类型:

  • 基于时间的一次性密码 (TOTP):算法产生,使用当前时间作为唯一性的来源。主要用于多因素身份验证 (MFA) 或者2FA。
  • 短信/电子邮件一次性密码:由服务器端使用随机算法生成。在一些国家,它已经作为一种首选登录方式被广泛采用。

TOTP 可能并不被大多数人知晓。例如,当一个网站提示让你设置MFA,并让你使用像 Google Authenticator 或 Duo 这样的应用通过扫描一个QR码时,你很可能就是在使用 TOTP。你可能也会注意到,通常网站会显示一个长长的"恢复代码",并建议你提前保存,因为它只会被显示一次。有的网站甚至鼓励用户将其打印出来。本质上,这个恢复码的功能就如同一个长密码。

至于短信/电子邮件 OTP,他们通常是昂贵且不稳定:

  • 从零开始创建短信或电子邮件发送者需要进行设置。
  • 电子邮件发送者需要建立积极的"声誉"以提高送达率,否则,发送者可能会被标记为垃圾邮件。
  • 每个国家都有自己的移动网络运营商,这导致了送达时间的不确定性,尤其是对于初创公司,发送短信的成本可能会很高。

生物识别

"生物识别"这个词指的是仅通过生物识别方法进行在线验证。实际上,和其他方式相比有一个基本的区别:生物识别将原本的"证明你拥有某物"的任务转变为"证明你是谁"。由于隐私问题,生物识别方法主要被用于本地身份验证。

然而,密码并不完美

如我们所见,"密码杀手"基本上指的是隐藏密码或者以密码作为后备选项。基于我们的讨论,这里是一些密码优点的总结:

  • 可获取性和兼容性:密码可以在各种系统中使用,对大范围的用户来说都是可获取的。
  • 成本效率和通用性:基于密码的认证通常比其他方式更省钱,也适应各种场景。
  • 匿名和隐私:密码允许匿名使用,并保护用户隐私。

但是每一面都有两个面,密码尽管有优点,但是仅依赖密码进行认证存在着显著的脆弱之处。它们对于终端用户来说难以管理,如果网站所有者没有遵循适当的安全实践,密码将会很容易被破解。危险的安全实践包括但不限于:

  • 允许使用弱密码或已泄露的密码。
  • 没有对连接强制执行 HTTPS。
  • 使用不安全的哈希算法。
  • 未严格遵守经过测试标准如OAuthOpenID Connect (OIDC)。
  • 将数据库暴露给公众。

结论

我的目的不是贬低上述的任何一种身份验证的方法。相反,当我在构建 Logto 的时候,我对这些杰出的身份验证方法和他们背后的人们产生了深深的敬意。

然而,实现100%的安全是一个无法达到的目标。我们可以奋斗的是降低攻击的可能性。一种有效的办法是结合基于密码的认证和基于当前设备或环境的一次性密码,这种方式多了一层额外的验证,获得了广泛的应用。通过利用不同认证技术的优势,我们可以创建一个层次化的方法,提供更强的保护。

总的来说,当密码实际上并没有被消除,更多聚焦于"密码杀手"这种热词,不如将更多注意力放在在安全与用户体验之间达到平衡问题。这需要理解各种认证的方法的优点和局限性,并以确保用户数据安全和无缝的用户体验的方式来实现它们。