侧信道攻击利用密码系统运行时的物理泄露信息(如时间、功耗、电磁辐射等)来恢复密钥或敏感数据。传统的侧信道分析需要深厚的信号处理和统计学知识,而大语言模型的引入为这一领域带来了新的突破。本章将探讨如何利用LLM增强侧信道攻击的效率和准确性,从模式识别到自动化特征提取,再到高级的深度学习集成方法。我们将深入分析各类侧信道的特性,并展示LLM如何革新传统的分析流程。
缓存时序攻击利用缓存命中和缺失的时间差异来推断密钥信息。LLM可以通过学习大量的时序模式来识别微妙的泄露特征,这种能力远超传统的阈值判断方法。
现代处理器采用多级缓存架构来提升性能,但这也引入了时序侧信道。缓存层级的访问延迟差异构成了信息泄露的物理基础:
CPU Core
|
L1 Cache (32KB, ~4 cycles)
|
L2 Cache (256KB, ~12 cycles)
|
L3 Cache (8MB, ~40 cycles)
|
Main Memory (~200 cycles)
缓存的基本映射方式决定了攻击的可行性。对于一个n路组相联缓存,地址映射函数为:
\[\text{set\_index} = \left\lfloor \frac{\text{address}}{\text{line\_size}} \right\rfloor \bmod \text{num\_sets}\]其中缓存行大小通常为64字节,组数为缓存容量除以(路数×行大小)。
包含-排斥原理(Inclusion-Exclusion)在多级缓存中起关键作用:
替换策略影响攻击的可预测性:
Prime+Probe是最经典的缓存攻击技术,其核心步骤为:
时序模型可以表示为: \(T_{\text{probe}}(s) = \begin{cases} T_{\text{hit}} & \text{if set } s \text{ not evicted} \\ T_{\text{miss}} & \text{if set } s \text{ evicted} \end{cases}\)
攻击的信息论分析: 设受害者访问缓存组$s$的概率为$P(s|k)$,其中$k$是密钥。攻击者观察到的时序$t$提供的信息量为: \(I(K;T) = \sum_{k,t} P(k,t) \log \frac{P(k,t)}{P(k)P(t)}\)
理想情况下,每次观察可获得约$\log_2(n)$比特信息,其中$n$是可区分的缓存组数。
Flush+Reload变种: 利用共享内存(如动态链接库)实现更精确的攻击:
clflush指令清除目标地址Flush+Reload的优势:
传统方法依赖手工特征提取,而LLM可以自动学习复杂的时序模式。我们构建一个基于Transformer的时序分析模型:
输入序列:$X = [t_1, t_2, …, t_n]$ 其中 $t_i$ 是第i次内存访问的时间
嵌入层将时间值映射到高维空间: \(E(t_i) = \text{Linear}(t_i) + \text{PositionalEncoding}(i)\)
自注意力机制捕获时序依赖: \(\text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V\)
多尺度时序建模: 不同的缓存攻击模式在不同时间尺度上表现:
多头注意力捕获不同尺度的模式: \(\text{MultiHead}(Q,K,V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O\)
其中每个头使用不同的注意力窗口大小。
时序异常检测: 使用变分自编码器(VAE)检测异常访问模式: \(\mathcal{L} = \mathbb{E}_{q(z|x)}[\log p(x|z)] - \text{KL}(q(z|x)||p(z))\)
异常分数基于重构误差: \(\text{Anomaly}(x) = ||x - \text{Decoder}(\text{Encoder}(x))||^2\)
实际的时序测量包含大量噪声,需要预处理:
滑动窗口平均: \(\bar{t}_i = \frac{1}{2w+1} \sum_{j=i-w}^{i+w} t_j\)
异常值检测:使用MAD(Median Absolute Deviation): \(\text{MAD} = \text{median}(|t_i - \text{median}(t)|)\)
异常判定阈值: \(\text{outlier} = \{t_i : |t_i - \text{median}(t)| > k \cdot \text{MAD}\}\) 其中$k$通常取3-5。
自适应噪声抑制: 卡尔曼滤波器动态估计真实信号: \(\hat{x}_{k|k} = \hat{x}_{k|k-1} + K_k(z_k - H\hat{x}_{k|k-1})\) \(K_k = P_{k|k-1}H^T(HP_{k|k-1}H^T + R)^{-1}\)
其中$K_k$是卡尔曼增益,$P$是误差协方差,$R$是测量噪声协方差。
小波去噪: 小波变换提供时频局部化: \(W(a,b) = \frac{1}{\sqrt{a}} \int x(t) \psi^*\left(\frac{t-b}{a}\right) dt\)
软阈值去噪: \(\hat{w} = \text{sign}(w) \cdot \max(|w| - \lambda, 0)\)
其中$\lambda = \sigma\sqrt{2\log N}$是通用阈值。
功耗分析攻击(Power Analysis)利用设备执行不同操作时的功耗差异来推断密钥。LLM可以识别功耗曲线中的细微模式,自动发现传统方法难以察觉的泄露点。
CMOS电路的动态功耗主要来自电容充放电: \(P_{\text{dynamic}} = \alpha \cdot C \cdot V_{dd}^2 \cdot f\)
其中α是活动因子,C是负载电容,$V_{dd}$是供电电压,f是时钟频率。
完整功耗模型包含多个组件: \(P_{\text{total}} = P_{\text{dynamic}} + P_{\text{static}} + P_{\text{short-circuit}}\)
汉明重量模型描述了数据与功耗的关系: \(P \propto HW(D) = \sum_{i=0}^{n-1} d_i\)
汉明距离模型考虑状态转换: \(P \propto HD(D_{\text{prev}}, D_{\text{curr}}) = HW(D_{\text{prev}} \oplus D_{\text{curr}})\)
高级泄露模型:
位相关模型:考虑相邻位的耦合效应 \(P = \sum_{i} \alpha_i \cdot d_i + \sum_{i,j} \beta_{ij} \cdot d_i \cdot d_j\)
模板攻击模型:使用多元高斯分布 \(p(t|k) = \mathcal{N}(\mu_k, \Sigma_k)\)
其中$\mu_k$是密钥$k$对应的平均轨迹,$\Sigma_k$是协方差矩阵。
SPA通过直接观察功耗曲线来识别操作:
功耗曲线示例(RSA平方-乘法):
^
P | ___ _______ ___
| | | | | | |
|____| |___| |___| |____
+---------------------------------> t
S M M S
(S=平方, M=乘法)
密钥位推断:
操作识别的统计方法: 使用隐马尔可夫模型(HMM)自动识别操作序列:
状态空间:$S = {\text{Square}, \text{Multiply}, \text{Idle}}$
| 观察模型:$P(O_t | S_t) = \mathcal{N}(\mu_{S_t}, \sigma_{S_t}^2)$ |
转移概率: \(A_{ij} = P(S_{t+1} = j | S_t = i)\)
Viterbi算法找出最可能的状态序列: \(\delta_t(j) = \max_{i} [\delta_{t-1}(i) \cdot A_{ij}] \cdot P(O_t|S_t=j)\)
LLM增强的模式匹配: 训练Transformer识别复杂的操作模式:
DPA使用统计方法提取微小的功耗差异:
收集功耗轨迹:对N个不同明文$p_i$收集功耗$T_i(t)$
中间值预测:对每个密钥猜测$k$,计算中间值: \(V_{i,k} = \text{Sbox}(p_i \oplus k)\)
功耗模型: \(H_{i,k} = HW(V_{i,k})\)
相关性分析: \(\rho_{k,t} = \frac{\text{cov}(H_k, T(t))}{\sigma_{H_k} \cdot \sigma_{T(t)}}\)
正确密钥在相关时刻会产生最高相关性。
相关功耗分析(CPA)的优化:
增量相关性计算减少计算复杂度: \(\rho_{n+1} = \frac{n\rho_n + (x_{n+1} - \bar{x}_n)(y_{n+1} - \bar{y}_n)/\sigma_x\sigma_y}{n+1}\)
互信息分析(MIA): 不依赖线性关系假设: \(I(K;T) = \sum_{k,t} p(k,t) \log \frac{p(k,t)}{p(k)p(t)}\)
使用核密度估计近似概率分布: \(\hat{p}(t) = \frac{1}{Nh} \sum_{i=1}^N K\left(\frac{t-t_i}{h}\right)\)
高阶DPA: 攻击掩码防护需要组合多个时间点: \(\rho_{k,t_1,t_2} = \text{corr}(H_k, T(t_1) \cdot T(t_2))\)
组合复杂度随阶数指数增长,LLM可以学习最优组合策略。
功耗轨迹常存在时间偏移,LLM可以学习对齐模式:
递推关系: \(D(i,j) = d(x_i, y_j) + \min\{D(i-1,j), D(i,j-1), D(i-1,j-1)\}\)
其中$s_{ij}$是查询$q_i$和键$k_j$的相似度分数。
弹性对齐网络(EAN): 结合CNN特征提取和注意力机制:
| 损失函数:$L = | X - \tilde{Y} | ^2 + \lambda \cdot \text{Entropy}(\alpha)$ |
模式识别触发器: 使用已知模式作为锚点进行对齐:
电磁辐射(EM)攻击利用设备运行时产生的电磁场变化,相比功耗分析具有非侵入性和空间分辨率高的优势。
根据麦克斯韦方程,变化的电流产生磁场: \(\nabla \times \vec{B} = \mu_0 \vec{J} + \mu_0 \epsilon_0 \frac{\partial \vec{E}}{\partial t}\)
近场区域($r « \lambda/2\pi$),磁场强度与电流成正比: \(B \propto \frac{I}{r^2}\)
电磁信号包含丰富的频率成分:
短时傅里叶变换(STFT): \(STFT(t,f) = \int_{-\infty}^{\infty} x(\tau) \cdot w(\tau-t) \cdot e^{-j2\pi f\tau} d\tau\)
小波变换:提供时频局部化 \(CWT(a,b) = \frac{1}{\sqrt{a}} \int x(t) \psi^*\left(\frac{t-b}{a}\right) dt\)
谱图特征:
EM探头位置影响信号质量:
芯片布局与EM热点:
+----------------+
| Cache | ALU | <- 高泄露区域
|---------|------|
| Ctrl | Reg | <- 中等泄露
|---------|------|
| I/O | Bus | <- 低泄露
+----------------+
最优探测位置通过信噪比(SNR)评估: \(SNR = 10 \log_{10}\left(\frac{P_{\text{signal}}}{P_{\text{noise}}}\right)\)
结合时域、频域和空间信息:
特征融合网络: \(F_{\text{fusion}} = \text{Concat}(F_{\text{time}}, F_{\text{freq}}, F_{\text{space}})\)
跨模态注意力: \(\text{CrossAttention}(Q_{\text{time}}, K_{\text{freq}}, V_{\text{freq}})\)
LLM不仅能增强物理攻击,还能直接参与密码分析过程。
LLM可以理解密码算法的高层逻辑:
差分特征的概率计算: \(P(\Delta X \rightarrow \Delta Y) = \frac{\#\{X : S(X) \oplus S(X \oplus \Delta X) = \Delta Y\}}{2^n}\)
LLM可以:
线性逼近的偏差: \(\epsilon = \left|P\left(\bigoplus_{i \in I} x_i = \bigoplus_{j \in J} y_j\right) - \frac{1}{2}\right|\)
LLM应用:
将密码系统建模为布尔方程组: \(f_i(x_1, ..., x_n, k_1, ..., k_m) = c_i, \quad i = 1, ..., l\)
LLM辅助:
深度学习为DPA带来了革命性改进,无需手工选择功耗模型。
传统DPA流程:
轨迹 → 预处理 → 特征提取 → 统计分析 → 密钥恢复
深度DPA流程:
轨迹 → 神经网络 → 密钥概率分布
网络架构设计:
卷积层:提取局部特征 \(y_i = \sigma\left(\sum_{j} w_j \cdot x_{i+j} + b\right)\)
循环层:捕获时序依赖 \(h_t = \tanh(W_h h_{t-1} + W_x x_t + b)\)
注意力层:聚焦关键时刻 \(\alpha_t = \frac{\exp(e_t)}{\sum_j \exp(e_j)}\)
生成对抗样本测试防护措施:
\[x_{\text{adv}} = x + \epsilon \cdot \text{sign}(\nabla_x L(f(x), y))\]防护措施的鲁棒性评估:
利用预训练模型加速新设备的攻击:
域适应: \(L = L_{\text{task}} + \lambda \cdot L_{\text{domain}}\)
元学习: \(\theta' = \theta - \alpha \nabla_\theta L_{\text{support}}\) \(\theta^* = \arg\min_\theta L_{\text{query}}(\theta')\)
少样本学习:仅需少量目标设备的轨迹
理解深度模型的决策过程:
梯度可视化: \(R_i = \left|\frac{\partial L}{\partial x_i}\right|\)
激活映射: \(CAM = \sum_k w_k \cdot A_k\)
SHAP值:量化特征贡献 \(\phi_i = \sum_{S \subseteq N \setminus \{i\}} \frac{|S|!(n-|S|-1)!}{n!}[v(S \cup \{i\}) - v(S)]\)
本章深入探讨了侧信道分析与信号处理领域中LLM的创新应用。我们从缓存时序攻击的基础原理出发,展示了如何利用Transformer架构自动识别复杂的时序模式。在功耗分析部分,我们详细介绍了SPA和DPA的数学基础,以及LLM如何辅助轨迹对齐和噪声过滤。电磁泄露分析展示了多模态信息融合的优势,而密码分析部分则说明了LLM在理解算法语义和优化攻击策略方面的潜力。
关键要点:
核心公式回顾:
设计一个Prime+Probe攻击来恢复AES密钥的第一个字节。假设你知道AES查找表的地址,缓存为4路组相联,共64个组,每个缓存行64字节。
提示:考虑AES的S-box访问模式与密钥字节的关系。
比较汉明重量(HW)模型和汉明距离(HD)模型在不同场景下的适用性。给出一个HD模型比HW模型更准确的具体例子。
提示:考虑硬件实现中的寄存器更新操作。
实现一个针对AES第一轮的DPA攻击。给定1000条功耗轨迹,每条包含10000个采样点,如何高效地恢复16字节密钥?
提示:利用AES的字节独立性,可以逐字节攻击。
设计一个基于STFT的方法来识别RSA模幂运算中的平方和乘法操作。时钟频率为100MHz,采样率为1GHz。
提示:平方和乘法操作的频谱特征不同。
设计一个CNN架构用于DPA攻击,输入是长度为5000的功耗轨迹,输出是256个密钥候选的概率分布。讨论架构选择的理由。
提示:考虑局部特征提取和全局信息整合。
设计一个系统,使用LLM来自动识别二进制代码中的密码算法实现,并生成相应的侧信道攻击策略。
提示:结合静态分析、模式匹配和攻击知识库。
提出一种新的侧信道防护方法,结合掩码和隐藏技术,并分析其安全性和性能开销。
提示:考虑高阶攻击和实现复杂度的平衡。
研究如何将在设备A上训练的DPA模型迁移到设备B,两个设备使用相同的密码算法但不同的硬件实现。
提示:领域适应和不变特征学习。