https://arxiv.org/abs/2409.02292
这篇论文挺有意思,研究的是一个非常反直觉的安全问题:
一台完全没有联网、没有 Wi-Fi、没有蓝牙的电脑,能不能偷偷把数据发送出去?
答案是:可以。甚至不需要额外安装无线发射器,攻击者就能利用计算机内部的内存硬件,让电脑自己产生无线电信号。
论文标题是:
RAMBO: Leaking Secrets from Air-Gap Computers by Spelling Covert Radio Signals from Computer RAM
作者:Mordechai Guri,以色列本-古里安大学安全研究团队的研究人员。
论文发表于 2024 年,相关工作被 Nordic Conference on Secure IT Systems 2023 接收。
它研究的是一种叫做 Air-Gap Covert Channel(物理隔离环境中的隐蔽通信信道) 的攻击。
先说结论:这不是黑客远程攻破一台断网电脑,而是攻击者已经设法在这台电脑上植入恶意程序,然后利用硬件运行时产生的电磁辐射,把数据偷偷传出去。
一、核心原理:RAM 为什么能变成无线电发射器?
先理解一个基础知识:计算机只要有电流变化,就会产生电磁场。
这不是 RAM 特有的现象,CPU、GPU、主板、内存总线、电源等都会产生电磁辐射。
RAMBO 利用的是内存总线(Memory Bus)的电磁辐射。
我们知道,CPU 和 RAM 之间需要通过内存总线交换数据。
例如 CPU 要向内存写入数据:
- CPU 发出内存写入请求。
- 内存总线上的数据线发生电压变化。
- 电压和电流的快速变化产生电磁场。
- 电路板上的导线会产生一定的电磁辐射。
正常情况下,这些辐射只是计算机运行过程中不可避免的副产品。
但论文的关键发现是:
如果我们能够控制内存访问的时间和频率,就能够有规律地改变电磁辐射,从而把它变成一种可以携带数据的信号。
这就相当于把 RAM 变成了一台非常简陋的无线电发射器。
1. 如何用 RAM 发送 0 和 1?
论文使用了一种非常经典的数字调制技术:OOK(On-Off Keying,通断键控)。
它的逻辑很简单:
- 发送 1:持续执行内存写入操作,产生相应的电磁辐射。
- 发送 0:让线程休眠,停止产生这种有规律的辐射。
举个例子,要发送一个字节:
10110010
恶意程序就按照这个序列控制内存访问:
有信号 → 无信号 → 有信号 → 有信号
→ 无信号 → 无信号 → 有信号 → 无信号
接收端只要能够检测到信号的有无,就能还原出 0 和 1。
这里有个很有意思的细节:论文使用了 x86 指令 MOVNTI。
这是一个非临时存储指令(Non-Temporal Store),主要用于将数据写入内存,避免不必要的缓存污染。研究人员利用它维持内存总线活动,产生更明显的电磁信号。
2. 为什么还需要 Manchester 编码?
论文还使用了 Manchester Encoding(曼彻斯特编码)。
因为无线电接收端存在一个问题:它怎么知道每一个比特从哪里开始、在哪里结束?
如果连续发送很多个 1,接收端可能很难确定比特边界。
曼彻斯特编码通过在每个比特周期中间制造一次信号跳变,帮助接收端同步时钟。
它的代价是占用更多带宽,但同步和抗干扰能力更好。
所以,整个过程其实非常像传统无线通信系统:
| 无线通信概念 | RAMBO 中的实现 |
|---|---|
| 发射器 | 被感染的计算机 RAM 总线 |
| 信号源 | 内存读写操作 |
| 调制 | OOK |
| 编码 | Manchester |
| 接收器 | SDR 软件无线电 |
| 天线 | 普通天线 |
| 解码 | 软件解调、恢复二进制数据 |
这里最值得注意的是:整个无线信号的产生过程,是通过软件控制普通硬件完成的,并没有增加专门的无线发射模块。
二、攻击者究竟如何接收数据?
论文使用的是 SDR(Software Defined Radio,软件定义无线电)。
具体实验设备包括:
- Ettus USRP B210 软件无线电设备。
- 普通天线。
- 一台运行接收和解调程序的计算机。
SDR 可以理解成一台能够通过软件处理无线电信号的通用接收设备。
它接收计算机 RAM 产生的电磁信号,然后进行:
- 采集无线电信号。
- 分析信号强度变化。
- 识别 OOK 信号。
- 根据 Manchester 编码恢复比特。
- 重新组合成原始数据。
最终,接收端就能够还原被盗取的信息。
注意,这里不需要目标电脑拥有 Wi-Fi 或蓝牙功能。接收端也不需要与目标电脑建立任何网络连接。
三、实验结果:到底能传多远、传多快?
这是论文最值得关注的部分。
研究人员在三台工作站上进行了实验:
- Intel i7 3.6GHz CPU
- 16GB RAM
- 内存频率 2133~2400MHz
- Ubuntu 18.04.6
论文测试了不同发送速度和接收距离。
1. 传输距离
论文实验中的信噪比(SNR)
| 距离 | 平均 SNR |
|---|---|
| 0.5 米 | 38 dB |
| 1 米 | 30 dB |
| 2 米 | 27 dB |
| 3 米 | 22 dB |
| 4 米 | 17 dB |
| 5 米 | 15 dB |
| 6 米 | 12 dB |
| 7 米 | 8 dB |
可以看到,距离越远,信号质量越差。
2. 传输速度与错误率
论文测试了三种传输速度:
| 单比特时间 | 理论速率 | 最远测试距离 |
|---|---|---|
| 10ms | 100 bit/s | 7 米 |
| 5ms | 200 bit/s | 4.5 米 |
| 1ms | 1000 bit/s | 3 米 |
这里有个很重要的工程权衡:
传输速度越快,距离越短,信号错误率也越容易上升。
在 1000 bit/s 的设置下,论文报告的 3 米距离误码率约为 2%~4%。
研究人员还尝试了 5000 bit/s 甚至更高的速度,但误码率大多超过 5%,实用性明显下降。
3. 能偷走什么数据?
论文给出了一些实际数据量的传输时间:
| 数据 | 数据大小 | 100 bit/s | 200 bit/s | 1000 bit/s |
|---|---|---|---|---|
| 128-bit 密码 | 128 bit | 1.28秒 | 0.64秒 | 0.128秒 |
| RSA 密钥 | 4096 bit | 41秒 | 20秒 | 4秒 |
| 生物特征数据 | 10000 bit | 100秒 | 50秒 | 10秒 |
| 小图片 | 25000 bit | 250秒 | 125秒 | 25秒 |
| 文档 | 40000 bit | 400秒 | 200秒 | 40秒 |
这就很有意思了。
你可能觉得 1000 bit/s 很慢,但对于窃取密码、密钥、键盘输入记录来说,其实已经相当够用了。
攻击者并不需要通过这个信道传输整个硬盘。
他只需要把最有价值的信息传出去。
以上数据是论文给出的实验估算,不代表所有类型数据在任意距离和环境下都能达到这些速度。
四、如何防御?断网为什么还不够?
论文给出了几种防御方案。
1. 法拉第笼(Faraday Cage)
这是最直接的办法。
使用金属屏蔽机箱或者专门的屏蔽房间,阻止电磁辐射向外传播。
论文使用铜箔进行了屏蔽实验,报告其能够有效阻断 RAMBO 信号。
但这种方法成本较高,而且设备的散热、供电和数据接口都需要考虑屏蔽设计。
2. 无线电频谱监控
在涉密区域部署频谱分析设备,持续监控异常无线电信号。
如果一台没有无线通信需求的计算机,突然在特定频率产生有规律的信号,就值得调查。
问题是,计算机本身就会产生大量电磁辐射,识别恶意信号并不容易。
3. 监控异常内存操作
可以从操作系统、内核或者虚拟机管理器层面,监控异常的内存读写行为。
例如,一个普通程序突然持续进行大量非临时内存写入,就可能值得关注。
但论文也指出,这种检测存在误报问题,因为正常操作系统本来就有大量内存活动。
4. 隔离涉密设备
这实际上是更重要的措施。
- 限制外部无线电接收设备进入涉密区域。
- 对不同安全等级的设备进行物理隔离。
- 严格控制 USB 等外部介质。
- 限制人员和设备的物理接触权限。
这里有个容易忽略的事实:
空气隔离(Air Gap)解决的是网络连接问题,不等于解决了所有信息泄露问题。
五、我认为这篇论文最值得思考的三个问题
1. 这不是 RAM 的漏洞,而是物理世界的副作用
这是我觉得整篇论文最有价值的地方。
我们平时理解计算机安全,通常是这样的:
软件安全:
漏洞 → 攻击 → 数据泄露
网络安全:
网络连接 → 通信 → 数据泄露
但 RAMBO 展示的是另一种情况:
程序执行
↓
控制硬件行为
↓
产生物理信号
↓
信号携带信息
↓
外部设备接收
↓
数据泄露
这里没有利用传统意义上的软件漏洞,也没有利用网络协议。
它利用的是计算机正常运行过程中不可避免的物理现象。
这类攻击有一个专业名称:Side-Channel Attack(侧信道攻击)。
侧信道攻击的核心思想是:
不直接攻击系统存储的数据,而是通过系统运行过程中产生的额外信息,推断或者恢复原本不应该公开的信息。
例如:
- CPU 功耗变化,可以推测加密运算过程。
- 执行时间差异,可以推测密钥信息。
- 声音变化,可以推测硬件运行状态。
- 电磁辐射,可以恢复处理过程中的数据。
RAMBO 就是利用电磁辐射建立一个隐蔽的数据传输通道。
2. 物理隔离的安全边界,可能比我们想象的复杂
过去我们可能认为:
一台电脑没有网卡,没有 Wi-Fi,没有蓝牙,拔掉网线,就基本上无法向外传输数据。
但实际上,电脑还有很多物理输出:
| 硬件 | 可以利用的物理信号 |
|---|---|
| RAM | 电磁辐射 |
| CPU | 电磁辐射、功耗 |
| GPU 风扇 | 声音 |
| 屏幕 | 光信号 |
| 键盘 LED | 光信号 |
| 电源 | 电磁辐射、声音 |
| SATA 线缆 | 电磁辐射 |
这些都曾经成为相关安全研究的对象。
换句话说,计算机不是一个纯粹的软件系统,而是一个物理系统。
软件运行的结果,最终会反映在电流、电压、温度、声音、光线和电磁场上。
只要能够控制其中某种物理现象,就可能构建一条隐蔽通信信道。
3. 这类攻击的真正门槛在哪里?
这里需要特别冷静。
RAMBO 并不是说黑客站在办公室外面,就能随便读取附近电脑的内存。
它有非常严格的前提:
- 攻击者必须先通过 USB、供应链或者内部人员等方式感染目标电脑。
- 恶意程序必须能够执行并控制内存操作。
- 攻击者需要在附近部署 SDR 接收设备和天线。
- 接收端需要知道如何解调和恢复数据。
- 传输距离、环境干扰和误码率都会限制实际效果。
另外,论文的实验平台是 Intel i7、DDR4 内存以及 Ubuntu 18.04,不能直接把实验数据推广到所有现代计算机,尤其不能认为 DDR5、不同主板设计和不同机箱都具有相同的传输效果。
还有一点:论文主要证明了这条信道的可行性,并没有证明现实世界中已经存在大规模利用 RAMBO 的攻击活动。
所以它更接近一项安全研究和攻击技术验证,而不是一个正在普遍发生的安全威胁。
六、我的总结
值得了解的安全研究
我认为这篇论文最有意思的不是 1000 bit/s,也不是 7 米的传输距离。
而是它揭示了一个计算机安全领域很重要的事实:
我们以为计算机没有对外通信能力,但实际上,计算机运行本身就在不断向物理世界释放信息。
RAMBO 把这种原本无意产生的电磁辐射,变成了一种可以编码、调制、接收和解码的数据传输通道。
从工程角度看,它也让我想到一个问题:
我们现在越来越重视软件层面的安全,比如沙箱、权限控制、容器隔离、网络隔离、零信任。
但这些安全机制主要解决的是软件和逻辑层面的边界问题。
如果攻击者已经控制了底层硬件行为,那么信息仍然可能通过逻辑边界之外的物理信道泄露。
这也是为什么真正高等级的涉密环境,不仅需要网络隔离,还需要考虑电磁屏蔽、物理区域划分和设备管理。
最终,计算机安全的边界不只是网络边界,而是整个物理世界。
如果想进一步深入,我建议研究一个相关方向:TEMPEST(电磁信息泄漏防护)。它比 RAMBO 历史更悠久,也涉及一个很有意思的问题:能不能通过显示器、线缆产生的电磁辐射,还原屏幕上显示的文字和图像?