PKCS#11 - 如何在已经配置的智能卡上写入新证书时保护智能卡所有者免受恶意智能卡提供商的攻击

问题描述 投票:2回答:1

我目前正在学习PKCS#11,并且在某种情况下我不知道如何处理。

这是场景:

  • 想要从提供商处获取证书的客户输入他的数据,
  • 客户来到提供商设施,在那里他可以获得订购的智能卡,上面写有证书(合格的,商业的),
  • 智能卡必须要做两件事:提供商必须为两个证书生成密钥对,然后在卡上写一个证书(需要用户密码)

据我所知,智能卡有两种类型的用户:普通用户(用户PIN)和SO(SO PIN)。

那么问题是什么?当提供程序使用用户PIN生成密钥和编写证书时,我们可以使用SetPin互操作操作以编程方式更改它,或者让客户端稍后在家中使用适当的软件进行更改。当客户想要获得他的智能卡的新证书时出现问题,并且在此阶段,提供商不知道卡的用户PIN(即他不能使用卡上的任何加密机制)。如果客户端会为提供者提供密码,他就可以让客户使用他的证书签署一些随机文件,而不是使用PIN来解决正确的原因(利用PKCS#11机制编写新证书)

所以我的问题是:

对于某些令牌,我们是否有任何方式可以在卡上(提供商和客户端分开)获得第二个用户PIN?我们是否可以使某些PKCS#11机制仅对特定用户可用(例如,仅为提供者生成密钥对,并仅为客户端签署具有证书的文档)?

处理这类问题的标准化方案是什么?我很高兴听到你的意见。

smartcard pkcs#11 pkcs11interop
1个回答
0
投票

当您正确描述用户和SO-PIN时,真实卡可能具有更多的PIN和其他身份验证方法,例如生物识别身份验证和质询响应测试(证明秘密对称密钥的知识)。

对于针对系统的身份验证,PIN机制是不合适的(可以通过重放进行攻击),挑战响应是典型的解决方案。这也具有不允许执行签名的优点。

另一个选项(如果密钥只能生成一次)将通过证书文件的生命周期。未初始化的文件可能根本不需要身份验证,只有在写入证书后才会更改文件的生命周期。

也可以重新排序整个过程,因此用户PIN尚未生效,因此在编写证书时不能创建签名。只有在此之后,用户才会选择PIN值并确定该值。

© www.soinside.com 2019 - 2024. All rights reserved.