智能卡故障注入参数搜索策略研究
1. 引言
在过去三十年里,智能卡已成为生活中不可或缺的一部分。然而,这些小设备面临着诸多安全威胁,针对各种攻击的有效对策是当前广泛研究的课题。
设备篡改技术可分为被动和主动两类。被动技术仅监测设备的一些侧信道信息,不干扰其正常处理,如功耗分析和电磁辐射分析;主动技术则不仅监测设备,还通过外部干扰影响其正常行为,例如故障注入(FI)。故障注入中的干扰,即所谓的毛刺,可以是光学(激光脉冲)、电气(电压、时钟)、温度变化、电磁辐射等,可能导致设备故障,在某些情况下可用于恢复密钥。
故障注入攻击成功的关键在于外部干扰的精确调整。例如,对时钟信号毛刺的完整表征需要安全分析师定义超过10个参数。此外,硬件设计师会在设备中引入对抗措施来防止故障注入攻击,这使得找到正确的参数设置成为一个高度不确定的过程。安全分析师通常会为每个参数设置一个值范围,让故障注入设备在给定范围内尝试数千种不同的参数配置,然后进行离线分析。
由于搜索空间巨大,进行详尽搜索是不可行的。因此,需要一种有效的参数搜索方法来进行更有效的安全评估。
2. 问题陈述
目标是找到一种用于VCC FI参数的搜索策略,以实现成功的故障注入。搜索的输入包括搜索策略所需的参数以及每个参数的估计初始范围。搜索空间是定义VCC FI攻击所需的所有参数的所有可能值组合的集合。
搜索的目标是在黑盒场景下,以最少的测量次数获取设备行为的最大信息,并找到能定义成功VCC FI攻击的参数(如果设备容易受到毛刺引起的故障攻击)。搜索的输出包括设备行为报告,可能还包括导致成功VCC FI攻击的参数组合,以及虽未导致成功攻击但触发设备意外行为的参数组合。
3. 模型
将搜索分为两个阶段:第一阶段寻找合适的毛刺形状(包含定义信号的所有参数),第二阶段寻找注入故障的时机。这种参数拆分的动机是降低问题的维度和复杂性。实验证明,这种参数拆分是可行且有用的,所有研究涉及的TOE(以及研究范围外的TOE)在毛刺形状相关参数方面表现出相似的行为。
第二阶段的搜索是在第一阶段输出的毛刺形状(毛刺长度、毛刺电压)基础上进行时间扫描。初始搜索空间中定义的时间范围被离散化为n个时间点,在每个时间点测试第一阶段输出的部分毛刺形状。所有测量的结果将作为参数搜索的最终输出。
第一阶段关注的两个参数是毛刺电压和毛刺长度。根据设备的响应,毛刺被分类为不同的判决类别,其假设如下:
1. 毛刺电压存在上限VLOW,如果毛刺电压设置为该值或更高,设备将忽略毛刺,得到NORMAL判决。
2. 毛刺电压存在下限VHIGH,如果毛刺电压设置为该值或更低,设备将把毛刺解释为电源切断或篡改尝试,得到RESET或MUTE判决。
3. 毛刺长度存在下限LLOW,如果毛刺长度设置为该值或更低,设备将忽略毛刺,得到NORMAL判决。
4. 毛刺长度存在上限LHIGH,如果毛刺长度设置为该值或更高,设备将把毛刺解释为电源故障或篡改尝试,得到RESET或MUTE判决。
5. 如果毛刺电压和毛刺长度分别在(VLOW, VHIGH)和(LLOW, LHIGH)范围内,设备的响应还取决于毛刺的其他参数(包括毛刺形状和毛刺时间)。
可能的判决类别解释如下:
- NORMAL:设备响应符合预期。
- RESET和MUTE:设备在测量时相应地响应。
- INTERESTING:如果设备容易受到FI攻击,该判决指向NORMAL和RESET/MUTE区域之间的决策边界加上一定阈值距离所定义的区域。如果这两个区域重叠,则INTERESTING类位于这两个平面区域的交集。
- CHANGING:与INTERESTING判决在同一区域,当两次具有相同毛刺形状参数配置的测量得到不同判决时分配该类别。
- SUCCESSFUL:位于产生INTERESTING判决的(毛刺电压,毛刺长度)区域内,可能有多个参数组合产生该判决。
4. 实验与讨论
4.1 搜索空间设置和实验定义
初始搜索空间参数如下表所示:
| 参数名称 | 参数值 |
| — | — |
| 毛刺电压 | [-5, -0.05] V |
| 毛刺长度 | [2, 150] ns |
| VCC电压VCC | 5 V |
| CLK高电压 | 5 V |
| CLK低电压 | 0 V |
| CLK信号频率 | 1 MHz |
| 毛刺数量 | 随机值从[1, 10] |
实验针对每个测试设备执行每个策略的第一阶段多次运行。除了表中提到的常见参数,还使用以下算法:
- 蒙特卡罗搜索(基线):2048次测量
- FastBoxing:2次迭代(maxIter = 2),每次迭代4·4·64 = 1024次测量(n = 4,numMeas = 64),最大迭代次数10000(maxIter = 10000)
- 自适应缩放与边界搜索:最大迭代次数10000(maxIter = 10000),4 · 4网格(n = 4),每次迭代1和3次测量(numMeas = 1,numMeas = 3)
- 遗传算法:最大代数20,种群大小30,最大连续无改进代数50
4.2 实验结果
测试在三个目标上进行:
- 目标A:未受保护的智能卡,适用于训练阶段。
- 目标B和C:受多种FI技术保护,特别是VCC FI。由于VCC FI攻击可能导致设备永久故障,每个卡使用了多个样本。所有搜索策略下,同一设备的所有样本在毛刺形状相关参数方面表现出相同的物理行为,但时间相关参数会有所不同。
使用的缩写如下:
- TestReps:测试重复次数
- MeasInTest:测试中的平均总测量次数,如果是MeasInTestT则包括第一和第二阶段
- INT(M):具有INTERESTING判决类别的测量次数(以中位数表示)
- INT(%):每百次测量中具有INTERESTING判决类别的测量次数
- SUC(M):具有SUCCESSFUL判决类别的测量次数(以中位数表示)
- SUC(%):每百次测量中具有SUCCESSFUL判决类别的测量次数
以下是不同搜索策略的结果:
-
蒙特卡罗策略
:该策略在给定的初始搜索空间内随机选择参数组合进行测量,每个参数的随机分布被认为是均匀的,作为基线搜索策略。短测试运行(3072次测量)没有成功的测量,只有76800次测量的测试运行产生了11次成功测量。由于参数选择的随机性,毛刺形状的参数组合有大量重复。在产生INTERESTING判决类别的平面区域内重复是有意义的,但对于设备响应可预测的测量则是不希望的。
-
FastBoxing策略
:这是一种简单的迭代算法,用于自动设置搜索第一阶段的参数。算法假设毛刺形状的边界(VHIGH、VLOW、LLOW和LHIGH),通过测量步骤和反射步骤来尝试找到这些边界。在每次迭代中,测量步骤对搜索空间进行采样并在采样点进行测量,反射步骤根据测量结果估计边界。
以下是FastBoxing策略的测试结果:
| 设备 | 测试重复次数 | 总测量次数 | INT(M) | SUC(M) | INT(%) | SUC(%) |
| — | — | — | — | — | — | — |
| 目标A | 5 | 3048 (2048 + 1000) | 26 | 9 | 0.800 | 0.361 |
| 目标B | 5 | 3048 (2048 + 1000) | 0 | 0 | 0.00 | 0.00 |
| 目标C | 1 | 3048 (2048 + 1000) | 0 | 0 | 0.00 | 0.00 |
对于易受攻击的目标A,对INTERESTING判决类别的不准确估计导致了较差的(毛刺长度,毛刺电压)参数组合选择,尤其是当这些参数组合接近边界值时。因此,成功测量的数量因参数组合的随机选择而有很大差异。不过,聚焦于产生INTERESTING判决类别的搜索空间区域时,搜索性能显著提高,所有测试运行都产生了INTERESTING和SUCCESSFUL测量。
- 自适应缩放与边界策略 :该策略迭代地界定产生INTERESTING或CHANGING判决类别的区域,并在该区域内“缩放”,通过减小毛刺形状搜索空间中新测量之间的距离来实现。区域界定是自适应的,类似于二维二分搜索。它使用与FastBoxing算法相同的两步迭代过程,但反射步骤的处理不同。
反射步骤的工作方式如下:将相邻两点之间的距离设置为pointDist变量,将测量结果放置在毛刺形状的二维平面上(仅用于排序),水平轴为毛刺电压参数,垂直轴为毛刺长度参数。对于每次测试的每个可用测量,检查其所有邻居的判决类别。如果二维平面上的所有邻居测量属于同一判决类别,则认为该点与其邻居之间不存在判决类别之间的决策边界;如果邻居测量属于不同的判决类别,则估计边界位于它们之间,并在下次迭代中在它们之间距离的一半处添加一个新的测量。当所有点都被分析后,生成一个仅包含估计产生INTERESTING判决类别的区域的测量列表的新测试。算法在以下情况下停止:初始测量步骤中的所有测量属于同一类别;反射步骤中未生成新的测试测量;相邻点之间的距离达到硬件设备的最大分辨率。
以下是自适应缩放与边界策略的测试结果:
| 设备 | 测试重复次数 | 总测量次数 | INT(M) | SUC(M) | INT(%) | SUC(%) |
| — | — | — | — | — | — | — |
| 目标A | 5 | 1198 (198 + 1000) | 47 | 13 | 3.895 | 1.064 |
| 目标B | 5 | 1128 (128 + 1000) | 0 | 0 | 0.00 | 0.00 |
该策略的结果优于之前的搜索策略。特别是,完成参数搜索第一阶段所需的测量次数非常少,搜索速度显著提高。对于整个实验中使用的初始搜索空间,最佳性能计算如下:
N = n · ←max(log2(rangeV/resolutionV), log2(rangeL/resolutionL))⊕ = (4 · 4) · ←max(log2(5/0.05), log2(150/2))⊕ = 112次测量
在目标A的情况下,由于设备在产生INTERESTING判决类别的搜索空间区域的行为,搜索策略需要更多的测量。此外,INTERESTING和SUCCESSFUL测量的数量几乎是FastBoxing算法的四倍。
该策略还允许实验观察到,同一设备的不同样本的毛刺形状参数(毛刺长度、毛刺电压)是相同的,而产生SUCCESSFUL判决的时间相关参数在不同样本之间会发生变化。此外,还对目标C进行了一次成功的VCC FI攻击,该目标之前被认为不太可能受到VCC FI攻击。
graph TD
A[开始] --> B[初始化搜索空间]
B --> C[进行测量]
C --> D{所有邻居判决相同?}
D -- 是 --> E[无边界,继续下一个测量]
D -- 否 --> F[估计边界,添加新测量]
F --> C
E --> G{是否满足停止条件?}
G -- 否 --> C
G -- 是 --> H[输出结果]
H --> I[结束]
- 遗传算法策略 :由于找到正确的参数设置是一个非确定性过程,可以使用启发式算法,如遗传算法。遗传算法是进化算法的一个子类,其搜索空间S的元素是基本类型的数组。
为了将遗传算法应用于该问题,需要定义一个适应度函数,将设备模型中不同的判决类别映射到适应度值。当前使用的映射如下:
- NORMAL判决类别值为1
- RESET或MUTE判决类别值为2
- INTERESTING判决类别值为8
- CHANGING判决类别值为8.5
- SUCCESSFUL判决类别值为10
遗传算法的目标是找到一个(毛刺长度,毛刺电压)元组,使适应度值F最大。为此,对通用遗传算法进行了修改,使用自定义的选择和交叉算子。算法生成一个包含n个随机(毛刺长度,毛刺电压)参数组合的初始种群,为每一代的每个个体分配相应的适应度值。通过进化步骤(迭代步骤)将每个种群进化为新一代的种群。
进化步骤包括以下任务:
- 交叉:从不同判决类别的两个个体中产生一个新个体,其(毛刺长度,毛刺电压)参数配置介于两个父个体的值之间。
- 变异:一些个体通过向其参数值添加随机值进行进化。
- 保留:算法在下一代中保留一定数量具有最高适应度值的个体。
遗传算法进行进化步骤,直到达到最大进化步骤数或指定的连续无改进代数。引入了“足够好”的适应度值的概念,算法有一个内部适应度阈值,所有适应度值等于或高于该阈值的生成个体将作为参数搜索第一阶段的输出。使用当前的适应度函数定义,阈值为8时将输出所有具有INTERESTING、CHANGING或SUCCESSFUL判决类别的测量。对于进化算法测试套件,使用了克罗地亚萨格勒布大学开发的进化计算框架(ECF)。
以下是不同搜索策略在目标A和目标C上的性能比较:
| 策略 | 第一阶段测量次数 | SUC(%) | 总I | 总S | 总M |
| — | — | — | — | — | — |
| 蒙特卡罗 | N/A | 0.0000 | 19 | 0 | 3072 |
| FastBoxing | 2048 | 0.29526 | 26 | 9 | 3048 |
| 自适应缩放与边界 | 192 | 1.17450 | 56 | 14 | 1192 |
| 遗传算法 | 1560 | 0.3125 | 21 | 8 | 2560 |
| 策略 | 第一阶段测量次数 | SUC(%) | 总I | 总S | 总M |
|---|---|---|---|---|---|
| 蒙特卡罗 | N/A | 0 | 0 | 0 | 3072 |
| FastBoxing | 2048 | 0 | 0 | 0 | 3048 |
| 自适应缩放与边界 | 128 | 0 | 0 | 0 | 1128 |
| 遗传算法 | 6868 | 0 | 0 | 0 | 7868 |
从结果来看,自适应缩放与边界搜索策略总体上是最好的。它以最少的测量次数完成搜索的第一阶段,具有最高的成功测量比例,并且产生最多的INTERESTING和SUCCESSFUL测量。遗传算法表现出一定的潜力,能够产生相当数量的INTERESTING和SUCCESSFUL测量,但在第一阶段的测量次数方面表现不佳,可能需要进行参数调整以提高性能。蒙特卡罗搜索策略被认为是最不高效的,但由于其随机性,如果对测量次数没有限制,它仍然是一个可行的选择。
综上所述,通过对多种搜索策略的实验和比较,找到了一些有效的方法来应对智能卡故障注入参数搜索的难题。自适应缩放与边界搜索策略在性能上表现出色,而遗传算法也展现出了进一步优化的潜力。未来可以对遗传算法进行参数调整和功能扩展,以提高其性能。
5. 策略比较与分析
为了更直观地比较不同搜索策略的性能,我们对目标A(易受VCC FI攻击)和目标C(推测不易受VCC FI攻击)的测试结果进行详细分析。以下是使用的一些关键指标及其含义:
- Meas 1stStage:参数搜索第一阶段的总测量次数。
- SUC:成功测量次数与总测量次数(第一阶段 + 第二阶段)的比率,归一化为1/100。
- Total I:具有INTERESTING判决类别的总测量次数。
- Total S:具有SUCCESSFUL判决类别的总测量次数。
- Total M:总测量次数(第一阶段 + 第二阶段)。
5.1 目标A的策略比较
| 策略 | Meas 1stStage | SUC(%) | Total I | Total S | Total M |
|---|---|---|---|---|---|
| 蒙特卡罗 | N/A | 0.0000 | 19 | 0 | 3072 |
| FastBoxing | 2048 | 0.29526 | 26 | 9 | 3048 |
| 自适应缩放与边界 | 192 | 1.17450 | 56 | 14 | 1192 |
| 遗传算法 | 1560 | 0.3125 | 21 | 8 | 2560 |
从目标A的结果可以看出,自适应缩放与边界搜索策略表现最为出色。它在第一阶段的测量次数最少,仅为192次,而其他策略如FastBoxing需要2048次,遗传算法需要1560次。同时,其成功测量比率(SUC(%))达到了1.17450,远高于FastBoxing的0.29526和遗传算法的0.3125。在产生INTERESTING和SUCCESSFUL测量方面,自适应缩放与边界策略也领先于其他策略,Total I达到56次,Total S达到14次。
蒙特卡罗策略在目标A上的表现最差,没有成功测量,且测量次数较多。这是因为其随机选择参数组合的方式缺乏针对性,导致效率低下。
5.2 目标C的策略比较
| 策略 | Meas 1stStage | SUC(%) | Total I | Total S | Total M |
|---|---|---|---|---|---|
| 蒙特卡罗 | N/A | 0 | 0 | 0 | 3072 |
| FastBoxing | 2048 | 0 | 0 | 0 | 3048 |
| 自适应缩放与边界 | 128 | 0 | 0 | 0 | 1128 |
| 遗传算法 | 6868 | 0 | 0 | 0 | 7868 |
对于目标C,所有策略都没有成功测量。但自适应缩放与边界搜索策略在第一阶段的测量次数仍然最少,仅为128次。遗传算法的测量次数最多,达到6868次,这表明其在该目标上的效率较低。
总体而言,自适应缩放与边界搜索策略在不同目标上都展现出了优势,能够以较少的测量次数获得较好的结果。遗传算法虽然有一定潜力,但需要进一步优化以提高性能。
graph LR
A[蒙特卡罗策略] --> B(低效率)
C[FastBoxing策略] --> D(有一定效果但需较多测量)
E[自适应缩放与边界策略] --> F(高效且结果好)
G[遗传算法策略] --> H(有潜力但需优化)
6. 结论与展望
本次研究聚焦于寻找通过毛刺实现成功故障注入的合适参数这一具有挑战性的问题。通过对多种搜索策略的实验和分析,我们发现了一些有效的方法,这些方法在应对具有毛刺对抗措施的专有智能卡时表现出了良好的效果。
自适应缩放与边界搜索策略被证明是最为通用且有效的方法,它在不同设备上都取得了较好的结果。该策略能够充分利用已有的信息,快速将参数搜索导向最有希望的配置,以最少的测量次数完成搜索的第一阶段,并获得最高的成功测量比率。
遗传算法也展现出了一定的潜力,能够产生相当数量的INTERESTING和SUCCESSFUL测量。然而,其在第一阶段的测量次数较多,性能有待提高。未来的工作可以集中在对遗传算法进行参数调整和功能扩展,例如优化适应度函数、调整种群大小和进化步骤等,以进一步提高其效率和性能。
此外,还可以探索将不同搜索策略进行组合的可能性,以充分发挥它们的优势。例如,可以先使用自适应缩放与边界搜索策略快速缩小搜索范围,然后再使用遗传算法进行更精细的搜索。
同时,随着智能卡技术的不断发展,新的对抗措施可能会不断出现。未来的研究需要持续关注这些变化,不断改进和优化搜索策略,以确保能够有效地应对各种安全威胁。
总之,本次研究为智能卡故障注入参数搜索提供了有价值的参考,未来的工作将进一步推动这一领域的发展,提高智能卡的安全性。
7. 目标设备详细信息
为了让读者更好地了解实验中使用的目标设备,以下是对目标A的详细描述:
-
目标A
:它是一款基于ATMega163 + 24C256 IC的智能卡,采用CMOS技术,硬件最后修订于2003年。该目标设备没有任何侧信道对抗措施或故障注入对抗措施,所有处理都在软件中进行,并且使用外部4 MHz时钟频率运行。它也作为研究目标“Training Card 6”由Riscure BV提供。
以下是对目标A进行攻击的代码示例,这是一个易受攻击的PIN(个人识别号码)认证机制:
...
for (i = 0; i < 4; i++) {
if (pin[i] == input[i])
digits_ok++;
}
if (digits_ok == 4)
// BRANCH STATEMENT == CODE UNDER ATTACK
respond_code(0x00, SW_NO_ERROR_msb, SW_NO_ERROR_lsb);
else
respond_code(0x00, 0x69, 0x85);
...
通过对该代码的分析,可以更好地理解故障注入攻击的原理和目标。在实际测试中,通过调整毛刺参数,尝试改变代码的执行流程,从而绕过认证机制。
综上所述,本次研究通过对多种搜索策略的实验和分析,为智能卡故障注入参数搜索提供了有效的解决方案。未来的研究将继续探索新的方法和技术,以应对不断变化的安全挑战。
超级会员免费看
1183

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



