在我的项目中,我尝试使用智能卡为特定数据创建数字签名。
我正在使用智能卡读卡器ACR38U-I1和Linux OS(更准确地说是使用Raspbian OS)
我已经安装了此设备所需的所有驱动程序以及其他库,例如pcsc,pcsc-lite ......
我也有私人/公共gpg密钥对进行数字签名。 据我了解使用智能卡制作数字签名的概念,我必须将私钥写入此卡并在需要创建签名时阅读。
在这种情况下,我遇到了一个问题,我不知道该怎么做。
我打开了pcsc-lite文档[1]并且无法找到如何将数据写入卡的写入方法或示例 https://pcsclite.alioth.debian.org/api/group__API.html [1]
如果有人能以正确的方式指导我,我将不胜感激。
答案 0 :(得分:2)
典型的方法是:
生成智能卡上的密钥(对);这样做的好处是,没有任何恶意软件能够获取私钥,因为它永远不会离开该卡。
发送命令以生成卡的签名,例如使用要签名的数据的哈希值
从智能卡读取密钥会丢弃智能卡提供的所有安全性。生成签名的最常用方法是使用PKCS 11软件,但可能很难找到Raspbian的软件。我建议找到GPG直接支持的卡片。这样,您就不需要详细了解所有必要的主题。
答案 1 :(得分:1)
(想写一个评论,但它已经很长了......)
(编辑:写这篇文章的时候我并没有意识到你是在非x86环境下工作,所以这个答案可能没用,除非你有选择去x86(英特尔爱迪生可能吗?))
这不是一个解决方案,但可能是一个好方向(我没有使用此特定卡的经验):
该卡有PKCS#11 driver,可能提供对其服务的一些访问权限(pkcs11是访问加密令牌的标准化API,请参阅here)。
使用此驱动程序(假设它有效并提供适当的机制),您可以选择继续:
直接从c
代码(适合我)
使用python wrapper(没有这种方式的经验,但你的问题意味着需要python)
与gpg一起使用(从未尝试过,根本不推荐)
首先验证pkcs11驱动程序是否正常工作可能是个好主意(您可以使用firefox浏览器执行此操作,请参阅here)。
附加说明:
我建议初始化卡并使用供应商提供的实用程序生成密钥,并仅使用pkcs11驱动程序实际签署一些数据(这样可以避免许多麻烦的部分)。
google for pkcs11及相关内容,这个"扩展评论"只是另一个观点"