Java卡密钥安装

时间:2013-06-11 03:55:34

标签: key pki javacard

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

2 个答案:

答案 0 :(得分:2)

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

您可以在创建applet期间使用预定义数组,applet特定安装参数或专有APDU来实例化密钥。然后私钥应存储在RSAPrivateKey

如果您的卡支持Global Platform,请查看card specification。它们提供了各种密钥加载和内容加载方式。

答案 1 :(得分:2)

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

  1. generate a key pair on card,尝试使用最大密钥大小(2048位),请注意这可能需要很长时间,如果卡或读卡器没有正常处理连接超时,您可能在麻烦;
  2. 在终端上的卡上创建PKCS#10证书请求 - 这是一个使用ASN.1 DER编码的数据结构;
  3. sign the PKCS#10 request使用密钥对的私钥;
  4. 将PKCS#10请求发送给证书颁发机构(CA);
  5. 导入退回的证书;
  6. 您的Java卡应支持RSA或EC密钥对生成和签名/验证操作。现在大多数卡都有,但可能有一些卡没有非对称协处理器。

    此答案假设您创建了一个新密钥对,因为使用较旧的私钥不太安全。如果您要加载现有的私钥,只需拨打RSAPrivateKey或更快RSAPrivateCrtKey的所有设置者即可。需要使用Java Card KeyBuilder实例创建这两个对象。

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