你很快就指出了密码的缺陷——你是对的。但是没有其他方法具有密码的所有优点,因此任何替代方法都带来了好处和成本。
关于这个话题,我推荐剑桥安全小组的工作。您可能对他们博客上的身份验证标签感兴趣。最近一篇关于该主题的论文是这篇博文中总结的替代密码的探索:Web 身份验证方案的比较评估框架) 。
不幸的是,本文没有分析您提出的方案,私钥存储在用户的 PC 上,而用户在注册时提供的公钥作为其身份的一部分。但是我们可以查看论文中使用的标准,看看哪些标准失败了。
- Scalable-for-Users:这取决于您是希望用户拥有一个身份还是每个服务一个身份。
- Nothing-to-Carry:只要您接受将私钥存储在手机中,您的方案就具有Quasi-Nothing-to-Carry属性。
- Easy-Recovery-from-Loss:只要私钥专门用于身份验证就可以了——更改私钥就像重置密码一样简单。(作者认为密码重置不在他们的研究范围内。)
- 服务器兼容:不,就像密码的任何其他替代方案一样,必须修改服务器。诚然,这与其说是技术问题,不如说是营销问题。
- Browser-Compatible:这取决于客户端如何使用私钥(这对安全性有影响)。
- Resilient-to-Theft:密码不是很有弹性,但记忆的密码对盗窃具有弹性,这与存储在设备上的密钥不同。
我看到的两个主要障碍是设备被盗的风险和多个身份的管理。通过使用密码保护私钥可以在一定程度上防止设备盗窃,但密钥文件会受到攻击者无限制的高速暴力搜索,这与用于在线身份验证的密码不同,可以被限制。
多个身份的管理是一个更大的问题:这意味着用户必须决定是否在多个站点上使用相同的身份。重复使用相同的密钥很方便,但很容易被发现,因此这是一个主要的隐私问题。虽然这对于安全性来说是一个坏主意,但用户可以(并且确实)重复使用密码,而不涉及隐私。在不同的站点上使用不同的身份需要对多个密钥进行繁琐的管理,这比一般用户想要的负担更大。更好的方案是将私钥与一些秘密存储库结合起来,这与密码管理器共享所有困难。