为什么不使用客户端证书进行身份验证?然后用户只需记住 1 个密码即可解锁存储证书的 Windows 帐户。我了解如果用户从不同的机器访问网站,则必须同步证书。但是对于windows帐户使用一个强密码,用户使用客户端证书进行身份验证不是更方便更安全吗?
我在这里假设有什么问题吗?
为什么不使用客户端证书进行身份验证?然后用户只需记住 1 个密码即可解锁存储证书的 Windows 帐户。我了解如果用户从不同的机器访问网站,则必须同步证书。但是对于windows帐户使用一个强密码,用户使用客户端证书进行身份验证不是更方便更安全吗?
我在这里假设有什么问题吗?
最紧迫的原因是人们从多台电脑登录:家用电脑、笔记本电脑、平板电脑、工作电脑、朋友的电脑、网吧等。虽然理论上可以有一个系统来同步您的证书 - 无论是通过云服务,或您携带的物理设备 - 这超出了大多数用户的能力。
现在,有人可以为您创建一个身份验证服务吗?这会处理引擎盖下的所有证书吗?嗯,这正是Mozilla Persona所做的。
第二个原因是有数以百万计的网站已经在使用密码。更改所有这些以使用其他身份验证方案(无论是 OAuth、SRP、证书还是其他)将是一项艰巨的任务 - 为什么网站会打扰?他们的动机是什么?
因此,密码管理器是解决身份验证问题的实用得多的技术。好的,它们不像客户端证书那样安全,但是差异很小。像LastPass这样的系统为您提供单点登录界面,并且可以与(几乎)任何网站一起使用。
我看到两个主要原因:
基于证书的身份验证很难解释。今天几乎每个人都了解如何使用基于密码的身份验证;即使并非总是适用所有安全规则(足够长,由数字、字母和特殊字符混合组成,大多数会不时更改,不得共享......),但几乎每个人都知道这些。更改为基于证书的身份验证需要重新教育用户,让我们解释它是如何工作的并使用它(什么是证书,什么是私钥,它存储在哪里,为什么它在我的手机上不起作用电话...)。此外,用户不喜欢改变他们的习惯。
证书管理复杂且昂贵。即使以安全的方式使用密码,也只需要应用程序中的几行代码和数据库中的一些附加列。如果您想将证书分发给您的应用程序的用户,您必须设置一个Public Key Infrastructure。根据经验,我知道从技术和组织的角度来看,创建 PKI 很复杂:您必须处理用户注册、证书分发、证书吊销、证书吊销列表的发布、证书策略......
一个例子:几年前,法国税务服务网络应用程序决定将证书认证系统(证书也用于数字签名)替换为简单的密码认证。原因:向用户解释如何使用的复杂性(例如证书的有效期为 3 年,但大多数用户每年都在申请新的证书)以及管理这数千个证书所需的基础设施成本.