【问题标题】:PKCS#11 - How to protect smartcard owner, from malicious smartcard provider when writing new certificates on an already provisioned smartcardPKCS#11 - 在已配置的智能卡上写入新证书时,如何保护智能卡所有者免受恶意智能卡提供商的侵害
【发布时间】:2023-03-11 06:53:01
【问题描述】:

我目前正在学习 PKCS#11,有一个我不知道如何处理的场景。

这是场景:

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

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

那么问题是什么?当提供商使用用户 PIN 生成密钥和编写证书时,我们可以通过 SetPin 互操作操作以编程方式更改它,或者让客户稍后在家中使用适当的软件更改它。当客户想要为他的智能卡获取新证书时,就会出现问题,而在这个阶段,提供商不知道卡的用户 PIN(即他无法使用卡上的任何加密机制)。如果客户为提供者提供密码,他将能够让客户用他的证书签署一些随机文件,而不是出于正当理由使用 PIN(利用 PKCS#11 机制编写新证书)

所以我的问题是:

有什么方法可以在卡上为某些令牌设置第二个用户 PIN(提供商和客户分开)?我们能否让一些 PKCS#11 机制仅对特定用户可用(例如仅为提供者生成密钥对,以及仅为客户端使用证书签署文档)?

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

【问题讨论】:

  • 请查看stackoverflow.com/help/how-to-ask,然后编辑您的问题。尤其是为了可读性。
  • 我已经编辑了这个问题。如果仍然难以辨认,我不知道我还能如何描述这个问题。

标签: smartcard pkcs#11 pkcs11interop


【解决方案1】:

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

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

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

也可以重新订购整个过程,因此用户 PIN 尚未生效,因此在编写证书时无法创建签名。只有在之后用户选择一个 PIN 值并建立它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多