我知道数据剩余是硬盘驱动器的一个问题,但它是 RAM 的一个问题吗?例如,一旦程序完成,它的数据在 RAM 上是否仍然可用,就像硬盘驱动器上的数据在被删除后仍然存在一样?
编辑:在这种情况下,我并不担心计算机关闭后可能保留的数据。此外,我正在考虑黑客破坏仍在运行并能够访问内存的系统的情况。在使用它的程序终止后,数据是否仍保留在 RAM 中?
我知道数据剩余是硬盘驱动器的一个问题,但它是 RAM 的一个问题吗?例如,一旦程序完成,它的数据在 RAM 上是否仍然可用,就像硬盘驱动器上的数据在被删除后仍然存在一样?
编辑:在这种情况下,我并不担心计算机关闭后可能保留的数据。此外,我正在考虑黑客破坏仍在运行并能够访问内存的系统的情况。在使用它的程序终止后,数据是否仍保留在 RAM 中?
有可能。
一般来说,程序在运行时并不倾向于清除它们的数据(它们确实会,毕竟,往往需要它),并且任何能够访问其他程序分配的 RAM 的进程实际上都可以读取它。例如,这就是最近一连串的大型商店黑客能够泄露如此多信用卡数据的方式——这些攻击是由流氓程序进行的,这些程序会搜索正在运行的 POS 机的 RAM 并复制任何看起来像信用卡数据的东西。[我暂时找不到支持这个的来源,我会继续寻找并稍后编辑它。]
一旦程序终止,如果没有其他进程获得相同的地址并用自己的数据覆盖它,则其 RAM 中的数据可能会无限期地保留。在现代操作系统上,这再次需要能够读取未分配给执行读取1的进程的 RAM ,即使这样也充其量是不可靠的,尤其是在不断做各种事情的现代系统上。
这两种情况都可以通过从不允许不受信任的进程以 root/管理员权限运行来缓解,如果不能完全阻止的话:除非操作系统的安全模型中存在漏洞,否则受限用户根本没有能力访问此 RAM。
当然,还有我们的好朋友“冷启动攻击”,即在机器断电后从 RAM 中读取加密密钥等。这需要对机器进行物理访问、引导磁盘(或专用硬件)和快速计时(因为数据在断电后仅在 RAM 中保留很短的时间)。
作为一个简短的脚注,硬盘驱动器上的数据残留风险被夸大了:一旦数据被覆盖,它就消失了。例如,“Gutmann 35 遍方法”不仅是对 Gutmann 博士研究的根本误解,而且完全没有必要——单遍包含任何数据——1、0、随机噪声、猫咪图片——就是全部这真的很有必要。但是,如果它没有被覆盖——如果它只是被删除——那么它确实会挂起。RAM 上的数据残留同样是一种经常被夸大的风险,尽管就像硬盘驱动器一样,如果您不小心,它可能并且确实会泄漏信息。
1原因是现代操作系统在将 RAM 分配给新进程之前实际上会花时间清除 RAM,特别是为了避免将潜在的敏感数据泄漏给启动然后读取未初始化数据的进程(过去就是这样的泄漏进行了)。