模板攻击从入门到入土
Contents
模板攻击
侧信道攻击按照攻击方法划分为建模类侧信道攻击和非建模类侧信道攻击,非建模类侧信道攻击(Non-profiling based side channel analysis)直接对采集到的泄露信息进行分析;建模类侧信道攻击(Profiling-based side channel analysis)则需要分析者拥有与被攻击设备相同或相似的副本设备,首先在副本设备上采集相应的泄露的信息,通过对采集到的信息(在本人的研究领域一般是能量迹)进行分析,建立模型,也称为区分器(classifier)。之后,在被攻击设备上采集能量迹,通过建立的区分器来恢复密钥。
整体流程
建模阶段
- 在两台运行AES-128密码算法的设备上采集其功耗,分别获得训练集和攻击集。
- 针对第一个 S 盒置换操作进行分析,采用分而治之的策略(divide-and-conquer attack strategy),对于第 2 个密钥字节(此处可以选择其他被攻击的字节),选择一个泄露模型
HW/ID
,计算能量迹对应的标签。 - 选择被攻击的兴趣点(信噪比或者其他指标), 如果不预先挑选兴趣点,太多的样本点会导致攻击流程会很漫长。
- 假设标签 $i$ 对应$n$条能量迹,则对于标签$l$,均值矩阵计算公式如下所示,其中 $trace_l$ 表示标签为 $l$ 的能量迹:
$$ mean_l = \frac{1}{n}\sum^{n}_{i=1}trace_l[i] $$
- 协方差矩阵计算流程如下:
- 对于标签 $l$,遍历所有兴趣点: for $ i=0 $ to 兴趣点个数-1 ,再对$ j=0 $ to 兴趣点个数-1。
- 取标签 l 中能量迹对应的第 i 个兴趣点的值,与第 j 个兴趣点的值做协方差运算。
(具体流程可以看 mlscat 中的 ta 代码, TODO:这里最好用伪代码解释)
攻击阶段
-
计算攻击集中可能的密钥对应的所有标签记为 targets。
-
针对第 T 条能量迹 $tracesT$,拿到其所对应的均值和协方差矩阵,计算多元正态概率分布。
-
分别累加n 条能量迹在所有targets 的概率, 每次累加后计算正确密钥排名

代码链接
https://github.com/i4mhmh/mlscat/blob/main/mlscat/attacks.py ·TemplateAttack 类·
Related Content
- 侧信道攻击-信噪比
- 侧信道攻击-皮尔逊相关系数
- 旅行记录-长沙
- 文献阅读笔记-Label Correlation in Deep Learning-Based Side-Channel Analysis
- 基于深度学习的侧信道攻击指北