32、高效模板攻击:方法与评估

高效模板攻击:方法与评估

1. 引言

侧信道攻击是推断防篡改硬件内处理的秘密算法或数据(如密码、加密密钥等)的强大工具。攻击者可通过监测设备的侧信道信息,如电源电流和无意的电磁辐射来实施攻击。模板攻击是评估侧信道信息的强大技术之一,它基于侧信道迹线的多元模型。虽然基本算法相对简单,但在实际高效实现中会遇到一些问题。本文将探讨这些问题,并提出解决方案,同时通过实验评估不同方法的效率,为选择模板攻击算法提供实用指导。

2. 模板攻击

要实施模板攻击,需要物理访问一对相同的设备,分别称为分析设备和被攻击设备。目标是推断被攻击设备在某一时刻处理的秘密值 (k_{\sigma})。对于 8 位微控制器,(S = {0, \ldots, 255}) 可能是特定机器指令操作的可能字节值集合。

在分析阶段,为每个可能的值 (k \in S) 从分析设备记录 (n_p) 个泄漏向量 (x_{r_{ki}} \in \mathbb{R}^{m_r}),并将它们组合成泄漏矩阵 (X_{r_{k}} \in \mathbb{R}^{n_p \times m_r})。由于数据采集设备提供的原始泄漏向量通常包含大量样本,因此在进一步处理之前可能需要进行压缩。压缩后的泄漏向量记为 (x_{ki} \in \mathbb{R}^{m}),并组合成压缩泄漏矩阵 (X_{k} \in \mathbb{R}^{n_p \times m})。

使用 (X_{k}) 可以计算每个可能值 (k) 的模板参数 (\overline{x} {k} \in \mathbb{R}^{m}) 和 (S {k} \in \mathbb{R}^{m \times m}):
(\overline{x} {k} = \frac{1}{n_p} \sum {i = 1}^{n_p} x_{ki})
(S_{k} = \frac{1}{n_p - 1} \sum_{i = 1}^{n_p} (x_{ki} - \overline{x} {k})(x {ki} - \overline{x}_{k})^T)

侧信道泄漏迹线通常可以用多元正态分布很好地建模。在这种情况下,样本均值 (\overline{x} {k}) 和样本协方差 (S {k}) 是充分统计量,完全定义了基础分布。给定 (\overline{x} {k}) 和 (S {k}),泄漏向量 (x) 的概率密度函数为:
(f(x | \overline{x} {k}, S {k}) = \frac{1}{\sqrt{(2\pi)^{m}|S_{k}|}} \exp\left(-\frac{1}{2}(x - \overline{x} {k})^T S {k}^{-1} (x - \overline{x}_{k})\right))

在攻击阶段,从被攻击设备获取 (n_a) 个泄漏向量 (x_{i} \in \mathbb{R}^{m}),形成泄漏矩阵 (X_{k^{\star}} \in \mathbb{R}^{n_a \times m})。对于每个 (k \in S),计算判别分数 (d(k | X_{k^{\star}})),然后按分数降序尝试所有 (k),直到找到正确的 (k_{\sigma})。常用的判别式为:
(d(k | x_{i}) = f(x_{i} | \overline{x} {k}, S {k})P(k))

假设先验概率均匀 (P(k) = |S|^{-1}),应用贝叶斯规则相当于计算似然:
(l(k | x_{i}) = d(k | x_{i}) = l(\overline{x} {k}, S {k} | x_{i}) = f(x_{i} | \overline{x} {k}, S {k}))

3. 高效实现模板攻击

为了高效实现模板攻击,需要解决一些问题,下面介绍几种方法。

3.1 使用多元正态分布的对数

Mangard 等人建议计算 (3) 的对数:
(\log f(x | \overline{x} {k}, S {k}) = -\frac{1}{2} \left[\log [(2\pi)^{m}|S_{k}|] + (x - \overline{x} {k})^T S {k}^{-1} (x - \overline{x}_{k})\right])

但该方法存在问题,它没有避免计算 (|S_{k}|)。因此,建议计算多元正态概率密度函数的对数为:
(\log f(x | \overline{x} {k}, S {k}) = -\frac{m}{2} \log 2\pi - \frac{1}{2} \log |S_{k}| - \frac{1}{2}(x - \overline{x} {k})^T S {k}^{-1} (x - \overline{x}_{k}))

其中,使用对称矩阵 (S_{k}) 的 Cholesky 分解 (S_{k} = C^T C) 计算行列式的对数:
(\log |S_{k}| = 2 \sum_{c_{ii} \in \text{diag}(C)} \log c_{ii})

选择导致 (17, 18) “最小绝对值” 的候选 (k) 是不正确的,因为对数是单调函数,最大值对应正确的 (k)。可以使用 (18, 19),去掉第一项(对所有 (k) 为常数),计算基于对数似然的判别分数:
(d_{\text{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}))

3.2 使用合并协方差矩阵

当不同候选 (k) 的泄漏具有不同均值但相同协方差 (\Sigma = \Sigma_{1} = \Sigma_{2} = \cdots = \Sigma_{k}) 时,可以将协方差估计 (S_{k}) 合并为合并协方差矩阵:
(S_{\text{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_{\text{pooled}}) 比 (S_{k}) 是更好的真实协方差 (\Sigma) 的估计器,因为它使用 (n_p|S|) 条迹线估计协方差,而 (S_{k}) 仅使用 (n_p) 条。这意味着非奇异矩阵的条件放宽为 (n_p|S| > m) 或 (n_p > \frac{m}{|S|}),减少了每个候选 (k) 所需的迹线数量。

使用 (S_{\text{pooled}}),可以丢弃 (18) 中的前两项,使用广义统计距离(Mahalanobis 距离)比较候选 (k):
(d_{M}^{2}(x | \overline{x} {k}, S {\text{pooled}}) = (x - \overline{x} {k})^T S {\text{pooled}}^{-1} (x - \overline{x}_{k}) \geq 0)

从 (18, 22) 可以导出判别分数:
(d_{\text{MD}}(k | x_{i}) = -\frac{1}{2}d_{M}^{2}(x_{i} | \overline{x} {k}, S {\text{pooled}}) = d_{\text{LOG}}(k | x_{i}) + \text{const.})

3.3 线性判别分数

使用合并协方差矩阵 (S_{\text{pooled}}) 时,可以将 (22) 重写为:
(d_{M}^{2}(x | \overline{x} {k}, S {\text{pooled}}) = x^T S_{\text{pooled}}^{-1} x - 2\overline{x} {k}^T S {\text{pooled}}^{-1} x + \overline{x} {k}^T S {\text{pooled}}^{-1} \overline{x}_{k})

第一项对所有组 (k) 是常数,可以丢弃。因此,可以使用以下线性判别分数:
(d_{\text{LINEAR}}(k | x_{i}) = \overline{x} {k}^T S {\text{pooled}}^{-1} x_{i} - \frac{1}{2} \overline{x} {k}^T S {\text{pooled}}^{-1} \overline{x} {k} = d {\text{MD}}(k | x_{i}) + \text{const.})

线性判别 (d_{\text{LINEAR}}) 比二次判别 (d_{\text{MD}}) 计算效率更高。

3.4 组合多个攻击迹线

需要将 (X_{k^{\star}}) 中的 (n_a) 个单独泄漏迹线 (x_{i}) 组合成最终判别分数 (d(k | X_{k^{\star}})),有两种选择:
- 选项 1 :平均 (X_{k^{\star}}) 中的所有迹线以去除尽可能多的噪声,然后使用这个单一平均迹线 (\overline{x} {k^{\star}}) 计算:
(d
{\text{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}))。对两边取对数得到:
(\log l(k | X_{k^{\star}}) = \sum_{x_{i} \in X_{k^{\star}}} \log l(k | x_{i}))
并得到派生分数:
(d_{\text{joint}}^{\text{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
{\text{joint}}^{\text{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
{\text{joint}}^{\text{LINEAR}}(k | X_{k^{\star}}) = \overline{x} {k}^T S {\text{pooled}}^{-1} \left(\sum_{x_{i} \in X_{k^{\star}}} x_{i}\right) - \frac{n_a}{2} \overline{x} {k}^T S {\text{pooled}}^{-1} \overline{x}_{k})

给定 (n_a) 个泄漏迹线 (x_{i} \in X_{k^{\star}}),(d_{\text{LOG}}) 和 (d_{\text{MD}}) 需要 (O(n_a m^2)) 时间,而 (d_{\text{LINEAR}}) 只需要 (O(n_a + m^2)) 时间。

3.5 不等先验概率

在前面的描述中假设候选 (k) 之间的先验概率相等。当不相等时,只需在判别分数 (d_{\text{avg}}^{\text{LOG}}),(d_{\text{avg}}^{\text{MD}}),(d_{\text{avg}}^{\text{LINEAR}}) 中添加项 (\log P(k)),或在判别分数 (d_{\text{joint}}^{\text{LOG}}),(d_{\text{joint}}^{\text{MD}}),(d_{\text{joint}}^{\text{LINEAR}}) 中添加项 (n_a \log P(k))。

4. 压缩方法

为了减少处理的样本数量,使用了多种压缩方法,如下表所示:
| 名称 | 描述 | (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 |

5. 实验设置

实验目标是 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) 的成功率。

6. 猜测熵

使用猜测熵作为比较所有方法的唯一衡量标准。它估计在模板攻击后进行优化搜索以找到具有最高判别分数的正确 (k_{\sigma}) 的(对数)成本,给出目标值 (k_{\sigma}) 剩余的预期不确定位数。猜测熵越低,攻击越成功。

计算猜测熵的步骤如下:
1. 为每个候选值 (k) 和目标值 (k_{\sigma}) 的组合计算分数 (d(k | X_{k^{\star}})),得到分数矩阵 (M \in \mathbb{R}^{|S| \times |S|}),其中 (M(k_{\sigma}, k) = d(k | X_{k^{\star}}))。
2. 对 (M) 的每一行按降序排序,得到深度矩阵 (D \in \mathbb{N}^{|S| \times |S|}),其中 (D(k_{\sigma}, k)) 是 (d(k | X_{k^{\star}})) 在 (M(k_{\sigma}, \cdot)) 排序行中的位置。
3. 使用矩阵 (D) 定义猜测熵:
(g = \log_2 \frac{1}{|S|} \sum_{k \in S} D(k, k))

7. 实验结果和实用指导

每个攻击对 (n_a),(k) 和 (k_{\sigma}) 的每个组合进行 10 次,使用不同的随机选择的 (X_{k^{\star}})。绘制平均猜测熵,结果高度可重复,所有实验的标准差约为 0.1 位。

根据实验结果,提供以下选择算法的实用指导:
1. 当 (n_a > 1) 时,优先使用选项 2((d_{\text{joint}}))组合攻击迹线的判别分数。对于 (n_a = 1) 或使用 (S_{\text{pooled}}) 时,两个选项等效。随着攻击迹线数量 (n_a) 增加和协方差矩阵估计更好,(d_{\text{joint}}) 在所有压缩方法上都优于 (d_{\text{avg}})。
2. 尝试使用合并协方差矩阵 (S_{\text{pooled}}) 和 (d_{\text{LINEAR}})(除非个体估计 (S_{k}) 之间的差异非常明显)。未能通过同方差性统计检验(如 Box 检验)并不意味着使用个体估计 (S_{k}) 会改善模板攻击。使用个体估计 (S_{k}) 会阻止使用更快更稳健的判别式 (d_{\text{LINEAR}})。
- 如果目标允许获取大量迹线((n_a > 100)):尝试 PCA、LDA 和大样本选择的压缩方法。

综上所述,PCA 和 LDA 总体上提供了最佳结果,并且之前每个时钟周期最多选择一个点的准则通常不是最优的。通过这些实验和理论背景,可以为模板攻击算法的选择提供实用指导。

graph TD
    A[开始] --> B[分析阶段]
    B --> C[记录泄漏向量]
    C --> D[压缩泄漏向量]
    D --> E[计算模板参数]
    E --> F[攻击阶段]
    F --> G[获取攻击泄漏向量]
    G --> H[计算判别分数]
    H --> I[按分数排序尝试候选值]
    I --> J[找到正确kσ]
    J --> K[结束]

高效模板攻击:方法与评估

8. 不同压缩方法与实现选项的综合对比

为了更清晰地了解各种压缩方法和实现选项在模板攻击中的表现,下面将从多个维度进行综合对比。

压缩方法 样本数量 (m) 实现选项 计算复杂度 信息提取能力 适用场景
DOM 1ppc 6 - 10 (d_{\text{avg}}) 资源受限,对信息精度要求不高
DOM 1ppc 6 - 10 (d_{\text{joint}}) 相对低 一般 资源有限,需一定信息提取
DOM 3ppc 18 - 30 (d_{\text{avg}}) 适中 一般 资源适中,对信息有一定要求
DOM 3ppc 18 - 30 (d_{\text{joint}}) 适中 较好 资源适中,追求较好信息提取
DOM 20ppc 75 - 79 (d_{\text{avg}}) 较高 较好 资源较充足,需较多信息
DOM 20ppc 75 - 79 (d_{\text{joint}}) 较高 资源较充足,追求高信息提取
DOM allap 125 (d_{\text{avg}}) 资源充足,需大量信息
DOM allap 125 (d_{\text{joint}}) 资源充足,追求最优信息提取
PCA 4 (d_{\text{avg}}) 一般 资源受限,需快速处理
PCA 4 (d_{\text{joint}}) 较好 资源有限,追求一定信息提取
LDA 4 (d_{\text{avg}}) 一般 资源受限,需快速处理
LDA 4 (d_{\text{joint}}) 较好 资源有限,追求一定信息提取

从表格中可以看出,不同的压缩方法和实现选项组合在计算复杂度、信息提取能力和适用场景上有明显差异。例如,DOM allap 结合 (d_{\text{joint}}) 虽然计算复杂度高,但信息提取能力最优,适用于资源充足且对信息精度要求极高的场景;而 PCA 和 LDA 结合 (d_{\text{avg}}) 计算复杂度低,但信息提取能力一般,适合资源受限且对处理速度要求较高的情况。

9. 模板攻击流程优化建议

为了进一步提高模板攻击的效率和成功率,可以按照以下流程进行优化:

graph LR
    A[确定目标设备和攻击场景] --> B[选择合适的压缩方法]
    B --> C{是否可获取大量迹线}
    C -- 是 --> D[尝试PCA、LDA和大样本选择]
    C -- 否 --> E[根据资源和信息需求选择其他方法]
    D --> F[使用合并协方差矩阵 \(S_{\text{pooled}}\) 和 \(d_{\text{LINEAR}}\)]
    E --> G{ \(n_a\) 是否大于1}
    G -- 是 --> H[使用 \(d_{\text{joint}}\) 组合判别分数]
    G -- 否 --> I[使用 \(d_{\text{avg}}\) 组合判别分数]
    F --> J[进行攻击并计算猜测熵]
    H --> J
    I --> J
    J --> K{猜测熵是否满足要求}
    K -- 是 --> L[结束攻击]
    K -- 否 --> B[重新选择压缩方法或调整参数]

具体操作步骤如下:
1. 确定目标设备和攻击场景 :明确攻击的目标设备类型、是否有侧信道防护措施以及可获取的资源等信息。
2. 选择合适的压缩方法 :根据目标设备的特性和可获取的样本数量,从 DOM 系列、PCA 和 LDA 等方法中选择合适的压缩方法。
3. 判断是否可获取大量迹线 :如果可以获取大量迹线((n_a > 100)),优先尝试 PCA、LDA 和大样本选择的压缩方法,并使用合并协方差矩阵 (S_{\text{pooled}}) 和 (d_{\text{LINEAR}}) 进行计算。
4. 判断 (n_a) 的大小 :如果 (n_a > 1),使用 (d_{\text{joint}}) 组合判别分数;如果 (n_a = 1),使用 (d_{\text{avg}}) 组合判别分数。
5. 进行攻击并计算猜测熵 :按照选定的方法进行攻击,并计算猜测熵来评估攻击效果。
6. 判断猜测熵是否满足要求 :如果猜测熵满足要求,结束攻击;如果不满足要求,重新选择压缩方法或调整参数,重复上述步骤。

10. 总结与展望

通过对多种模板攻击方法的研究和实验评估,我们发现 PCA 和 LDA 在大多数情况下能够提供较好的攻击效果,同时合并协方差矩阵和线性判别分数的使用可以显著提高计算效率。在实际应用中,应根据具体的攻击场景和资源限制,选择合适的压缩方法和实现选项。

未来,随着硬件技术的不断发展和侧信道防护措施的不断加强,模板攻击面临着新的挑战。一方面,需要进一步研究更高效的压缩方法和判别分数计算方式,以应对更高维度和更复杂的数据;另一方面,需要探索新的攻击策略,结合机器学习和深度学习等技术,提高攻击的成功率和效率。同时,对于侧信道防护技术的研究也至关重要,只有不断加强防护,才能保障硬件设备的安全性。

总之,模板攻击是一个充满挑战和机遇的研究领域,通过不断的探索和创新,我们有望在侧信道安全领域取得更大的突破。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值