我可以从智能卡中的密钥容器获取公钥/私钥对吗?

问题描述:

我可以使用PKCS#11或CryptoAPI从智能卡内的密钥容器中获取公钥/私钥对吗?我可以从智能卡中的密钥容器获取公钥/私钥对吗?

我并不是这方面的专家,但我认为智能卡的重点在于您无法提取私钥。您将数据发送到卡上,并让它在自己的处理器上执行加密操作。

+1

因为在CryptoAPI中可以使用CryptExportKey函数导出密钥(如果密钥标记为可导出的)。 – KyleM

+0

Upvoted,因为即使这是“可能”导出密钥如果标记为可导出。该卡的目的是在内部完成加密算法并允许公钥导出,但私钥始终保持不可导出(至少90%,因为这是卡的整个点)。 – LeoPucciBr

这取决于。 CryptoAPI(以及智能卡的CSP)和PKCS#11都允许您拥有可导出的密钥对。但通常使用可导出的私钥来充分发挥智能卡的优势。

所以,如果你正在编写一个应用程序,它将成为你的选择。否则其他人已经为你做出了这样的选择;-)

+0

*公共*键可读。您还可以查找公钥的证书。 –

+0

非常确定你可以在pkcs#11中拥有不可导出的公钥和证书(即使我无法猜测它们可以用于什么;-)但自从关于** keypairs的问题**之后,私钥* *决定因素 – poupou

+0

PKCS#11中的CKA_EXTRACTABLE 2.20仅适用于私钥和秘密密钥,如规范中所述(因为PKCS#11非常松散,当然可以滥用该规范...)。人们可以拥有私人证书和公共密钥(需要先登录才能阅读),但实际的密钥/证书值在此之后仍然可读。 但是,在完整的关键对的情况下,这并不重要.. –