31、高效模板攻击技术解析

高效模板攻击技术解析

1. 引言

侧信道攻击是推断抗篡改硬件内部处理的秘密算法或数据(如密码、加密密钥等)的强大工具。如果攻击者能够监控设备泄漏信息的通道,例如电源电流和意外的电磁辐射,就可以实施此类攻击。模板攻击是评估侧信道信息的最强大技术之一,它依赖于侧信道迹线的多元模型。虽然基本算法相对简单,但要实现实用且高效的攻击,还需要执行许多额外步骤。

2. 目标设备介绍

这里介绍两个目标设备,均为 2013 年从网络商店购买的智能卡,来自该领域的领先制造商。
- 目标 B :这是一个受保护的目标,具备针对侧信道分析(SCA)和故障注入(FI)的对策,如故障注入检测逻辑以及光、温度和时钟传感器。其 IC 设计于 2004 年末,具有专门的加密运算逻辑。它实现了 JavaCard OS 2.2.1 和 GlobalPlatform 2.1.1 标准,运行在内部不稳定时钟上,频率未知,外部时钟频率为 4 MHz。该卡仅依靠软件运行,IC 中没有使用加密硬件。加载到卡中的 Java 小程序是一个双嵌套循环,包含两个计数器和一个校验和,代码如下:

for(outerLoopCounter=0;outerLoopCounter<2;outerLoopCounter++){
    checkpoint=1;
    for(innerLoopCounter=0;innerLoopCounter<1000;innerLoopCounter++){
        checkpoint=2;
        dummyOperation1();
        iterations=iterations+1;
    }
    checkpoint=3;
    dummyOperation2();
}
sendBytesToTerminal(outerLoopCounter,innerLoopCounter,iterations, valueFlag);
  • 目标 C :同样是受保护的目标,在硬件和对策方面与目标 B 具有相同的功能集。它实现了 JavaCard OS 2.2.1 和 GlobalPlatform 2.1 标准,并于 2008 年通过了通用标准 EAL4 + 认证。加载到卡中的 Java 小程序与目标 B 描述的相同。
3. 模板攻击原理

要实施模板攻击,需要物理访问一对相同的设备,分别称为分析设备和被攻击设备。攻击者希望推断被攻击设备在某个时刻处理的秘密值 (k_{\sigma} \in S)。对于 8 位微控制器,(S = {0, \ldots, 255}) 可能是特定机器指令操作的可能字节值集合。
- 分析阶段
- 确定秘密值 (k_{\sigma}) 被操作的大致时间,并记录这些时刻周围的信号迹线(如电源电流或电磁波形),这些迹线称为泄漏向量。
- 对于每个可能的值 (k \in S),从分析设备记录 (n_p) 个泄漏向量 (x_{r_{ki}} \in R^{m_r}),并将它们作为行向量组合成泄漏矩阵 (X_{r_k} \in R^{n_p \times m_r})。
- 由于数据采集设备提供的原始泄漏向量 (x_{r_{ki}}) 通常包含大量样本,可能需要在进一步处理之前对其进行压缩,压缩后的泄漏向量记为 (x_{ki} \in R^m),并组合成压缩泄漏矩阵 (X_k \in R^{n_p \times m})。
- 使用 (X_k) 为每个可能的值 (k \in S) 计算模板参数 (\overline{x} k \in R^m) 和 (S_k \in 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) 的概率密度函数(pdf)为:
(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 R^m),使用与分析阶段相同的记录技术和压缩方法,得到泄漏矩阵 (X
{k^{\star}} \in R^{n_a \times m})。
- 对于每个 (k \in S),计算判别分数 (d(k | X_{k^{\star}}))。
- 按照分数递减的顺序在被攻击设备上尝试所有 (k \in S),直到找到正确的 (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))

4. 模板攻击实施中的问题

在实施模板攻击时,特别是使用大量样本 (m) 时,会出现一些问题。
- 协方差矩阵求逆问题
- 协方差矩阵 (S_k) 求逆可能会导致数值问题,因为 (S_k) 本质上是矩阵乘积 (\tilde{X}_k^T \tilde{X}_k),(S_k) 和 (\tilde{X}_k) 具有相同的秩。如果 (n_p < m),则 (S_k) 必定是奇异的;当 (n_p = m) 时,由于 (\tilde{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|) 也可能溢出。例如,考虑到 (|S_k|) 是 (S_k) 特征值的乘积,在某些实验中,100 个最大特征值至少为 (10^6),仅仅相乘 52 个这样的值就会使 IEEE 双精度格式溢出。

5. 压缩方法

为了减少泄漏向量的长度(维度),可以使用压缩方法。压缩方法主要分为两类:
- 样本选择法
- 首先计算信号强度估计 (s(t)),有多种计算方法,如均值差(DOM)、平方差之和(SOSD)、信噪比(SNR)和 SOST。其中,SNR 和 SOST 在每个样本点的方差与候选值 (k) 无关的情况下是相同的,此时它们可以简化为方差分析中 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),其中 (U) 的每一列是 (B) 的特征向量 (u_j),(D) 的对角线上是相应的特征值 (\alpha_j)。
- 选择前 (m) 个特征向量 (U_m) 来保留均值向量 (\overline{x}
{r_k}) 的大部分信息,并将均值向量 (\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 组件选择 :有两种方法,一种是选择特征值比其他特征值大几个数量级的前 (m) 个特征向量,这需要手动检查特征值;另一种是累积总方差百分比法,选择保留至少 (f) 比例总方差的 (m) 个特征向量。
- PCA 模板的替代计算方法 :为避免数值误差和计算大型协方差矩阵,可以先计算投影泄漏矩阵 (X_k = X_{r_k} U_m),然后使用前面的公式计算 PCA 模板参数。
- Fisher 线性判别分析(LDA)法
- Fisher 的想法是找到系数 (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})
- 其中 (y_j = a_j^T x) 是样本判别式,(B) 是处理矩阵,(S_{pooled} = \frac{1}{|S|} \sum_{k \in S} S_{r_k}) 是所有组的公共协方差。

以下是模板攻击的流程 mermaid 图:

graph TD;
    A[开始] --> B[确定目标设备和秘密值范围];
    B --> C[分析阶段];
    C --> C1[记录泄漏向量];
    C --> C2[压缩泄漏向量];
    C --> C3[计算模板参数];
    C3 --> D[攻击阶段];
    D --> D1[获取被攻击设备泄漏向量];
    D1 --> D2[计算判别分数];
    D2 --> D3[尝试所有可能值找到秘密值];
    D3 --> E[结束];

通过上述方法,可以在一定程度上解决模板攻击实施中的问题,提高攻击的效率和准确性。不同的压缩方法和参数选择会对攻击效果产生影响,需要根据具体情况进行实验和选择。

在下半部分,我们将进一步探讨如何通过合并协方差矩阵等方法优化模板攻击,以及对各种方法进行实验评估,为选择合适的攻击算法提供实用指导。

高效模板攻击技术解析

6. 合并协方差矩阵优化模板攻击

在模板攻击中,当面临协方差矩阵求逆困难等问题时,合并协方差矩阵是一种有效的解决方案。
- 合并协方差矩阵的定义 :合并协方差矩阵 (S_{pooled} = \frac{1}{|S|} \sum_{k \in S} S_{r_k}),它是所有组的公共协方差。使用合并协方差矩阵的好处在于,它可以在一定程度上缓解协方差矩阵求逆时出现的数值问题,特别是当 (n_p) 不够大时,能提供一个更稳定的协方差估计。
- 使用合并协方差矩阵的判别分数计算 :在攻击阶段,使用合并协方差矩阵计算判别分数时,判别式变为 (d(k | x_i) = f(x_i | \overline{x} k, S {pooled})P(k))。这样可以避免为每个 (k) 单独计算协方差矩阵的逆,减少计算量和数值误差。

7. 实验评估

为了评估不同压缩方法和参数选择对模板攻击的影响,进行了一系列实验。实验基于测量未受保护的 8 位微控制器执行字节加载指令时的电源电流。
- 评估指标 :使用猜测熵来评估不同方法的有效性。猜测熵越低,表示攻击越容易推断出正确的秘密值。
- 不同压缩方法的实验结果
- 样本选择法 :对比了均值差(DOM)、平方差之和(SOSD)、信噪比(SNR)和 SOST 等不同信号强度估计方法。实验发现,在某些情况下,传统的每个时钟周期选择一个样本的准则并非最优。不同的信号强度估计方法在不同的实验条件下表现不同,需要根据具体情况选择。
- 主成分分析(PCA)法
- 组件选择影响 :对于 PCA 组件的选择,使用累积总方差百分比法和手动选择特征值较大的组件两种方法进行了实验。当 (n_p < 1000) 时,累积总方差百分比法选择 (f = 0.95) 保留了 (m = 4) 个最大组件,与手动选择的结果一致;但当 (n_p > 1000) 时,为达到 (f \approx 0.95) 所需的组件数量减少到 (m < 4),导致模板攻击效果变差。
- 计算方法对比 :对比了传统的先计算协方差矩阵再投影和先计算投影泄漏矩阵再计算模板参数的方法。实验表明,先计算投影泄漏矩阵的方法可以避免数值误差和计算大型协方差矩阵,提高了计算效率和攻击准确性。
- Fisher 线性判别分析(LDA)法 :LDA 通过最大化样本判别式的比率来选择特征,实验结果显示,LDA 在某些情况下能够提供比其他方法更好的攻击效果。与样本选择法中的 F 检验、SNR 和 SOST 有相似之处,但在特征选择上更具针对性。
- 综合实验结果 :综合来看,PCA 和 LDA 提供了总体上最好的结果。实验还表明,之前每个时钟周期选择一个样本的准则并非普遍最优,需要根据具体的实验数据和目标设备进行调整。

8. 实用指导

基于上述实验和理论分析,为模板攻击算法的选择提供以下实用指导:
|方法|适用场景|优点|缺点|
| ---- | ---- | ---- | ---- |
|样本选择法|数据维度不高,对计算资源要求较低|计算简单,易于理解|可能无法选择到最具代表性的样本,准则不一定最优|
|主成分分析(PCA)法|数据维度高,需要保留大部分信息|能够有效降低数据维度,保留主要信息|组件选择需要根据具体情况调整,可能需要手动干预|
|Fisher 线性判别分析(LDA)法|不同组之间有明显区分度的情况|能够最大化组间差异,提高攻击效果|需要计算合并协方差矩阵,对数据量有一定要求|

在实际应用中,建议按照以下步骤选择模板攻击算法:
1. 分析目标设备的特点和数据情况,包括数据维度、样本数量、不同组之间的区分度等。
2. 尝试不同的压缩方法和参数选择,使用猜测熵等评估指标进行评估。
3. 根据实验结果选择最适合的攻击算法和参数。

9. 总结

模板攻击作为一种强大的侧信道攻击技术,在推断抗篡改硬件内部的秘密数据方面具有重要作用。然而,在实施过程中会遇到协方差矩阵求逆、浮点运算限制等问题。通过使用压缩方法,如样本选择法、主成分分析(PCA)法和 Fisher 线性判别分析(LDA)法,可以有效降低数据维度,减少计算量和数值误差。合并协方差矩阵的使用可以进一步优化攻击过程,提高攻击的稳定性和效率。

实验评估表明,不同的压缩方法和参数选择对攻击效果有显著影响。PCA 和 LDA 总体上表现较好,但需要根据具体情况进行调整。提供的实用指导可以帮助攻击者在实际应用中选择合适的攻击算法,提高攻击的成功率。未来,随着硬件技术的发展和抗攻击措施的加强,模板攻击技术也需要不断改进和创新,以应对新的挑战。

以下是不同压缩方法选择的决策流程图:

graph TD;
    A[开始] --> B{数据维度高吗?};
    B -- 是 --> C{不同组区分度明显吗?};
    C -- 是 --> D[选择 LDA 法];
    C -- 否 --> E[选择 PCA 法];
    B -- 否 --> F{计算资源有限吗?};
    F -- 是 --> G[选择样本选择法];
    F -- 否 --> H{尝试不同方法并评估};
    D --> I[结束];
    E --> I;
    G --> I;
    H --> I;

通过合理选择压缩方法和参数,结合合并协方差矩阵等优化手段,可以在模板攻击中取得更好的效果,为安全研究和漏洞检测提供有力支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值