gpt4 book ai didi

java - 使用 JCA/JCE 数据加密后清理内存

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:58 25 4
gpt4 key购买 nike

问题如下:我需要确保,在完成某些数据加密后,无法从应用程序内存中提取密码/派生 key (现有密码/ key 已被覆盖)。我知道这不是一件容易的事。我认为我自己实现的应用程序的核心部分仍然可以做到。

但是对外部库(例如实现 JCA/JCE 的库)的调用又如何呢?如果没有(比如说 Bouncy CaSTLe),我就无法进行加密。我如何确定该库不会创建克隆或其他我一无所知的对象,这些对象可能会在有人转储内存以离线分析它后泄露密码。

我可以告诉库清除它一直在使用的内存吗?或者也许还有其他方法可以解决这个问题?

最佳答案

目前不可能,没有平台支持就无法做到这一点。 Java堆使用的内存可以换出和换入,可以回收内存而无需删除。内存可能会被复制,引用也会被更改等。

对于较短的时间范围,您也许可以在字节数组和字符数组上执行此操作(以不可测试的方式),但即使如此,您也可能会遇到麻烦。

因此,唯一的方法是使用具有 native 支持的(FIPS 认证的)JCE 提供程序(或其他专有 API)。 native 代码可以是(FIPS 认证的)软件库,可以清理 key Material 。或者它可以连接到与您的对称算法和/或 key 派生方法兼容的硬件安全模块 (HSM) 或其他硬件设备(智能卡或 TPM)。

关于java - 使用 JCA/JCE 数据加密后清理内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21680462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com