使用 Redis 存储 PII、私钥和其他机密是否不明智?

信息安全 tls 隐私 记忆 威胁缓解
2021-08-24 05:44:10

我正在审查一个使用 Redis 存储所有客户端机密、私钥和其他内容的系统。问题是Redis 将整个数据库加载到 RAM 中

由于已知 SSL 的heartbleed、 Rowhammer 和其他黑客攻击会将内存暴露给不受信任的用户,我认为任何其他类似的黑客攻击都可能会暴露整个数据库,其中如果我使用 SQL 服务器,那么在给定时间在 RAM 中的私钥会更少.

可能有更好的方法来做到这一点。

由于他们需要托管和存储客户的机密和 PI,我希望他们使用按需加载的方法,而不是过于激进地在 RAM 中加载不需要的数据,并尽快卸载我在 RAM 中的所有内容。

如果我赞同这样的哲学......

当周围的数据副本较少时,我的数据更安全,不会受到攻击

...那么减少 RAM 暴露的最佳方法是什么? 安全擦除内存?

我正在使用 ASP.NET 和 DiskIO 查看 SecureString,但我很难找到一个不会在驱动程序、预取队列或其他位置留下不需要的字符串副本的端到端实现。

1个回答

风险/问题和缓解措施完全相同。无论是将数据库部分还是全部加载到内存中。您将无法分辨哪些密钥已被泄露,哪些未泄露。因此,唯一的选择是全部撤销它们,无论它是 Redis 数据库还是 SQL 数据库。

大多数时候,人们使用 Redis vs SQL 的原因是性能问题。我认为,如果您有一个不错的设计并防止直接暴露您的数据库服务器,那么这种成功攻击的可能性相当低。如果他们已经实现了这一点,那么考虑到一半的代码库需要更新,一方面修复它的投资将是巨大的。我认为您应该考虑隔离 Redis 集群,监控所有操作(SIEM 日志),看看您是否可以实施额外的控制(异常行为)并验证他们的事件响应计划以防出现违规行为,而不是取消他们的解决方案。