验证证书是否属于给定用户

时间:2014-05-29 10:07:10

标签: client-certificates certificate

我如何(或者,是否可以)验证用户证书是否属于给定用户?

例如,在电子投票系统中,我想禁止拥有证书C1的用户A为其他人投票。

如果某人出示C1并试图投票,比如用户B,这是错误的组合,并拒绝他投票的权利,我该如何发现?

是否可以使用证书执行此操作,还是应该使用其他用户名和密码来确认身份?

2 个答案:

答案 0 :(得分:2)

使用X509证书的主题字段来识别此人。鉴于您完全信任证书颁发者,这不可能是伪造的。

如果B人可以获得A组证书,他/她当然可以在他/她的位置投票,但在这个阶段你做不了多少(添加密码?谁保证B不知道还有?)。

一个严重的问题是,在许多(如果不是全部)民主投票制度中,投票是秘密的。通过让用户通过证书识别他/她自己并可能在他们的会话中存储身份信息,您将无法遵守这一基本约束。

如果申请是关键的(即真实的,区域/国家的电子投票系统),那么:

  1. 您应该考虑使用X509物理令牌,即智能卡来安全地存储选民证书和私钥。
  2. 不应该在StackOverflow上寻求建议。聘请一位忠诚而有能力的安全顾问。

答案 1 :(得分:0)

使用客户端SSL证书时,Web服务器会检查证书指纹,该服务器会对用户进行唯一身份验证。在这种情况下,您将没有典型的登录表单,因为服务器可以在没有它的情况下验证您的浏览器。

投票步骤只会在 用户/浏览器进行正确身份验证后发生。 这并不一定意味着您将会话绑定到用户名。您只需将其绑定到唯一标识符即可。

可能需要使用额外的身份验证步骤(用户名/密码,TOTP,...),但只有在所有这些步骤成功后才能成功进行身份验证。

请注意,绝大多数网站目前不使用客户端证书进行身份验证。现在这是一种非常罕见的做法。