0

我是 Java 卡开发的新手。我想知道我们如何在 Java 卡小程序中存储安全密钥值。因为我想使用 PKI(公钥基础设施)进行身份验证。有可能吗?如果是,我们如何将密钥存储在 java 卡小程序中。

4

2 回答 2

2

是的,这是可能的,因为 javacard 支持非对称加密,即 RSA。

您可以在创建小程序期间使用预定义的数组、小程序特定的安装参数或专有的 APDU 来实例化您的密钥。然后将私钥存储在RSAPrivateKey.

如果您的卡支持全球平台,请查看卡规范。它们提供了多种按键加载和内容加载方式。

于 2013-06-11T06:12:11.627 回答
2

这当然是可能的,你应该做以下事情:

  1. 在 card 上生成一个密钥对,尝试获取最大密钥大小(2048 位),注意这可能需要很长时间,如果卡或读卡器不能优雅地处理连接超时,你可能会遇到麻烦;
  2. 在终端上的卡上创建一个 PKCS#10 证书请求 - 这是一个数据结构,它使用 ASN.1 DER 编码;
  3. 使用密钥对的私钥对PKCS#10 请求进行签名;
  4. 将 PKCS#10 请求发送到证书颁发机构 (CA);
  5. 导入返回的证书;

您的 Java 卡应支持 RSA 或 EC 密钥对生成和签名/验证操作。现在大多数卡都有,但可能有一些卡没有不对称协处理器。

这个答案假设您创建了一个新的密钥对,因为使用旧的私钥不太安全。如果您想加载现有的私钥,您可以简单地调用 的所有设置器RSAPrivateKey,或者调用更快的RSAPrivateCrtKey. 这两个对象都需要使用 Java CardKeyBuilder实例创建。

请注意,这可能需要大量知识。使用像MuscleCard这样的开源解决方案可能会更好。

于 2013-06-12T21:59:40.997 回答