llm_safety

第15章:侧信道分析与信号处理

侧信道攻击利用密码系统运行时的物理泄露信息(如时间、功耗、电磁辐射等)来恢复密钥或敏感数据。传统的侧信道分析需要深厚的信号处理和统计学知识,而大语言模型的引入为这一领域带来了新的突破。本章将探讨如何利用LLM增强侧信道攻击的效率和准确性,从模式识别到自动化特征提取,再到高级的深度学习集成方法。我们将深入分析各类侧信道的特性,并展示LLM如何革新传统的分析流程。

学习目标

15.1 缓存时序攻击的模式识别

缓存时序攻击利用缓存命中和缺失的时间差异来推断密钥信息。LLM可以通过学习大量的时序模式来识别微妙的泄露特征,这种能力远超传统的阈值判断方法。

15.1.1 缓存架构与攻击原理

现代处理器采用多级缓存架构来提升性能,但这也引入了时序侧信道。缓存层级的访问延迟差异构成了信息泄露的物理基础:

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)在多级缓存中起关键作用:

替换策略影响攻击的可预测性:

15.1.2 Prime+Probe攻击模式

Prime+Probe是最经典的缓存攻击技术,其核心步骤为:

  1. Prime阶段:攻击者填充目标缓存组
  2. 等待阶段:受害者执行密码运算
  3. 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变种: 利用共享内存(如动态链接库)实现更精确的攻击:

  1. Flush:使用clflush指令清除目标地址
  2. Wait:等待受害者执行
  3. Reload:测量重新加载时间

Flush+Reload的优势:

15.1.3 LLM增强的模式识别

传统方法依赖手工特征提取,而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\)

多尺度时序建模: 不同的缓存攻击模式在不同时间尺度上表现:

  1. 微观尺度(~10 cycles):单次缓存访问
  2. 中观尺度(~1000 cycles):加密轮函数
  3. 宏观尺度(~100000 cycles):完整加密操作

多头注意力捕获不同尺度的模式: \(\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\)

15.1.4 噪声过滤与信号增强

实际的时序测量包含大量噪声,需要预处理:

  1. 滑动窗口平均: \(\bar{t}_i = \frac{1}{2w+1} \sum_{j=i-w}^{i+w} t_j\)

  2. 异常值检测:使用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。

  1. 频域滤波:通过FFT识别周期性模式: \(T(f) = \sum_{n=0}^{N-1} t_n \cdot e^{-2\pi i fn/N}\)

自适应噪声抑制: 卡尔曼滤波器动态估计真实信号: \(\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}$是通用阈值。

15.2 功耗曲线的智能分析

功耗分析攻击(Power Analysis)利用设备执行不同操作时的功耗差异来推断密钥。LLM可以识别功耗曲线中的细微模式,自动发现传统方法难以察觉的泄露点。

15.2.1 功耗泄露模型

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}})\)

高级泄露模型

  1. 位相关模型:考虑相邻位的耦合效应 \(P = \sum_{i} \alpha_i \cdot d_i + \sum_{i,j} \beta_{ij} \cdot d_i \cdot d_j\)

  2. 模板攻击模型:使用多元高斯分布 \(p(t|k) = \mathcal{N}(\mu_k, \Sigma_k)\)

    其中$\mu_k$是密钥$k$对应的平均轨迹,$\Sigma_k$是协方差矩阵。

15.2.2 简单功耗分析(SPA)

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识别复杂的操作模式:

  1. 输入:功耗轨迹段$[p_1, …, p_n]$
  2. 输出:操作类型概率分布
  3. 优势:自动学习操作特征,适应不同实现

15.2.3 差分功耗分析(DPA)

DPA使用统计方法提取微小的功耗差异:

  1. 收集功耗轨迹:对N个不同明文$p_i$收集功耗$T_i(t)$

  2. 中间值预测:对每个密钥猜测$k$,计算中间值: \(V_{i,k} = \text{Sbox}(p_i \oplus k)\)

  3. 功耗模型: \(H_{i,k} = HW(V_{i,k})\)

  4. 相关性分析: \(\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可以学习最优组合策略。

15.2.4 LLM辅助的轨迹对齐

功耗轨迹常存在时间偏移,LLM可以学习对齐模式:

  1. 动态时间规整(DTW): \(DTW(X,Y) = \min_{\pi} \sum_{(i,j) \in \pi} d(x_i, y_j)\)

递推关系: \(D(i,j) = d(x_i, y_j) + \min\{D(i-1,j), D(i,j-1), D(i-1,j-1)\}\)

  1. 基于注意力的对齐: \(\text{Alignment}(i,j) = \frac{\exp(s_{ij})}{\sum_k \exp(s_{ik})}\)

其中$s_{ij}$是查询$q_i$和键$k_j$的相似度分数。

弹性对齐网络(EAN): 结合CNN特征提取和注意力机制:

  1. 特征提取:$F_X = \text{CNN}(X)$, $F_Y = \text{CNN}(Y)$
  2. 相似度矩阵:$S_{ij} = F_X^i \cdot F_Y^j$
  3. 软对齐:$\tilde{Y}i = \sum_j \alpha{ij} Y_j$
  4. 损失函数:$L =   X - \tilde{Y}   ^2 + \lambda \cdot \text{Entropy}(\alpha)$

模式识别触发器: 使用已知模式作为锚点进行对齐:

  1. 识别特征操作(如S-box访问)
  2. 计算互相关找到最佳偏移
  3. 分段对齐处理时钟漂移
\[\text{offset} = \arg\max_\tau \sum_t x(t) \cdot y(t+\tau)\]

15.3 电磁泄露的特征提取

电磁辐射(EM)攻击利用设备运行时产生的电磁场变化,相比功耗分析具有非侵入性和空间分辨率高的优势。

15.3.1 电磁泄露原理

根据麦克斯韦方程,变化的电流产生磁场: \(\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}\)

15.3.2 频谱分析与特征提取

电磁信号包含丰富的频率成分:

  1. 短时傅里叶变换(STFT): \(STFT(t,f) = \int_{-\infty}^{\infty} x(\tau) \cdot w(\tau-t) \cdot e^{-j2\pi f\tau} d\tau\)

  2. 小波变换:提供时频局部化 \(CWT(a,b) = \frac{1}{\sqrt{a}} \int x(t) \psi^*\left(\frac{t-b}{a}\right) dt\)

  3. 谱图特征

    • 基频:处理器时钟频率
    • 谐波:基频的整数倍
    • 调制边带:数据依赖的频率偏移

15.3.3 空间定位与聚焦

EM探头位置影响信号质量:

芯片布局与EM热点:
+----------------+
|  Cache  | ALU  |  <- 高泄露区域
|---------|------|
|  Ctrl   | Reg  |  <- 中等泄露
|---------|------|
|   I/O   | Bus  |  <- 低泄露
+----------------+

最优探测位置通过信噪比(SNR)评估: \(SNR = 10 \log_{10}\left(\frac{P_{\text{signal}}}{P_{\text{noise}}}\right)\)

15.3.4 LLM的多模态分析

结合时域、频域和空间信息:

  1. 特征融合网络: \(F_{\text{fusion}} = \text{Concat}(F_{\text{time}}, F_{\text{freq}}, F_{\text{space}})\)

  2. 跨模态注意力: \(\text{CrossAttention}(Q_{\text{time}}, K_{\text{freq}}, V_{\text{freq}})\)

15.4 LLM在密码分析中的应用

LLM不仅能增强物理攻击,还能直接参与密码分析过程。

15.4.1 密码算法的语义理解

LLM可以理解密码算法的高层逻辑:

  1. 算法识别:从汇编代码识别密码原语
  2. 参数推断:确定轮数、密钥长度等
  3. 实现特征:识别优化技巧和防护措施

15.4.2 差分密码分析增强

差分特征的概率计算: \(P(\Delta X \rightarrow \Delta Y) = \frac{\#\{X : S(X) \oplus S(X \oplus \Delta X) = \Delta Y\}}{2^n}\)

LLM可以:

  1. 预测高概率差分路径
  2. 优化差分特征搜索
  3. 识别弱密钥类

15.4.3 线性密码分析辅助

线性逼近的偏差: \(\epsilon = \left|P\left(\bigoplus_{i \in I} x_i = \bigoplus_{j \in J} y_j\right) - \frac{1}{2}\right|\)

LLM应用:

  1. 构造线性逼近链
  2. 估计累积偏差
  3. 优化密钥恢复策略

15.4.4 代数攻击与SAT求解

将密码系统建模为布尔方程组: \(f_i(x_1, ..., x_n, k_1, ..., k_m) = c_i, \quad i = 1, ..., l\)

LLM辅助:

  1. 生成高效的CNF编码
  2. 预测SAT求解器性能
  3. 简化方程系统

15.5 高级话题:差分功耗分析与深度学习的结合

深度学习为DPA带来了革命性改进,无需手工选择功耗模型。

15.5.1 端到端的深度DPA

传统DPA流程:

轨迹 → 预处理 → 特征提取 → 统计分析 → 密钥恢复

深度DPA流程:

轨迹 → 神经网络 → 密钥概率分布

网络架构设计:

  1. 卷积层:提取局部特征 \(y_i = \sigma\left(\sum_{j} w_j \cdot x_{i+j} + b\right)\)

  2. 循环层:捕获时序依赖 \(h_t = \tanh(W_h h_{t-1} + W_x x_t + b)\)

  3. 注意力层:聚焦关键时刻 \(\alpha_t = \frac{\exp(e_t)}{\sum_j \exp(e_j)}\)

15.5.2 对抗训练与防护评估

生成对抗样本测试防护措施:

\[x_{\text{adv}} = x + \epsilon \cdot \text{sign}(\nabla_x L(f(x), y))\]

防护措施的鲁棒性评估:

  1. 最小扰动距离:成功攻击所需的最小噪声
  2. 成功率曲线:不同SNR下的攻击成功率
  3. 信息论界限:理论最优攻击的性能

15.5.3 迁移学习与少样本攻击

利用预训练模型加速新设备的攻击:

  1. 域适应: \(L = L_{\text{task}} + \lambda \cdot L_{\text{domain}}\)

  2. 元学习: \(\theta' = \theta - \alpha \nabla_\theta L_{\text{support}}\) \(\theta^* = \arg\min_\theta L_{\text{query}}(\theta')\)

  3. 少样本学习:仅需少量目标设备的轨迹

15.5.4 可解释性与攻击洞察

理解深度模型的决策过程:

  1. 梯度可视化: \(R_i = \left|\frac{\partial L}{\partial x_i}\right|\)

  2. 激活映射: \(CAM = \sum_k w_k \cdot A_k\)

  3. 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在理解算法语义和优化攻击策略方面的潜力。

关键要点:

  1. 模式识别能力:LLM能够从海量的侧信道数据中自动学习泄露模式,无需手工特征工程
  2. 多模态融合:结合时域、频域和空间信息能显著提升攻击效果
  3. 端到端学习:深度学习使得从原始轨迹直接到密钥恢复成为可能
  4. 迁移学习优势:预训练模型可以大幅减少新目标所需的攻击样本数
  5. 理论与实践结合:信息论界限为攻击效果提供了理论保证

核心公式回顾:

练习题

练习15.1:缓存攻击基础

设计一个Prime+Probe攻击来恢复AES密钥的第一个字节。假设你知道AES查找表的地址,缓存为4路组相联,共64个组,每个缓存行64字节。

提示:考虑AES的S-box访问模式与密钥字节的关系。

参考答案 1. 首先确定S-box在缓存中的映射。AES的S-box有256个字节,占用4个缓存行。 2. Prime阶段:访问与S-box冲突的地址,填充相应的缓存组。 3. 触发AES加密,记录victim的S-box访问。 4. Probe阶段:重新访问之前的地址,测量时间。 5. 如果某个组的访问时间较长(cache miss),说明victim访问了该组对应的S-box条目。 6. 根据明文和S-box索引关系:index = plaintext[0] ⊕ key[0],推断key[0]。 7. 重复多次实验,使用统计方法提高准确性。

练习15.2:功耗模型选择

比较汉明重量(HW)模型和汉明距离(HD)模型在不同场景下的适用性。给出一个HD模型比HW模型更准确的具体例子。

提示:考虑硬件实现中的寄存器更新操作。

参考答案 HD模型在以下场景更准确: 1. **寄存器更新**:当数据从一个值转换到另一个值时,功耗与位翻转数量成正比。 2. **总线传输**:预充电总线在数据变化时消耗能量。 3. **具体例子**: - 场景:8位寄存器从0xFF更新到0x00 - HW模型:HW(0xFF)=8, HW(0x00)=0,预测功耗差异大 - HD模型:HD(0xFF, 0x00)=8,准确反映8个位翻转 - 实际功耗主要来自位翻转,HD模型更准确 4. **软件实现**(如智能卡)通常用HW模型,因为每次操作独立加载数据。 5. **硬件实现**多用HD模型,因为存在状态保持和转换。

练习15.3:DPA攻击实现

实现一个针对AES第一轮的DPA攻击。给定1000条功耗轨迹,每条包含10000个采样点,如何高效地恢复16字节密钥?

提示:利用AES的字节独立性,可以逐字节攻击。

参考答案 1. **分而治之策略**:AES第一轮的SubBytes操作是字节独立的,可以逐字节攻击。 2. **攻击流程**(以第i个字节为例): ``` for k_guess in range(256): for trace_idx in range(1000): # 计算中间值 v = Sbox[plaintext[trace_idx][i] ^ k_guess] # 功耗假设 h[trace_idx] = HW(v) # 计算相关性 for t in range(10000): corr[k_guess][t] = pearson(h, traces[:, t]) ``` 3. **密钥识别**:正确密钥在S-box输出时刻产生最高相关性峰值。 4. **优化技巧**: - 使用增量更新减少计算量 - 并行处理16个字节 - 预计算S-box的汉明重量表 5. **验证**:使用恢复的密钥解密已知明密文对。

练习15.4:电磁频谱分析

设计一个基于STFT的方法来识别RSA模幂运算中的平方和乘法操作。时钟频率为100MHz,采样率为1GHz。

提示:平方和乘法操作的频谱特征不同。

参考答案 1. **STFT参数选择**: - 窗口长度:1024个样本(1.024μs) - 窗口类型:Hamming窗减少频谱泄露 - 重叠:75%提高时间分辨率 2. **特征频率**: - 基频:100MHz(时钟) - 谐波:200MHz, 300MHz等 - 数据相关边带:±10-50MHz 3. **操作识别**: - 平方操作:操作数相同,频谱能量集中 - 乘法操作:操作数不同,频谱能量分散 - 特征向量:[基频能量, 谐波比, 边带宽度] 4. **分类器设计**: - 训练SVM或随机森林 - 特征:频谱峰值、带宽、能量分布 5. **密钥恢复**:根据操作序列推断密钥位(Square-and-Multiply算法)。

练习15.5:深度学习DPA(挑战题)

设计一个CNN架构用于DPA攻击,输入是长度为5000的功耗轨迹,输出是256个密钥候选的概率分布。讨论架构选择的理由。

提示:考虑局部特征提取和全局信息整合。

参考答案 1. **网络架构**: ``` Input(5000) → Conv1D(64, 11) → MaxPool(2) → Conv1D(128, 7) → MaxPool(2) → Conv1D(256, 5) → GlobalAvgPool → Dense(512) → Dropout(0.3) → Dense(256, softmax) ``` 2. **设计理由**: - 多层卷积:逐层提取不同尺度的特征 - 递减的卷积核:从粗粒度到细粒度 - MaxPooling:降维并保留显著特征 - GlobalAvgPool:整合全局信息,减少过拟合 - Dropout:防止过拟合,提高泛化能力 3. **训练策略**: - 损失函数:交叉熵或排序损失 - 数据增强:添加高斯噪声、时间偏移 - 学习率调度:余弦退火或阶梯下降 4. **优势**: - 自动特征学习,无需POI选择 - 端到端训练,简化攻击流程 - 可处理未对齐的轨迹

练习15.6:LLM辅助密码分析(挑战题)

设计一个系统,使用LLM来自动识别二进制代码中的密码算法实现,并生成相应的侧信道攻击策略。

提示:结合静态分析、模式匹配和攻击知识库。

参考答案 1. **系统架构**: - 反汇编模块:将二进制转换为汇编代码 - 特征提取:识别密码相关指令模式 - LLM分析:理解算法逻辑和实现细节 - 策略生成:基于识别结果生成攻击方案 2. **算法识别特征**: - S-box访问模式(表查找) - 轮函数结构(循环模式) - 密钥扩展(XOR链) - 特定常数(AES的轮常数、SHA的K值) 3. **LLM提示工程**: ``` 分析以下汇编代码,识别: 1. 使用的密码算法 2. 实现优化(查表、位切片等) 3. 防护措施(掩码、打乱等) 4. 潜在的侧信道泄露点 ``` 4. **攻击策略生成**: - 根据算法类型选择攻击方法 - 识别最佳测量点 - 估计所需轨迹数量 - 生成攻击脚本框架

练习15.7:防护措施评估(开放题)

提出一种新的侧信道防护方法,结合掩码和隐藏技术,并分析其安全性和性能开销。

提示:考虑高阶攻击和实现复杂度的平衡。

参考答案 1. **混合防护方案**: - 一阶布尔掩码:$x' = x \oplus m$ - 操作打乱:随机化执行顺序 - 虚拟操作插入:添加与密钥无关的运算 2. **实现细节**: ``` masked_sbox(x, m): r1, r2 = random_masks() x1 = x ^ m ^ r1 x2 = dummy_value ^ r2 if random_bit(): y1 = sbox_masked[x1] ^ r1 y2 = sbox_masked[x2] ^ r2 # dummy else: y2 = sbox_masked[x2] ^ r2 # dummy y1 = sbox_masked[x1] ^ r1 return y1 ^ m ``` 3. **安全性分析**: - 抗一阶DPA:任何单点泄露独立于密钥 - 抗二阶DPA:需要组合多点信息 - 抗时序攻击:执行时间恒定 4. **性能开销**: - 空间:2倍(掩码存储) - 时间:2.5-3倍(掩码操作+虚拟操作) - 随机数:每轮2-3个掩码 5. **改进方向**: - 使用高阶掩码提升安全性 - 硬件加速减少开销 - 形式化验证证明安全性

练习15.8:跨设备攻击迁移(研究题)

研究如何将在设备A上训练的DPA模型迁移到设备B,两个设备使用相同的密码算法但不同的硬件实现。

提示:领域适应和不变特征学习。

参考答案 1. **挑战分析**: - 不同的功耗特性(工艺、电压) - 不同的时钟频率 - 不同的噪声水平 - 可能的防护措施差异 2. **迁移学习策略**: - **特征对齐**:使用MMD最小化域差异 $$MMD = ||\frac{1}{n}\sum \phi(x_s) - \frac{1}{m}\sum \phi(x_t)||^2$$ - **对抗训练**:域判别器确保特征不变性 - **少样本微调**:使用少量目标域数据 3. **实现方案**: ``` Base Model (Device A) → Feature Extractor ↓ Domain Adapter ↓ Fine-tuning (Device B) ``` 4. **评估指标**: - 攻击成功率vs样本数曲线 - 迁移效率:所需目标域样本数 - 泛化能力:对未见设备的效果 5. **实验设计**: - 基线:从头训练 - 对比:直接迁移、微调、域适应 - 数据集:不同厂商的智能卡、FPGA实现

常见陷阱与错误

1. 测量设置错误

2. 轨迹对齐问题

3. 噪声处理不当

4. 功耗模型选择

5. 统计显著性忽视

6. 防护措施低估

7. 环境因素忽略

8. 过拟合问题

最佳实践检查清单

实验设计

数据采集

预处理流程

攻击实施

结果分析

防护评估

模型开发(深度学习)

文档记录