Oracleorg.identityconnectors.common.security.GuardedString
在其文档中说明了这一点:
GuardedString 类通过将字符以加密形式存储在内存中来缓解[字符串数据作为明文保存在内存中的问题]。加密密钥将是随机生成的密钥。
这是否可以防止堆或内存转储?乍一看,在内存中找到随机生成的密钥并用它来解密敏感数据似乎很简单。
Oracleorg.identityconnectors.common.security.GuardedString
在其文档中说明了这一点:
GuardedString 类通过将字符以加密形式存储在内存中来缓解[字符串数据作为明文保存在内存中的问题]。加密密钥将是随机生成的密钥。
这是否可以防止堆或内存转储?乍一看,在内存中找到随机生成的密钥并用它来解密敏感数据似乎很简单。
深入了解实际实现将有助于攻击者理解内存转储的数据结构,并且从我在EncryptorImpl中发现的内容来看,并没有努力混淆密钥存储机制以延长对秘密进行逆向工程所需的时间. 所以不,这不是防止记忆暴露的有效措施。
让我为这个类提供一个更好的使用场景:由于密钥变量是私有的,至少开发人员不太可能会意外地用密钥响应攻击者(例如,由于控制流中的错误) Web 服务请求处理程序),因此此类在确保代码只能通过在后台实际解密而不是分发密钥来帮助解密方面有一些用处。在程序停止/脱机后,攻击者将无法再解密机密,并且在此之前发生的所有解密(当攻击者将程序用作一种预言机时)都有机会被记录下来,这可以与事后分析相关,以确定哪些数据已被泄露。