模板攻击学习笔记(一)


一、模板攻击

  • 模板攻击的基本思路是对加密过程中泄露的特定信息建立噪音模板,模板攻击是一种强大的侧信道攻击。它是“建模类”攻击(profiling attack)的一种,所谓建模类攻击,是指攻击者会在目标设备的同类型设备或者其复制品上创建一个"profile",随后利用这一"profile"快速恢复目标设备的密钥。

也就是说,模板攻击就是在攻击的前期花时间建立一个足够完美的模板,利用这个模板就可以在后期很容易的完成攻击。

训练阶段,经典的模板攻击采用多元高斯概率分布对操作的能耗噪音建模。训练阶段包括:选择兴趣点(Points of initeresting),能迹的向量化,以及计算模板参数。

步骤:

  1. 选择兴趣点,对k个操作{O1,…Ok},收集k个能迹集{S1…Sk},每个均包含L条能迹。计算各能迹集的均值能迹{M1…Mk}
    。计算均值能迹的差分:
    在这里插入图片描述
    并在其中选择n个差分值最大的点P1到Pn作为兴趣点(操作数不同的曲线上差异较大的点),也就是选择曲线差异比较大的点重点关注。
  2. 能迹向量化:对能迹集Si中的任意一条能迹t,其噪音向量x为:
    在这里插入图片描述
  3. 计算模板参数:对能迹集Si的模板Ti的多元高斯密度分布为:
    在这里插入图片描述
    模板是多个概率分布的集合,每个概率分布描述了一个密钥可能对应的曲线的样子

攻击阶段(Attack phase),经典的模板攻击采用一条攻击能迹t,由最大似然率的方法,判断t所属的模板----利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值。

(1)计算能迹 t 对于模板 i 的似然率:首先将 t 转换为模板 i 中的向量 :
在这里插入图片描述
似然率为:
在这里插入图片描述
(2)取最大似然率的模板作为能迹 t 的匹配模板

在这里插入图片描述
(3)根据匹配的模板所对应的操作O(泄露的信息) ,计算密钥。
根据O的信息(如SBOX输出的汉明重量)与密钥的关系,可以从O推算出一个或多个子密钥。如果是多个子密钥,则需要采用暴力攻击的方式破解。

二、模板攻击的要点

1.兴趣点的选择方法

  • 计算模板的多元高斯分布时,不可能使用能迹上的所有点。兴趣点从机器学习的角度看,应该叫“特征点”。兴趣点的选择对模板攻击能否成功非常关键。
  • 兴趣点是指哪些包含最多泄露信息的点。从信息泄露的角度来看,不同信息所产生的能耗的差异越大,意味着信息泄露越强烈。
  • 因此,兴趣点选择的基本原则是:选择能迹上对不同信息表现出最大能耗差异的那些位置(瞬间:instances)。在模板攻击的训练阶段,能迹按不同的“操作”分组,各分组能耗的差异越大,信息泄露越强烈。

我们的目的就是创建多远概率分布来描述每一个可能的密钥对应的曲线。然是如果我们对能迹上的每一个点进行建模,那么选多少个点就需要几维的分布,这样的数据量是很大的,所以需要舍弃一下对我们的分析相对没有用的点

造成这样的原因在于:
每个时钟周期可能会取样多次,造成重复无用的点,因此需要选择最适当的点。可能存在这种情况:这些兴趣点中,大部分表达操作 Oi和 Oj的区别,而很少表达Oj 和 Ok的区别。其改进思路是:在兴趣点选择过程中增加一个权重,用于表示已选择兴趣点对两个操作Oi和Oj的已有区分度;如果已选择兴趣点对两个操作 Oi和 Oj的已有区分度已经较大,则计算后续时间的SOST时,操作Oi和Oj的均值差异的权重减少。

方法如下:

  • 方法一:SOSD SOSD(sum of squared distance)方法是计算分组能迹的均值能耗的距离。即
    在这里插入图片描述SOSD仅仅测量分组的均值能耗差,没有考虑分组中能耗方差的影响。
  • 方法二SOST (sum of squared t-test)使用统计中的Welch’s t test。Welch’s t test用于测试两个大小和方差均可能不同的集合的均值相等的概率。
    在这里插入图片描述
    SOSD或SOST在具体操作上一般遵循两个原则,
    (1)两个兴趣点的位置至少相差一个时钟周期;
    (2)选择大于全局最大差异10%的所有位置。前者是为了避免产生无法求逆的病态协方差矩阵*(如果变量是与另一个变量完全冗余的,这个矩阵称为病态矩阵)*;后者的10%标准则没有可靠的理论依据。
    方法三:一种改进的SOST
    一般而言,需要用模板区分的操作O有多个,SOST和SOSD都是基于两两操作的能耗差异的和,即统一选择区分所有操作的兴趣点

2.选择函数或区分器

  • 选择函数或区分器的作用是根据某种标准对能迹进行分组,再对各分组分别建立模板。确定选择函数实际上是推测一种“能量泄露模型”。也即是我们对加密设备可能对那种信息的泄露的假设。将选择器构造为轮子密钥的数值,代表我们认为子密钥的信息在加密过程直接泄露出来;如果选择SBOX输出值的汉明重量,则表示我们认为泄露的信息是SBOX输出值的汉明重量。
  • 一个加密设备可能有多种信息被泄露,例如AES中的轮子密钥,和S盒的输出值,等,但是泄露的程度不相同,而选择泄露能量程度较大的模型进行模板攻击,便会方便很多。现有的模板攻击实现中部分对轮密钥的子密钥建模,而更多的对SBOX输出的汉明重量的建模
  • 原因之一是SBOX的输出存储外部存储器的能量消耗最大,考虑产生最大的信息泄露。另一个原因是SBOX的非线性转换使相近的密钥的能耗具有更大的区分性(同时也是因为,在使用多条能迹攻击时,确定很少的汉明重量就能够确定密钥)。但不同的算法,以及不同的硬件或软件加密实现中,可能存在不同的最佳泄露能量模型。在模板攻击中(也包括在DPA,CPA)攻击中,选择正确的泄露模型对攻击的成功率显然非常重要。

小结

模板攻击的步骤:

  • 1.使用一个可以完全由自己控制的设备,并且可以复制目标设备的功能,然后使用不同的输入进行数据收集,确保采集足够多的数据进行密钥分析猜测。
    因为存在噪声,所以进行电压的建模,得到其概率密度函数,估计一个测量值出现的可能性。

  • 2.创建一个模板,模板是一种兴趣点的多元分布。
    主要目标是找到在操作数不同(不同的密钥或汉明重量)的曲线上差异较大的点
    并且需要多兴趣点进行筛选:
    ①选择最高的尖峰,并将其索引选为一个POI
    ②舍弃最近的N个点(N为POIs之间的最小距离)
    ③重复前面两个步骤直至选取足够的POIs

  • 3.在目标设备上,使用少量的不同明文加密获取相应的曲线(目标设备的密钥不受攻击者控制)
    假设我们已经确定了I个POIs,记为si,(0<=i<I)。那么我们下面的任务就是为每一个候选的子密钥或者中间值的汉明权重求得一个均值和一个协方差矩阵。
    ①获得单独的候选项的所有曲线
    ②计算每个POI的值的均值
    ③计算每个POI的值的方差
    ④计算协方差
    ⑤得到均值向量和协方差矩阵。并且对每个候选值进行一遍操作,就完成了建模

4.利用模板进行攻击,找到最可能正确的密钥猜测值
利用得到的模板对单挑曲线进行应用,求的所有密钥猜测的可能性。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古德拜拜拜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值