【发布时间】:2015-10-20 16:17:22
【问题描述】:
我有一些 Java 代码生成一个实现接口 java.security.PrivateKey 的类的实例(实际对象是 sun.security.rsa.RSAPrivateCrtKeyImpl 的一个实例)。此代码的目的是生成一个 PrivateKey,然后将其拆分为共享(密钥的分割),然后将共享存储在智能卡上。共享部分工作正常,我的问题是如何处理不再需要的 PrivateKey。
要求 PrivateKey 信息(应保密)在拆分为共享后应尽快从内存中删除。
接口 PrivateKey 扩展了接口 Destroyable,但我没有看到 Destroyable 的方法在任何地方实现(它必须在此层次结构中的某个地方实现)。但是,如果我在我拥有的 PrivateKey(这是一个 RSAPrivateCrtKeyImpl)上调用 destroy,那么它会引发 javax.security.auth.DestroyFailedException。
我拥有的对象似乎完全不可变,有没有办法覆盖对象中的字段?例如将它们设置为零?或者应该遵循什么方法从内存中删除这些秘密的不可变对象?谢谢!
【问题讨论】:
标签: memory cryptography jvm rsa private-key