我可以从硬件访问智能卡密钥并解密吗?



我想用SmartCard的加密密钥加密某个Data

有办法做到这一点吗?我想在linux服务器上从卡上读取加密,并及时更改。

我读过一些关于OpenSC的东西,它在某种程度上对我有帮助吗?

在非对称密钥方案中,加密密钥是公钥,它是公开的(与私钥相比)不太可能出现在智能卡上。通常没有办法从智能卡中读取任何密钥,所以唯一要做的就是将输入发送到智能卡,这样它就可以执行加密。I/O带宽很可能是瓶颈(因此直接在主机上加密要快得多),而非对称密钥并不真正适合批量加密。

是的,如果你的卡提供PKCS信息,OpenSC会有帮助,但你应该在你的需求之前工作,以确保一个明智的方法。

你的问题确实缺乏非常重要的细节,所以从技术上讲,它根本无法回答!

但一个简单的(亵渎)你的问题是肯定的-你可以访问一个密钥,你可以做解密;更重要的问题是您可以访问什么密钥以及您实际上在做什么解密/加密或签名?

使用SC进行加密只有两种方法:

  1. 执行加密操作(发送APDU)到不同的KO(密钥对象):RSA, ECC KO或SM密钥,它们都是私钥,您不能从卡上读取它,但您可以PSO(执行安全操作);
  2. 使用从CA对象(证书)中提取的公钥自己执行;

CA对象存储在卡的公共部分,所以任何人都可以读取它,你不需要任何身份验证来访问公共部分,自然;ko位于私有部分,因此您必须首先通过对卡进行身份验证(验证pin)来访问它;

NB:加密和签名是有区别的;当您加密SMTH时,您(主机)使用公钥进行加密,只有受信任的一方(服务器)拥有私钥并可以解密它。对于签名,它是相同的密钥对,但操作是相反的:您(主机)使用私钥对数据签名(签名),每个人都可以使用公钥验证(解密)它来验证主机的真实性。

最新更新