
量子计算带来了求解经典计算机无法承受的难题的希望——包括密码学、化学模拟、优化等。然而,量子硬件的强大同样引入了新的网络安全风险。其中最关键且新兴的威胁是针对量子系统物理实现的 侧信道攻击。本文为技术博客,全面探讨量子计算机侧信道漏洞,引用最新学术进展,并整合代码示例和实用的缓解技术。
侧信道攻击 并不直接针对密码算法本身;它利用系统物理实现泄露的间接信息实施攻击。常见例子包括执行时间、 电磁辐射、声学信号,或在计算过程中的 功耗变化。
在经典系统中,侧信道攻击已经让攻击者通过分析加密操作产生的物理信号,从智能卡、物联网设备与安全芯片中恢复加密密钥。
量子计算机 —— 虽然原理迥异,却同样无法免疫。其硬件可能通过侧信道泄露信息,且随着云端量子计算的普及,攻击者可远程接触硬件,风险更为突出。
量子攻击 威胁经典的非对称(如 RSA、ECC)与对称密码。例如:
后量子密码学 旨在研发能抵御量子攻击的算法。但它们并不总能防御侧信道威胁;哪怕数学上安全,物理实现也可能被侧信道攻破。
功耗侧信道 攻击通过分析设备功耗随内部操作变化的方式,泄露敏感信息,如密钥、算法行为甚至电路状态。
以 差分功耗分析 (DPA) 为例:攻击者记录设备在处理不同输入时的功耗波形,然后使用统计方法将功耗变化与密钥相关操作相关联。
# 简化示例:Python 解析功耗波形
import numpy as np
from scipy.stats import pearsonr
def find_leakage(trace_files, hypothetical_values):
correlations = []
for key_guess in hypothetical_values:
traces = [np.loadtxt(f) for f in trace_files]
hypothesis = [model(input_data, key_guess) for input_data in inputs]
correlation = pearsonr(traces, hypothesis)[0]
correlations.append((key_guess, correlation))
return max(correlations, key=lambda x: abs(x[1]))
量子控制硬件与读出电子学——振荡器、放大器、转换器——在执行 量子门、量子比特控制与测量 时会展现与之相关的功耗模式。这些模式可泄露:
这是独特的攻击面,因为量子计算通常通过云端远程访问,不受信任的用户可提交任意电路。
根据 Liang 等人, 2023 (arxiv.org/abs/2304.03315),研究者已识别出 五类新的量子功耗侧信道攻击。这些方法利用 控制脉冲信息——驱动量子门的电磁脉冲序列。
攻击者提交按程序精确定时的序列,观察硬件功耗的细微差异,推断量子门执行顺序及其时间。
控制脉冲幅度的变化(表示逻辑 “0/1” 或门参数)会导致功耗签名相应变化。监视这些签名可泄露处理的数据值或量子比特状态。
不同门类型(如 X、Y、Z、H、CNOT)需不同的脉冲形状。通过分析功耗轮廓,攻击者可区分单量子比特与多量子比特操作等。
在云端量子平台,硬件执行被多用户复用。攻击者可将自身作业的时序与整体功耗模式相关联,推断其他用户的计算——甚至提取“邻近”进程的信息。
初始化与测量阶段所需功耗取决于操作与硬件物理状态,可成为另一条信息通道。
| 攻击类型 | 泄漏信息 |
|---|---|
| 控制脉冲计时 | 门序列、门时序 |
| 幅度调制泄漏 | 输入值、参数、量子比特状态 |
| 门间可区分性 | 操作类型、电路结构 |
| 跨用户推断 | 其他用户作业特征 |
| SPAM 渠道泄漏 | 量子比特初态与测量态 |
Liang 等人 (2023) 对 云端量子计算机(如 IBM Q、Rigetti)的真实数据进行了评估,重点是用户可访问的 控制脉冲信息。
主要结论:
假设用户可下载自己计算的控制脉冲信息。攻击者提交 “探测” 电路并记录相应控制数据,通过已知硬件特性交叉分析,推断:
在 IBM Quantum Experience 中:
# 下载实验结果及脉冲数据(虚构指令)
ibm_quantum_client get-experiment --id <experiment_id> --include-pulse-data
import json
def parse_control_pulses(logfile):
with open(logfile, 'r') as f:
data = json.load(f)
pulses = data['pulse_sequence']
for pulse in pulses:
print(
f"Pulse at t={pulse['start_time']}ns, "
f"duration={pulse['duration']}ns, "
f"amplitude={pulse['amplitude']}, "
f"channel={pulse['channel']}"
)
攻击者随后可基于幅度、时序、通道等参数建立统计模型,推断执行的电路,哪怕不了解原始代码。
通过简单工具(Bash、Python)扫描日志或监视公开的量子系统信息即可演示侧信道风险。
假设存在大量脉冲日志文件,且怀疑某些高幅度对应敏感操作。
#!/bin/bash
for logfile in ./pulse_logs/*.json; do
# 提取幅度值,打印超过泄漏阈值 (例如 0.8) 的条目
jq '.pulse_sequence[] | select(.amplitude > 0.8) | {time: .start_time, amp: .amplitude}' "$logfile"
done
说明:
脚本遍历所有 JSON 脉冲日志,对每个文件使用 jq 打印幅度 >0.8 的脉冲。攻击者已判定此阈值与关键位或特权操作相关。
import glob
import json
import numpy as np
def extract_amplitudes(directory):
amplitudes = []
for file in glob.glob(f"{directory}/*.json"):
with open(file) as f:
data = json.load(f)
amplitudes.extend([
pulse["amplitude"]
for pulse in data.get("pulse_sequence", [])
])
return np.array(amplitudes)
# 分析幅度分布,寻找聚类 = 潜在泄漏
amps = extract_amplitudes("./pulse_logs")
import matplotlib.pyplot as plt
plt.hist(amps, bins=50)
plt.title("控制脉冲幅度分布")
plt.xlabel("幅度")
plt.ylabel("计数")
plt.show()
若出现明显聚类或重复离群值,可能表明非随机、与密钥相关的泄漏。
虽然后量子密码协议在数学上安全,但 物理实现同样必须抵御侧信道攻击。这一点与经典密码学的教训相似,但量子硬件与云环境带来新的挑战。
盲化与随机化
掩码 (Masking)
from qiskit import QuantumCircuit
import random
def pad_with_random_gates(circuit, n_qubits, pad_prob=0.2):
for q in range(n_qubits):
if random.random() < pad_prob:
# 插入随机门
g = random.choice([circuit.x, circuit.y, circuit.z, circuit.h])
g(q)
return circuit
qc = QuantumCircuit(5)
qc = pad_with_random_gates(qc, 5)
说明:
该函数在量子电路中随机填充额外门,降低时序与功耗模式对真实计算的关联度。
“基于硬件的对策……还可包括噪声发生器、恒流源与电磁屏蔽的加入。”
– Secure-IC 访谈
密码学与侧信道研究之间的军备竞赛将迅速扩展到量子领域。随着越来越多组织依赖云端量子计算,抗侧信道能力必须成为首要考虑,而非事后补救。
量子鲁棒 不仅意味着在数学上能抵御量子算法攻击,还意味着在物理层面抵抗量子硬件的特定泄漏。需要新的标准与最佳实践,要求 量子物理学家、工程师与网络安全专家 交叉协作。
安全实践者行动要点:
量子计算机侧信道攻击利用诸如功耗或硬件响应等间接信息,推断量子计算的敏感数据,即使数学上的密码学是安全的。
可以。最新研究表明,分析控制脉冲功耗信息可泄露量子电路结构、密钥值等。
结合软件对策(随机化、掩码、伪装操作)与强硬件隔离、噪声及审计机制,并向云服务商提出需求。
否——在数学上安全的后量子算法仍可能通过侧信道泄露机密,无论在经典还是量子硬件上。
保持关注,获取量子网络安全和侧信道攻击领域的最新研究进展。