高效模板攻击的实现与评估
1. 实现注意事项
在实现模板攻击时,尤其是使用大量样本 $m$ 时,会出现一些问题。
-
协方差矩阵求逆
:当 $m$ 很大时,对协方差矩阵 $S_k$ 求逆会导致数值问题。$S_k$ 奇异($|S_k| = 0$)的原因是 $S_k$ 本质上是矩阵乘积 $\Delta X_k^T \Delta X_k$,$S_k$ 和 $\Delta X_k$ 具有相同的秩。若 $n_p < m$,则 $\Delta X_k$ 必有相关列,即使 $n_p = m$,由于 $\Delta X_k$ 行均值为零的约束,其列也是相关的。所以,$n_p > m$ 是 $S_k$ 非奇异的必要条件。若无法满足 $n_p > m$,可尝试 Ledoit 和 Wolf 的协方差估计方法,更好的选择是使用合并协方差矩阵。
-
浮点运算限制
:对于大的 $m$,统计距离 $(x - \overline{x}_k)^T S_k^{-1} (x - \overline{x}_k)$ 可能导致后续指数运算溢出。例如,在 IEEE 双精度中,$\exp(x)$ 仅在 $|x| < 710$ 时安全,大 $m$ 时很容易超出此范围。此外,大 $m$ 时行列式 $|S_k|$ 也可能溢出。
2. 压缩方法
压缩方法可将泄漏向量的长度从 $m_r$ 减小到 $m$,主要分为两类:
-
样本选择
:
- 首先计算信号强度估计 $s(t)$,有多种方法可产生 $s(t)$,如均值差(DOM)、平方差之和(SOSD)、信噪比(SNR)和 SOST。SNR 和 SOST 在某些条件下等价于方差分析中 F 检验使用的值:
[F(t) = \frac{\sum_{k \in S} n_p (\overline{x}
k(t) - \overline{x}(t))^2 / (|S| - 1)}{\sum
{k \in S} \sum_{i = 1}^{n_p} (x_{ki}(t) - \overline{x}
k(t))^2 / (|S|(n_p - 1))}]
- 然后根据信号强度估计 $s$ 选择 $m$ 个样本。通常的指导原则是每个时钟周期最多选择一个信号强度最高的样本,但这并非总是最优的。
-
主成分分析(PCA)
:
- 首先计算组间样本矩阵 $B$:
[B = n_p \sum
{k \in S} (\overline{x}
r^k - \overline{x}_r)(\overline{x}_r^k - \overline{x}_r)^T]
- 对 $B$ 进行奇异值分解 $B = UDU^T$,只保留前 $m$ 个特征向量 $U_m$。
- 最后将均值向量 $\overline{x}_r^k$ 和协方差矩阵 $S_r^k$ 投影到新坐标系,得到 PCA 模板参数 $\overline{x}_k$ 和 $S_k$:
[\overline{x}_k = U_m^T \overline{x}_r^k]
[S_k = U_m^T S_r^k U_m]
- 选择 PCA 分量有两种方法:肘部规则或 Scree 图,需要手动检查特征值;累积总方差百分比法,选择保留至少 $f$ 比例总方差的 $m$ 个特征向量。
- 为避免数值问题和计算大协方差矩阵,可先计算投影泄漏矩阵 $X_k = X_r^k U_m$,再使用公式计算 PCA 模板参数。
-
Fisher 线性判别分析(LDA)
:
- 找到系数 $a_j$ 最大化比例:
[\frac{\sum
{k \in S} (\overline{y}
{kj} - \overline{y}_j)^2}{Var(y_j)} = \frac{\sum
{k \in S} (a_j^T (\overline{x}
r^k - \overline{x}_r))^2}{Var(a_j^T x)} = \frac{a_j^T B a_j}{a_j^T S
{pooled} a_j}]
- 系数 $a_j$ 是 $S_{pooled}^{-1} B$ 最大特征值对应的特征向量。只使用前 $m$ 个系数,将泄漏矩阵投影得到 $X_k = X_r^k A$,再计算 LDA 模板参数。
- 使用 LDA 时,等协方差条件可能很重要,PCA 方法在某些情况下可能是更好的选择。当系数 $a_j$ 满足 $a_j^T S_{pooled} a_j = 1$ 时,判别式之间的协方差变为单位矩阵,可大大减少计算和存储需求。
以下是压缩方法的列表:
| 名称 | 描述 | $m$ |
| ---- | ---- | ---- |
| DOM 1ppc | DOM,每个时钟最多 1 个样本 | 6 - 10 |
| DOM 3ppc | DOM,每个时钟最多 3 个样本 | 18 - 30 |
| DOM 20ppc | DOM,每个时钟最多 20 个样本 | 75 - 79 |
| DOM allap | DOM,所有高于 $F(t)$ 第 95 百分位的样本 | 125 |
| PCA | 固定选择主成分数量 | 4 |
| LDA | 固定选择系数数量 | 4 |
3. 高效实现模板攻击
-
使用多元正态分布的对数
:计算对数似然判别分数:
[d_{LOG}(k | x_i) = -\frac{1}{2} \log |S_k| - \frac{1}{2}(x_i - \overline{x}_k)^T S_k^{-1} (x_i - \overline{x}_k)] -
使用合并协方差矩阵
:当不同候选值 $k$ 的泄漏具有相同协方差时,可将协方差估计 $S_k$ 合并为合并协方差矩阵 $S_{pooled}$:
[S_{pooled} = \frac{1}{|S|(n_p - 1)} \sum_{k \in S} \sum_{i = 1}^{n_p} (x_{ki} - \overline{x} k)(x {ki} - \overline{x} k)^T]
使用 $S {pooled}$ 可使用广义统计距离(Mahalanobis 距离)比较候选值 $k$:
[d_M^2(x | \overline{x} k, S {pooled}) = (x - \overline{x} k)^T S {pooled}^{-1} (x - \overline{x} k) \geq 0]
并得到判别分数:
[d {MD}(k | x_i) = -\frac{1}{2} d_M^2(x_i | \overline{x} k, S {pooled})] -
线性判别分数
:使用合并协方差矩阵时,可将距离重写为:
[d_M^2(x | \overline{x} k, S {pooled}) = x^T S_{pooled}^{-1} x - 2\overline{x} k^T S {pooled}^{-1} x + \overline{x} k^T S {pooled}^{-1} \overline{x} k]
丢弃第一项,得到线性判别分数:
[d {LINEAR}(k | x_i) = \overline{x} k^T S {pooled}^{-1} x_i - \frac{1}{2} \overline{x} k^T S {pooled}^{-1} \overline{x}_k] -
组合多个攻击轨迹
:有两种方法组合 $n_a$ 个单独的泄漏轨迹 $x_i$ 得到最终判别分数 $d(k | X_{k^\star})$:
- 选项 1:平均所有轨迹得到单个平均轨迹 $\overline{x} {k^\star}$,计算 $d {avg}(k | X_{k^\star}) = d(k | \overline{x}_{k^\star})$。此方法计算速度快,但未使用所有可用攻击轨迹的信息。
-
选项 2:计算联合似然 $l(k | X_{k^\star}) = \prod_{x_i \in X_{k^\star}} l(k | x_i)$,取对数得到:
[d_{joint_{LOG}}(k | X_{k^\star}) = -\frac{n_a}{2} \log |S_k| - \frac{1}{2} \sum_{x_i \in X_{k^\star}} (x_i - \overline{x} k)^T S_k^{-1} (x_i - \overline{x}_k)]
[d {joint_{MD}}(k | X_{k^\star}) = -\frac{1}{2} \sum_{x_i \in X_{k^\star}} (x_i - \overline{x} k)^T S_k^{-1} (x_i - \overline{x}_k)]
[d {joint_{LINEAR}}(k | X_{k^\star}) = \overline{x} k^T S {pooled}^{-1} \sum_{x_i \in X_{k^\star}} x_i - \frac{n_a}{2} \overline{x} k^T S {pooled}^{-1} \overline{x} k]
$d {LINEAR}$ 计算效率高,且两种组合方法结果相同。
4. 实验设置
- 目标设备 :8 位 CPU Atmel XMEGA 256 A3U 微控制器,无侧信道防护措施。
- 实验环境 :通过 10 Ω 电阻监测所有 CPU 接地引脚的总电流,使用 3.3 V 调节器供电,提供 1 MHz 正弦时钟。使用 Tektronix TDS 7054 8 位示波器和 P6243 有源探头,采样率 250 MS/s,带宽 500 MHz。
- 数据采集 :为每个候选值 $k \in {0, \ldots, 255}$ 记录 3072 条轨迹,分为训练集和评估集。每条轨迹包含 $m_r = 2500$ 个样本,目标是确定模板攻击恢复第二条 LOAD 指令处理的字节 $k$ 的成功率。
5. 猜测熵
使用猜测熵作为评估所有方法的唯一指标,其计算步骤如下:
1. 为每个候选值 $k$ 和目标值 $k^\sigma$ 计算分数 $d(k | X_{k^\star})$,得到分数矩阵 $M$。
2. 对 $M$ 的每一行按降序排序,得到深度矩阵 $D$。
3. 计算猜测熵:
[g = \log_2 \frac{1}{|S|} \sum_{k \in S} D(k, k)]
6. 实验结果与实用指南
- 实验结果 :对每种组合的 $n_a$、$k$ 和 $k^\sigma$ 进行 10 次攻击,绘制平均猜测熵,结果高度可重复,所有实验的标准差约为 0.1 位。
-
实用指南
:
- 对于 $n_a > 1$ 的攻击轨迹,优先使用选项 2($d_{joint}$)组合判别分数。当 $n_a = 1$ 或使用 $S_{pooled}$ 时,两种选项等效。
-
尝试使用合并协方差矩阵 $S_{pooled}$ 和 $d_{LINEAR}$,除非个体估计 $S_k$ 之间的差异非常明显。
- 若目标允许获取大量轨迹($n_a > 100$),尝试 PCA、LDA 和大 $m$ 的样本选择方法。
- 若目标只能获取有限数量的攻击轨迹($n_a < 10$),使用 LDA。
- 若无法使用合并协方差矩阵 $S_{pooled}$,则使用个体协方差矩阵 $S_k$ 和 $d_{LOG}$,并使用 PCA 作为压缩方法。
流程图
graph TD;
A[开始] --> B[实现模板攻击]
B --> C{是否有大量样本 m?}
C -- 是 --> D[处理实现注意事项]
C -- 否 --> E[正常进行]
D --> F[选择压缩方法]
F --> G{样本选择或线性组合?}
G -- 样本选择 --> H[计算信号强度估计]
G -- 线性组合 --> I{PCA 或 LDA?}
I -- PCA --> J[计算组间样本矩阵 B]
I -- LDA --> K[找到最大化比例的系数]
H --> L[选择 m 个样本]
J --> M[进行奇异值分解]
K --> N[投影泄漏矩阵]
L --> O[高效实现模板攻击]
M --> O
N --> O
O --> P[实验设置]
P --> Q[计算猜测熵]
Q --> R[得出实验结果]
R --> S[提供实用指南]
S --> T[结束]
E --> P
以上是关于高效模板攻击的详细介绍,通过合理选择压缩方法和实现策略,可有效提高模板攻击的效率和成功率。
高效模板攻击的实现与评估
7. 方法总结与优势分析
在前面的内容中,我们详细介绍了模板攻击的多个方面,包括实现注意事项、压缩方法、高效实现策略、实验设置、猜测熵计算以及实验结果和实用指南。下面对这些方法进行总结,并分析它们的优势。
| 方法类别 | 具体方法 | 优势 |
|---|---|---|
| 压缩方法 | 样本选择 |
- 可根据信号强度估计选择包含更多信息的样本。
- 不同的信号强度估计方法(如 DOM、SOSD、SNR、SOST)可根据实际情况选择。 |
| 主成分分析(PCA) |
- 能保留均值向量的大部分信息。
- 有多种选择 PCA 分量的方法,可灵活调整。 - 提出的替代 PCA 方法可避免数值问题和计算大协方差矩阵。 | |
| Fisher 线性判别分析(LDA) |
- 找到线性组合最大化判别比例。
- 当系数满足特定条件时,可大大减少计算和存储需求。 | |
| 高效实现策略 | 使用多元正态分布的对数 | - 避免部分数值问题,通过对数运算简化计算。 |
| 使用合并协方差矩阵 |
- 更好地估计真实协方差,降低对样本数量的要求。
- 可使用广义统计距离比较候选值。 | |
| 线性判别分数 | - 计算效率高,基于合并协方差矩阵进一步简化计算。 | |
| 组合多个攻击轨迹 |
- 提供两种组合方法,可根据实际情况选择。
- $d_{LINEAR}$ 计算效率高且两种组合方法结果相同。 |
8. 不同方法的适用场景分析
不同的模板攻击方法在不同的场景下具有不同的优势,下面根据实验结果和实用指南,分析它们的适用场景。
| 场景 | 适用方法 | 原因 |
|---|---|---|
| 攻击轨迹数量多($n_a > 100$)且可使用合并协方差矩阵 | PCA、LDA、大 $m$ 的样本选择方法 | 这些方法在大量轨迹和较好的协方差估计下,能根据不同的噪声水平表现出不同的性能,有更多机会找到最优解。 |
| 攻击轨迹数量有限($n_a < 10$)且可使用合并协方差矩阵 | LDA | 随着协方差估计的改善,大 $m$ 的 LDA 方法性能会提高,能获取更多信息。 |
| 无法使用合并协方差矩阵 | 个体协方差矩阵 $S_k$ 和 $d_{LOG}$,PCA 作为压缩方法 | 这种情况下,PCA 能有效压缩数据,$d_{LOG}$ 可处理个体协方差矩阵。 |
9. 实验结果的深入解读
实验结果表明,不同的方法在猜测熵上表现不同,这反映了它们在模板攻击中的有效性。
- 组合判别分数方法 :对于 $n_a > 1$ 的攻击轨迹,选项 2($d_{joint}$)通常优于选项 1($d_{avg}$)。这是因为选项 2 能更好地利用所有攻击轨迹的信息,随着轨迹数量的增加和协方差矩阵估计的改善,其优势更加明显。
- 合并协方差矩阵的使用 :使用合并协方差矩阵 $S_{pooled}$ 和 $d_{LINEAR}$ 能显著提高计算效率,同时在很多情况下不影响攻击效果。这是因为 $S_{pooled}$ 利用了更多的样本信息,能更好地估计真实协方差,而 $d_{LINEAR}$ 的线性特性使其计算更加高效。
- 压缩方法的选择 :不同的压缩方法在不同的场景下表现不同。例如,在攻击轨迹数量有限时,LDA 能通过大 $m$ 获取更多信息,而在其他情况下,PCA 等方法也有其优势。
10. 模板攻击的总体流程回顾
为了更好地理解模板攻击的过程,下面回顾一下总体流程。
graph TD;
A[数据采集] --> B[处理实现注意事项]
B --> C[选择压缩方法]
C --> D[高效实现模板攻击]
D --> E[实验设置]
E --> F[计算猜测熵]
F --> G[评估攻击效果]
G --> H[根据结果调整方法]
H --> I[得出最终结论]
具体步骤如下:
1.
数据采集
:为每个候选值记录一定数量的轨迹,分为训练集和评估集。
2.
处理实现注意事项
:处理协方差矩阵求逆、浮点运算限制等问题。
3.
选择压缩方法
:根据实际情况选择样本选择、PCA 和 LDA 等压缩方法。
4.
高效实现模板攻击
:使用多元正态分布的对数、合并协方差矩阵、线性判别分数和组合多个攻击轨迹等方法。
5.
实验设置
:确定目标设备、实验环境和数据采集参数。
6.
计算猜测熵
:作为评估攻击效果的指标。
7.
评估攻击效果
:根据猜测熵等指标评估攻击的成功率。
8.
根据结果调整方法
:根据实验结果选择更合适的方法。
9.
得出最终结论
:确定最优的模板攻击方法。
11. 总结
通过对模板攻击的研究,我们深入了解了其实现过程和不同方法的优缺点。在实际应用中,我们可以根据目标设备的特点、可获取的轨迹数量和协方差估计情况等因素,选择合适的压缩方法和高效实现策略,以提高模板攻击的效率和成功率。同时,使用猜测熵作为评估指标,能更准确地评估攻击效果,为方法的选择提供依据。
希望这些内容能帮助你更好地理解和应用模板攻击技术,在实际场景中取得更好的效果。
超级会员免费看
1354

被折叠的 条评论
为什么被折叠?



