首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JCA/JCE对数据加密后的内存进行清理

使用JCA/JCE对数据加密后的内存进行清理
EN

Stack Overflow用户
提问于 2014-02-10 14:57:07
回答 1查看 325关注 0票数 2

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

但是,对外部库的调用(比如那些实现JCA/JCE的库)呢?如果没有JCA/JCE,我就无法进行加密(比方说Bouncy城堡)。我如何确定库没有创建克隆或其他我不知道的对象,这可能会显示密码后,有人转储内存离线分析它。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-10 19:33:50

目前是不可能的,如果没有平台支持,您就无法做到这一点。Java堆使用的内存可以交换出去,并且可以在不删除内存的情况下回收内存。内存可能会被复制,引用也会改变等等。

对于更短的时间框架,您可能能够在字节数组和字符数组上(以一种不可测试的方式)这样做,但即使这样,您也可能遇到麻烦。

因此,唯一的方法是使用(FIPS认证的) JCE提供者(或其他专有API)并提供本机支持。本机代码可以是一个(FIPS认证的)软件库,用于清理关键材料。或者它可以连接到与对称算法和/或密钥派生方法兼容的硬件安全模块(HSM)或其他硬件设备(智能卡或TPM)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21680462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档