我的台式计算机中的 RAM 棒是否易失?出售它们安全吗?

信息安全 取证 记忆
2021-09-05 08:45:38

我的电脑中有两块 RAM,我想出售或捐赠。据我了解,有些RAM是易失性的,断电几分钟后会丢失所有内容,有些是非易失性的,断电后会保留该信息。我想知道我拥有哪种 RAM,以及将其提供给其他人是否安全。

我不是很精通技术,我所知道的关于棒的制造商是金士顿,当我打开任务管理器时它说它是“DDR3”并且外形是“DIMM”。

3个回答

是的,他们是安全的。消费内存 DIMM 使用易失性 SDRAM内存。易失性意味着在您关闭它后它不会保持其状态。

SDRAM 存储芯片由存储单元阵列构成,每位数据存储一个单元。现代存储器 IC 每个都有数十亿个单元。每个存储单元由晶体管和电容器构成。晶体管就像电子开关,电容器就像微型电池。存储在单元中的值是单个位 - 0 或 1 的值,由低电压或高电压表示。

这是一个简单的存储单元的电路图:

存储单元电路

你可以在这里在你的浏览器中模拟这个电路,我会告诉你它是如何工作的。您可以使用右上角的“运行/停止”和“重置”按钮来控制模拟。如果运行/停止按钮为红色,则您已停止模拟。如果它是灰色的,它正在运行。

我已经标记了晶体管和电容器,所以你可以看到它们在哪里。标有 10k、100k 和 1M 的部分是电阻器——暂时不用担心这些。

在电路的左上角,我们得到了输入数据。这是一个选择 5V 或 0V(接地)的开关,表示值 1 或 0。我们使用此开关选择要写入单元格的值。在右边,我们有我们的输出数据。当我们从单元格中读取时,这将显示为 1 或 0。

在它下面,我们有一个写/读开关。这选择了我们要执行的操作。当切换到左侧时,它将使用输入数据开关设置的任何值将值写入单元格。当切换到右侧时,它会从单元格中读取一个值并将其显示在输出数据上。

启用开关允许我们决定是否要在任何时间点与这个特定的单元格对话。当有许多这些单元都连接到相同的输入和输出信号时,这允许我们只选择一个要读取或写入的单元。

还有另一个开关标记为“泄漏”。稍后我会谈到这个——暂时让那个开关打开。

首先,让我们将 1 写入单元格。将输入数据开关设置为 1,将写入/读取开关设置为写入。然后关闭启用开关。您会看到电路底部亮起绿色,小黄点会移动片刻,表示电容器充电时有电流流动。

向单元格写入 1

电容器的顶部变为绿色,表示电容器现在已充电并且电池的值设置为 1。

接下来,将写入/读取开关翻转到右侧,以便从单元格中读取。输出数据现在显示为 1。

读取单元格

再次重复此操作,但输入值为 0。

还可以使用启用开关 - 您会看到,当它打开时,无论您对输入值和写入/读取开关做什么,输出数据都将始终为 0。此外,电容器中存储的任何值都将保留在那里,直到您重新打开启用开关。

到目前为止,我们所看到的是一个理想的记忆单元。它几乎可以永久存储 0 或 1。然而,实际上电容器中总是存在一些泄漏,导致它慢慢失去电荷。您可以使用我在电路中包含的泄漏开关进行模拟。

关闭漏电开关,然后设置输入数据为1,写/读开关为写,关闭使能开关。这将导致将 1 写入单元格。现在将写入/读取开关更改为读取,并查看输出数据。和以前一样,它将显示 1。现在等待几秒钟。输出数据将翻转回 0。

细胞内泄漏

如果您观察通过泄漏开关和 10k 电阻器的路径,您会看到随着电容器电荷泄漏,电流点缓慢流动。最终,电容器电压降至阈值电压以下,导致其被读取为 0 而不是 1。

尝试几次以了解正在发生的事情。一旦你对此感到满意,就该进行另一个实验了。

关闭泄漏开关,再次重复写入过程并将 1 存储在单元中。这一次,不是立即执行读取操作,而是预先打开启用开关。等待几秒钟,然后关闭启用开关。如果不清楚,这是完整的步骤:

  1. 关闭泄漏开关。
  2. 将输入数据设置为 1。
  3. 将写/读开关设置为写。
  4. 关闭启用开关。观察电容器充电。
  5. 打开启用开关。
  6. 将写入/读取开关设置为读取。
  7. 等待 5 秒钟。
  8. 关闭启用开关。

请注意,输出数据为零!发生的事情是电容器中的电荷在您等待时泄漏,导致它从 1 下降到 0。

这也发生在真正的 DRAM 芯片中。存储芯片上的控制器必须不断刷新单元中的数据,读取它们并将它们的值写回,以跟上泄漏的速度。当您关闭计算机时,DRAM 内存芯片中的数据会迅速降级并泄漏回全零。这个过程通常只需要几秒钟。

(有趣的一点是:设置开关和将数据输入和输出特定单元所花费的时间是定义内存延迟的原因,通常列为四个数字或类似“CL16”的东西 -内存时序wiki对此有一些进一步的信息)

通过将芯片冷却到非常低的温度,可以人为地减慢泄漏过程,这就是所谓的冷启动攻击这会导致单元格保留其值的时间更长。它仅在您在关闭系统电源的同时冻结 RAM 才有效 - 如果您在冻结它之前等待几秒钟,所有数据都将开始降级。因此,这对您来说不是问题。


这里还有一些其他有趣的东西可以讨论,比如SPD flash、NVDIMM和Intel Optane,但是我十分钟后要玩一个D&D游戏所以我现在没有时间扩展这个答案. 我稍后会回来编辑它们。不过不要担心 - 它们不会影响您的销售安全!


好吧,僵尸眼魔已经死了。让我们谈谈非易失性 RAM。

有一种特殊类型的内存技术称为 NVDIMM。NVDIMM 就像一个普通的 DDR SDRAM 模块,除了它上面有一个备用电池和一个非易失性闪存芯片。这允许系统在不丢失内存状态的情况下关闭电源。DIMM 上的备用电池允许它继续刷新内存单元。然后它将存储单元的内容复制到非易失性闪存芯片中。然后它可以安全地断电,因为内存的内容被保存并且易失性存储芯片不需要刷新。操作系统必须在构建时支持此功能。这是一种专门的内存技术,通常用于服务器应用程序,您需要能够在断电期间恢复内存内容,或在维护后快速将系统恢复到相同状态(例如

另一种非易失性 DIMM 是 Intel Optane。这实际上根本不是 RAM——最好把它想象成一个非常低延迟的 NVMe SSD,它恰好插入一个 DIMM 插槽。

最后说一下SPD flash。当您将 DIMM 插入系统时,您的主板需要能够识别它并了解它的规格和功能——它的名称、尺寸、类型、速度、延迟、电压要求、内置超频配置文件以及各种其他详细信息. 此信息由称为串行存在检测 (SPD)的标准接口提供。在实践中,信息存储在DIMM 上的小型非易失性闪存 EEPROM 芯片中的表格(其确切格式和内容由JEDEC定义)中,主板可以通过SMBus 与之通信。操作系统还可以与该芯片对话以了解有关内存的信息——您可以使用 CPU-Z 等工具查看它。

通常这个 SPD 数据在工厂被写入 EEPROM 并且永远不会改变。但是,完全可以从操作系统写入闪存芯片。有些芯片在技术上确实有能力锁定数据的前半部分(通常是前 256 个字节),但通常不会这样做,而后半部分数据始终是可写的。DDR4 的 SPD 表大小为 383 字节。然而,没有人制造 383 字节的 EEPROM 芯片——这很奇怪。相反,您通常会发现芯片大小为 512 字节。这意味着 EEPROM 中还有 129 个字节没有用于任何用途。如果您愿意,您可以通过写入 SPD 闪存在计算机的每块 RAM 中存储 129 字节的非易失性数据。我不建议自己尝试这个,因为有'

SPD 接口通常只暴露给内核,但有许多已签名的 Windows 驱动程序可以通过设计提供对 SPD 的写访问权限,以及意外提供对 SPD 的写访问权限的驱动程序,您可以滥用这些驱动程序向 SPD 闪存芯片写入少量数据。

因此,存在攻击者可以使用其中一个驱动程序写入 SPD 闪存的情况。即使在系统重新启动后,或者即使您重新安装了操作系统,这些数据也会保留在 DIMM 上。数据本身不会做任何事情——你需要恶意代码已经在系统上运行才能实际读取和写入它——但它是一个很好的隐藏存储位置,用于存储几个字节的数据。在实践中几乎没有理由滥用这个存储位置——它很复杂,容易出错,需要管理员和加载的驱动程序,几乎没有任何好处——但将非易失性数据存储在常规易失性内存上是一个有趣的小技巧DIMM!

这实际上非常重要的一种情况是裸机云托管环境。在这些环境中,客户租用他们拥有完全管理访问权限的物理系统,而不是虚拟化实例。这些服务的提供者需要确保一个客户和另一个客户之间没有数据残留。SPD 写入技巧是攻击者实现数据剩磁的一种方法。主板、硬盘、网卡、RAID 卡等上还有很多其他的 EEPROM,也有可能被具有这种访问权限的攻击者写入。裸机云提供商必须实施特殊检查,以确保这些非易失性闪存设备未被修改。这是一个相当大的挑战,硬件认证远未解决。再说一次,这不

是的,它们可以安全出售。没有消费类 PC 将非易失性 RAM 用作其主存储器。

是的,它们可以安全出售,但是当您将自己描述为“不太精通技术”时,我要补充一点,您还需要注意一个事实,即您应该关注的不仅仅是数据的安全性.

RAM 对静电损坏造成的损坏/破坏也非常敏感……这是从手指之类的东西到芯片的一个引脚的一点点静电,电流非常低,但数千伏就足以烧毁取出蚀刻在其内部硅中的微观组件或电路。

这可能不会立即导致明显的故障,但通常足以降低性能或导致它随着时间的推移而死。

为了防止这种情况发生,并减少从您那里购买它的人带着它回到您身边并抱怨您向他们出售了一些无用的电子垃圾的可能性,您应该阅读(或观看例如 YouTube 视频)anti - 电子产品的静电预防措施并遵循这些。

如果天气非常干燥或寒冷,静电就更危险了。如果你穿羊毛或合成纤维衣服,或者走在地毯或塑料地板上,情况会更糟。您应该通过触摸 PC 的框架来“接地”您的身体,然后将任何东西放在附近,更不用说触摸 DIMM。

请记住,当它们足够高时,您身体上的电压水平很容易跳跃几英寸。这个想法是在你自己和 PC 框架之间创建一个电路,这样你和靠近芯片的任何东西都处于与它相同的电压。您可以获得防静电腕带,该腕带通常是带有金属皮肤接触器的弹性带和连接到夹在 PC 框架上的夹子的电线。

一旦你把它们取下来,你应该把它们直接放进一个防静电袋里(不是普通的塑料袋,它本身就有静电)如果你没有防静电袋,用铝箔包起来是合理的替代品 - 它需要是导电的东西。

谈到静电:导体好,绝缘体不好。

我希望这有帮助!