因此,我正试图找出在脱机场景中使用智能卡解密文件的可行性。
我希望用智能卡读卡器将加密的文件同步到手机上。只有当智能卡在卡槽中时,文件才能被读取。如果用户松开电话,文件将以加密格式存储在磁盘上。
假设我将无法自己编写任何实际的智能卡应用程序,并且智能卡是美国CAC或等效的。
我的想法是这样的:
对于第三条,我想知道这是否可用,它是否只适用于文本文件?
如果是可用的,它是如何工作的。智能卡会接受一组加密的字节,然后吐出一组未加密的字节吗?
请参考类似的例子、代码等。
编辑:我指的是用字节/S解密的方法。我在一次谈话中看到这些卡加速了加密芯片,但我不知道这意味着什么。
此外,还在Radboud大学的课程主页上找到了一些示例代码。因此,可以使用自定义的Java来实现。我仍然在想,是否有任何“标准”方法可以作为APDU或GlobalPlatform命令的一部分来实现。
密码小程序https://www.cs.ru.nl/E.Poll/hw/samples/CryptoApplet.java
Java https://www.cs.ru.nl/E.Poll/hw/samples/CryptoTerminalSmartCardIO.java的用法
编辑2:所以我发现这张卡支持PKCS#11,这可能是我应该使用的。
我已经下载了pkcs11 11工具,它可以很好地浏览/查看东西。我可以列出证书等,但是当我试图签署某个文件时,我得到的操作是不受支持的(PKCS11 function C_SignFinal failed: rv = CKR_FUNCTION_NOT_SUPPORTED (0x54))。
我在这个工具上找到的文档不是很好(没有示例,只是手册页),所以如果有人知道如何正确地做这件事,请告诉:
pkcs11-tool --module $OPENSC_LIB --sign --slot 0x2 --input-file message.txt --login --pin XXXXXX --mechanism SHA1-RSA-PKCS 从外观上看,我还可以使用PKCS#11解密消息。还没走那么远。
发布于 2016-03-29 18:13:22
如果是可用的,它是如何工作的。智能卡会接受一组加密的字节,然后吐出一组未加密的字节吗?
不,通常情况不是这样的。通常,智能卡只需提供一个RSA操作,执行原始RSA、RSA PKCS#1或RSA解密。此操作的结果是相对较小的字节数;例如,在RSA的情况下,PKCS#1比密钥大小(即RSA的模数的大小)小约11个字节。如果提供了原始RSA操作,则应由off实体执行取消填充操作。
所以所使用的是一个混合密码体制。这样的系统使用随机对称的数据密钥来加密明文。这个随机数据密钥--通常是AES密钥--然后由RSA公钥加密。加密的数据密钥使用容器格式(如CMS或Open )与密文一起存储。
解密后,首先用智能卡上的私钥解密AES数据密钥。例如,这需要输入一个PIN代码才能访问私钥。一旦数据密钥被解密,它就可以用来解密其余的数据。当然,最好使用经过身份验证的加密(如GCM)。
所以智能卡只能“加速”私钥操作。我把它放在引号之间,因为一般来说,主流CPU将比密码协处理器的速度和卡提供的通信开销快得多。AES操作是在卡外执行的,对于上面的任何文件,比如几个KiB,它们都是首当其冲的。
https://crypto.stackexchange.com/questions/34073
复制相似问题