Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java堆转储中的敏感数据_Java_Encryption_Passwords_Heap - Fatal编程技术网

java堆转储中的敏感数据

java堆转储中的敏感数据,java,encryption,passwords,heap,Java,Encryption,Passwords,Heap,我编写的软件处理各种敏感信息,如电子邮件地址、密码和信用卡号码 当我们遇到内存问题时,最好让应用程序写一个堆转储。问题是,如果一个线程碰巧在该区域工作,堆转储可能包含纯文本的敏感信息。。。我们真的不想把它写到磁盘上,因为我们在其他地方花了很大的力气对它进行加密 有没有办法解决这个问题,比如让JVM写一个加密的转储文件?简短的回答是不完全正确的。在某些时候,您必须清除数据才能使用它,在垃圾收集的VM中,您无法控制何时从内存中物理删除对象。将风险降至最低的唯一真正策略是尽快删除对未加密机密数据的所有

我编写的软件处理各种敏感信息,如电子邮件地址、密码和信用卡号码

当我们遇到内存问题时,最好让应用程序写一个堆转储。问题是,如果一个线程碰巧在该区域工作,堆转储可能包含纯文本的敏感信息。。。我们真的不想把它写到磁盘上,因为我们在其他地方花了很大的力气对它进行加密


有没有办法解决这个问题,比如让JVM写一个加密的转储文件?

简短的回答是不完全正确的。在某些时候,您必须清除数据才能使用它,在垃圾收集的VM中,您无法控制何时从内存中物理删除对象。将风险降至最低的唯一真正策略是尽快删除对未加密机密数据的所有引用。它不能保证不会在内存转储中写入任何机密数据,但如果有人可以这样做,那么他们就可以获得关键信息。

我一直在考虑在虚拟机外部处理此问题。一种简单的方法可能是让jvm将转储写入加密的环回设备。当然,这并不是完全安全的,因为任何具有root访问权限的人都可以访问装载点,但这正是我所期望的解决方案。我可能会看看是否可以设置jvm最终写入的FIFO。我知道虚拟机将使用的文件名,因此这可能取决于虚拟机如何处理它(稍后:这不起作用。JVM抱怨“文件存在”)


使用char数组只会缓解问题,但在转储时数组仍可能包含一些纯文本

哇,我很想看看是否有一个解决方案——这既昂贵又蹩脚,但要加密对象中的所有内容。只有一个具有root访问权限的用户才能获得转储和/或修改应用程序。所以,我觉得没有理由对任何东西进行加密。您可以使用任何java进程的jmap获取堆转储。您可以与任何查看堆转储的人签署NDA和安全协议。。。只是想在这里集思广益。但是在取消引用之前,一定要先用核弹炸掉内存区域!(因此,永远不要在
String
对象中存储密码,而是使用
char[]
来代替。)在相关的说明中,我过去需要做一些事情,比如接受用户的密码,然后将其传递给WS-call,但JAXB无法使用字节数组传递字符串值。有人知道解决这个问题的方法吗?@Chris,“核化”java内存是行不通的。垃圾收集器可以随时随意复制内容,因此您将被留下一个无核对象。唯一可以做的是使用DirectCharacterBuffers,而不是char[],只需使用一个大缓冲区并对其进行切片,因为直接缓冲区至少占用内存中的一页。更糟糕的是,你必须清除所有的痕迹,包括套接字缓冲区。总的来说,这是一项毫无价值的工作。@Chris,jit可能足以优化大多数表单,使其从“nuking”变为“no-op”。如果有办法在程序中隐藏此类数据,它将被用于创建工作软件DRM/Copyprotection。我想你会注册,您可以将rep添加到一个帐户中。即使这样做,数据在某个时间点也不会仍然作为托管堆对象存在。我不确定收益递减的意义在于降低风险。