【问题标题】:How to guarantee the wiping of confidential data before it is garbage collected in Java?如何保证在 Java 垃圾收集之前擦除机密数据?
【发布时间】:2023-03-18 09:00:01
【问题描述】:

假设您在堆内存中有一个对称密钥,您不再需要它,但您想确保在释放内存/收集垃圾之前擦除它。如果您自己擦除它,优化器可能会因为不必要而跳过此步骤。那么,如何正确地做呢?

【问题讨论】:

  • 基本上不可能安全地做到这一点,关于使用 char 数组的事情基本上是一个红鲱鱼(在你清除它之前发生了一次 GC,突然你在内存中有 2 个副本......哎呀)。唯一能保证工作的方法是使用 DirectByteBuffer,但这很麻烦。过去,我曾使用 unsafe 在 GC 堆外创建 String 实例以获得乐趣,但由于显而易见的原因,这很脆弱。

标签: java security optimization garbage-collection cryptography


【解决方案1】:

我认为这篇博文应该可以帮助您入门。好像是关于 Swing 的,但我不明白你为什么不能普遍应用它。

http://www.javalobby.org/java/forums/t19519.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 2014-11-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    相关资源
    最近更新 更多