我可以从智能卡中的密钥容器中获取公钥/私钥对吗?
Posted
技术标签:
【中文标题】我可以从智能卡中的密钥容器中获取公钥/私钥对吗?【英文标题】:Can I get public/private key pair from a key container in smartcard? 【发布时间】:2011-10-01 05:03:49 【问题描述】:我能否使用 PKCS #11 或 CryptoAPI 从智能卡内的密钥容器中获取公钥/私钥对?
【问题讨论】:
【参考方案1】:我不是这方面的专家,但我认为智能卡的全部意义在于您无法提取私钥。您将数据发送到卡上,然后让它在自己的处理器上执行加密操作。
【讨论】:
投反对票,因为在 CryptoAPI 中,如果密钥被标记为可导出,您可以使用 CryptExportKey 函数导出密钥。 赞成,因为如果标记为可导出,即使这样也“可能”导出密钥。卡的目的是在内部进行加密数学并允许导出公钥,但私钥始终保持不可导出(至少 90%,因为这是卡的全部要点)。 【参考方案2】:这取决于。 CryptoAPI(以及智能卡的 CSP)和 PKCS#11 都允许您拥有 可导出 密钥对。但是,通常使用非可导出的私钥来充分发挥智能卡的潜力。
因此,如果您正在编写应用程序,它就成为您的选择。否则其他人已经为您做出了选择;-)
【讨论】:
public 密钥是可读的。您还可以查找公钥证书。 很确定您可以在 pkcs#11 中拥有不可导出的公钥和证书(即使我无法猜测它们可以用于什么 ;-) 但这是无关紧要的,因为关于密钥对使私钥成为决定因素 PKCS#11 2.20 中的 CKA_EXTRACTABLE 仅适用于私钥和密钥,如规范中所述(因为 PKCS#11 非常松散,当然可以滥用规范......)。一个人可以拥有私有证书和公钥(需要登录才能读取),但之后实际的密钥/证书值仍然是可读的。但确实,在完整密钥对的情况下,这并不重要..以上是关于我可以从智能卡中的密钥容器中获取公钥/私钥对吗?的主要内容,如果未能解决你的问题,请参考以下文章