JCE中是否有任何机制来指定密钥生成时间(会话密钥或永久密钥)

问题描述 投票:1回答:2

我正在为HSM实现JCE提供程序

JCE中是否有任何机制可以指定密钥生成类型ex:会话密钥或永久密钥

     KeyGenerator keygen = KeyGenerator.getInstance("AES");
     keygen.init(128);
     key = keygen.generateKey();

我需要这样的东西:

     key = keygen.generateKey(flag); 
     flag = 0/1 session key/permanent key
     keygen.deleteKey(); //to delete permanent key 
java cryptography jce
2个回答
1
投票

不,无法指定会话密钥或永久密钥。

但是你当然可以定义你自己的AlgorithmParameterSpecinit方法中使用并在你的engineInit中的KeyGeneratorSpi中实现AlgorithmParameterSpec可以指示某些东西是会话密钥还是永久密钥,并且可以包含算法的参数(即指定算法的参数) AES的密钥大小以及可能的另一种检索密钥大小的方法(因为密钥大小似乎没有任何特定的AlgorithmParameterSpec)。

您可能应该让您的提供商默认使用会话密钥;通常键值丢失,除非它存储在KeyStore或编码到文件中。


0
投票

JCE框架工作不是通过保持H / W令牌要求的视图来开发的

我找到了一个解决方法:

生成所有密钥作为令牌密钥(永久)并维护散列表中的密钥句柄的引用

我的JCE提供程序有一个关闭函数,当应用程序终止时将调用该函数。

使用哈希表中的引用删除该关闭函数中的所有键。

如果密钥存储在密钥库中,我将从哈希表中删除特定的密钥句柄,以便在关闭函数中不会删除它

© www.soinside.com 2019 - 2024. All rights reserved.