
发布日期:[今天的日期]
侧信道攻击是一类强大的安全攻击类型,攻击者通过研究实现工件(如缓存访问模式、时序、功率、电磁(EM)发射,甚至声音和振动)来获取敏感信息,而不是直接破解密码学方案。
简而言之,侧信道是任何计算中的“意外”泄漏:物理或逻辑组件在处理受保护信息时留下的微小数据痕迹。
现实世界的类比:
想象一个开锁场景。与其使用蛮力来开锁,不如仔细倾听每个锁销落入位的声音——声音和时序泄露了信息!
常见的侧信道:
为什么重要:
侧信道攻击可以颠覆甚至是最数学加固的加密系统,通常不需要软件漏洞——仅需邻近或访问共享计算资源。
Intel Optane持久性内存(PMem)属于一种新型内存,称为非易失性内存(NVM)。与传统DRAM不同,它在断电后不会丢失内容,Optane保留数据,模糊了RAM和存储之间的边界。
关键特性:
典型的Optane系统:
[CPU] <---> [L1/L2/L3 CPU缓存] <---> [内存控制器] <---> [Optane持久性内存(PMem)]
^
[传统DRAM] ------------------------/
Optane PM的持久性、高密度以及与CPU缓存的紧密集成,使其成为侧信道攻击者既令人兴奋又复杂的目标。
直到最近,大多数侧信道研究集中在DRAM或CPU缓存上,但Optane的独特硬件和新的内部缓存结构引入了新颖的攻击向量。
论文「Persistent State Side-channel Attacks on Intel Optane Persistent Memory」提出了对Optane的首次系统化侧信道安全分析—揭示了之前安全的假设不再成立,并激发了新的防御策略。
传统内存架构具有记录良好的缓存层次结构:CPU上的L1、L2、L3缓存,可能还有DRAM中的行和银行缓冲。Optane PM则展现了内部的、无法记录的缓存。
USENIX 2023研究通过微基准测试揭示了Optane的缓冲结构。内部缓存层次结构大致如下:
| 特性 | DRAM | Optane PM |
|---|---|---|
| 挥发性 | 挥发性 | 非挥发性 |
| 行缓冲大小 | ~8KB | 行缓冲:最多256KB(逆向工程得出) |
| 缓冲生存期 | 断电清除 | 持久或半持久 |
| 攻击面 | 限于DRAM | 扩展至大型、持久性缓冲 |
Optane行缓冲的大小和持久性使其成为新型、高分辨率时空侧频道的可能。
Prime+Probe是一种在共享内存环境中常用的缓存计时攻击,用于推断访问模式。
由于Optane的内部行缓冲较大且持久,Prime+Probe获得了强大的新能力:
实际意义:
恶意软件或租户A可以探测Optane的缓冲占用情况,了解租户B正在访问的内存区域—即使在崩溃或重启之后。
评估安全性的重要步骤是理解硬件。这篇研究论文使用计时微基准测试来实地揭示:
研究人员设计了底层工具,以快速访问(读/写)内存地址序列并记录计时。时序变化表示缓存/缓冲命中和丢失。
import time
import mmap
ADDR = 0x10000000 # 示例物理地址映射
with open("/dev/mem", "rb") as f:
mem = mmap.mmap(f.fileno(), 4096, offset=ADDR)
t1 = time.perf_counter_ns()
data = mem.read(64)
t2 = time.perf_counter_ns()
latency = t2 - t1
print(f"读延迟:{latency} ns")
mem.close()
注意:访问/dev/mem和物理地址需要root权限!在受控实验室环境中使用。
通过改变步幅并测量延迟,研究人员绘制出有多少地址可以共驻在缓冲之前发生逐出,从而逆向工程缓存的相连性。
假设两个租户在云环境中共享硬件,各自使用Optane支持的内存。租户A在Optane的行缓冲上发起Prime+Probe攻击:
假设Optane的缓冲在断电后未清除(或恢复速度足够快以使缓冲持久):
对于研究人员和红队来说,运行自己的微基准测试是非常有意义的。以下是一些用于扫描Optane缓冲和解析Bash和Python中的时序数据的基本代码示例。
#!/bin/bash
# 测量映射内存读时间
FILE="/mnt/pmem0/testfile"
dd if=/dev/zero of=$FILE bs=64K count=1 # 准备文件
for i in {1..1000}; do
t1=$(date +%s%N)
dd if=$FILE of=/dev/null bs=64 count=1 iflag=direct 2>/dev/null
t2=$(date +%s%N)
echo "$(($t2 - $t1))"
done > timings.txt
import matplotlib.pyplot as plt
with open("timings.txt") as f:
times = [int(line.strip()) for line in f]
plt.plot(times)
plt.xlabel("迭代")
plt.ylabel("时间(ns)")
plt.title("Optane访问延迟微基准测试")
plt.show()
要注意什么:
重复的模式—访问时间中的“尖峰”通常表示缓冲丢失(被另一个进程逐出)。
更高级的工具将直接映射到Optane PM的大型数组进行分配,并以计算模式访问,以目标特定行缓冲—然后使用计时数据重构映射。
警告:
虽然对研究有用,但这些行为可能违反提供商关于生产硬件的政策。限于隔离、专用的测试环境中。
侧信道抵抗是多方面的,涉及硬件、系统软件和应用级别的缓解措施。
在恒定时间和恒定模式下实现加密例程和敏感数据访问:
工具和资源:
随着像Intel Optane PM这样的持久性内存技术在数据中心、云和AI基础设施中扩展,侧信道攻击面也在演变。曾经被忽视为威胁载体的内部缓冲架构现在需要来自行业和研究的系统关注。
关键要点:
保持信息更新:
定期审查硬件公告、安全研究,并主动部署缓解措施,以领先于利用新兴技术侧信道的攻击者。
本文是有关硬件安全性和新兴内存技术系列的一部分。如果您觉得有见地,请分享给您的团队,并订阅以获取下一代网络安全更新。
*注意:始终在专用、合法和有许可的环境中进行侧信道攻击实验。*