Java 如何使用我们在SD卡中创建的密钥(符合全球平台的智能卡)

Java 如何使用我们在SD卡中创建的密钥(符合全球平台的智能卡),java,cryptography,key,smartcard,javacard,Java,Cryptography,Key,Smartcard,Javacard,我实际上正在做一个项目,使用SD卡智能卡,使用java卡技术来实现一些功能,例如:与另一个cardclient进行相互身份验证。所以我写了一些java卡小程序,但现在我有一个问题: 从卡规范或全球平台规范中的参考资料来看,我没有找到一种方法来重用卡上的密钥,也没有在卡外创建密钥存储库, 首先,我试图在api dispo中找到一些方法,但没有找到;事实上,我必须在java卡小程序中编写程序,这样我才能检索/访问/使用卡上现有的键集;为了在身份验证中使用加密 任何人都可以提供帮助?只需将密钥保存到小

我实际上正在做一个项目,使用SD卡智能卡,使用java卡技术来实现一些功能,例如:与另一个cardclient进行相互身份验证。所以我写了一些java卡小程序,但现在我有一个问题:

从卡规范或全球平台规范中的参考资料来看,我没有找到一种方法来重用卡上的密钥,也没有在卡外创建密钥存储库, 首先,我试图在api dispo中找到一些方法,但没有找到;事实上,我必须在java卡小程序中编写程序,这样我才能检索/访问/使用卡上现有的键集;为了在身份验证中使用加密


任何人都可以提供帮助?

只需将密钥保存到小程序的变量中即可。默认情况下,所有变量都是持久的

当然,您可以实现导入/导出功能,允许在小程序安装后将现有密钥对安装到小程序中

更新

不要处理安全域-如果要从applet中访问密钥,请将其存储在applet中

例如,使用RSA密钥,您可以逐个字段导入它,例如RSA公钥的模和指数。对于导入,您必须将所有内容传输到byte[]格式。然后可以使用一个或多个APDU将字节数组传输到卡中。如果字节数组对于一个APDU的有效负载数据太长,则需要多个APDU

一旦传输了指数或模数的数据,就可以创建公钥实例,然后设置其组件

RSAPublicKey pub = KeyBuilder.buildKey(ALG_RSA, LENGTH_RSA_1024);
pub.setExponent(...);
pub.setModulus(...);
如果将创建的RSAPPublicKey实例保存在applet类的字段变量中,则可以确保该实例已永久保存


同样,您可以创建私钥和其他加密算法的密钥。

Java卡小程序没有机制从放入相关安全域的密钥创建Java密钥对象。小程序可用的GP服务来自该类,包括访问安全通道、持卡人验证、锁定卡以及其他一些服务。设备上的Java卡小程序也可以发布自己的服务

小程序可以通过发卡机构安全域ISD加载,因此它与该安全域相关联。因此,它可以访问基于ISD密钥的安全信道实现

org.globalplatform.Application.processData方法将在选择小程序之前处理APDU的存储数据。参见GP卡规范v.2.3.1第7.3.2节。小程序可选择后,小程序可以处理安全通道APDU,并将安全通道实施委托给ISD


如果传入的数据包含密钥材料,小程序可以将这些密钥字节传输到Java密钥对象。

谢谢您的回复,但您能解释得更清楚些吗?进口/出口?我们是用java卡小程序代码实现的吗?但在java卡api中使用哪种方法?对不起,我对这个领域有点陌生,事实上现在我们有一个工具/软件,我们可以直接在SD卡上的安全域中添加新密钥,所以目前我们想直接使用这些密钥,但不是通过加密方法在我们的代码中创建是的,我在api中也看到了,有很多方法来处理密钥操作;但这是否意味着我在软件卡上创建的密钥数据库以后不能在我的代码中重用??那么,该软件的兴趣是什么呢?此外,例如,对于这种类型的java卡,还有全局平台的java/c++应用程序,我们可以在SD卡上执行诸如放置密钥/存储数据/安装小程序等操作。如果他们放在卡片里的东西不能在以后的程序中使用,这样做不是很奇怪吗?正如我在回答中所写的,它们可以重复使用,但不能直接使用。它们通常仅用于个性化设置。全局平台密钥用于管理卡上的小程序,例如,将小程序上载到卡上通常需要MAC密钥。更多信息请参见全球平台规范。据我所知,在小程序中使用SD密钥的唯一方法是使用org.globalplatform.GPSystem.getSecureChannel获得的org.globalplatform.SecureChannel将安全消息传递委托给SD。没有什么可以阻止您使用相同的API,即PUT KEY来管理小程序的密钥。但你必须自己去实现它。对于一个新用户来说,如果写得不好,对于熟悉全球平台的人来说,这个问题是可以接受的,两张接近的选票已经没有任何解释了。请不要在没有评论的情况下接近。欢迎你,刘。