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

时间:2019-02-28 10:44:54

标签: smartcard pkcs#11 pkcs11interop

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

这是场景:

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

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

那是什么问题?当提供商使用用户PIN生成密钥并编写证书时,我们可以通过SetPin互操作操作以编程方式对其进行更改,或者让客户端稍后在家里使用适当的软件对其进行更改。发生问题时,当客户希望为其智能卡获取新证书,并且在此阶段,提供商不知道该卡的用户PIN(即,他无法使用卡上的任何加密机制)。如果客户将提供者的密码提供给客户,他将能够使客户使用其证书签署一些随机文档,而不是出于正确的原因使用PIN(利用PKCS#11机制来编写新证书)< / p>

所以我的问题是:

我们是否可以通过某些方式在卡上使用第二个用户PIN(针对提供者和客户分别使用)?我们是否可以使某些PKCS#11机制仅对特定用户可用(例如,仅为提供者生成密钥对,并仅对客户端使用证书签名文档)?

解决此类问题的标准方案是什么?我很高兴听到您的意见。

1 个答案:

答案 0 :(得分:0)

尽管您正确描述了用户和SO-PIN,但是真实卡可能具有更多的PIN,以及其他身份验证方法,例如生物特征身份验证和质询响应测试(证明了秘密对称密钥)。

对于针对系统的身份验证,PIN机制不合适(可以通过重播进行攻击),质询-响应是典型的解决方案。这样做还有一个好处,就是不允许执行签名。

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

还可以对整个过程进行重新排序,因此用户PIN尚未生效,因此在编写证书时无法创建签名。只有在此之后,用户才能选择PIN值并进行设置。