侧信道攻击之模板攻击


一、概述

简单能量分析(Simple Power Analysis, 即SPA)、差分能量分析(Differential Power Analysis,即DPA)和模板攻击(Template Attacks)是能量分析攻击领域最为经典的三大攻击手段。当然,实际中还有一些其他的攻击手段,例如相关能量分析(Correlation Power Analysis, 即CPA),将模板攻击与机器学习的方法结合来进行攻击。掌握这些基本的经典攻击方法,为后续的学习能够打下牢固的基础。

在这篇文章中还想阐述的一点是:深入理解能量分析攻击的能量模型对于深入理解能量分析攻击方法具有十分重要的意义。 知其然,而不知其所以然,会很难灵活运用这些攻击手段。

具体来说,能量分析攻击的能量模型建立在这样的基础之上:数字电路在执行操作时需要消耗电能,且这种能量消耗以光、热等形式散发出去。能量分析攻击则利用了这一个事实,即密码设备在处理数据和执行操作的过程中,其瞬时能量消耗依赖于这些数据和操作。为此,建立密码设备的能量消耗模型,分析其能量特征使得在我们了解密码算法的前提下破解密钥成为可能(实际上,侧信道攻击方法属于灰盒攻击)。因此,我们找到合适的刻画密码设备能量消耗的模型就为找到合适的攻击手段提供了基础。

本文主要从模型构建攻击流程两个方面对模板攻击进行总结,最后会对模板攻击的优缺点进行简单总结。


二、建模过程

2.1 能量迹是如何泄露密钥关键信息的?

这里忽略从晶体管开始的建模过程,如果读者希望了解更为具体的内容,可以参考由冯登国、周永彬、刘继业等翻译的《能量分析攻击》这一本经典教材。

对于密码设备,我们可以总体地对它的能量消耗进行如下描述:

P t o t a l = P o p + P d a t a + P n o i s e P_{total} = P_{op} + P_{data} + P_{noise} Ptotal=Pop+Pdata+Pnoise
这里 Ptotal 指在具体的某一时刻,密码设备所消耗的总的能量; Pop 是指由密码设备操作指令引起的能量消耗,例如“取指”; Pdata 是指由操作数引起的能量消耗; Pnoise 则指因为环境或者设备本身的问题而产生的能量噪声,这样的能量噪声一般被看作是随机分布,消除它的手段则可以是取多条能量迹然后求取平均值。PopPdata 刻画了密码设备的执行过程,不同的操作指令以及不同的操作数都会引起实际的能量差异,只不过有些能量差异明显,有些能量差异不明显,作为攻击者就是要想方设法地获取这样的差异以从中获取一些有用信息,对于防守方则需要绞尽脑汁地隐藏由操作指令和操作数的差异造成的存在差异的能量消耗。

基于上面的知识,想象这么一个过程:在某个密码设备上,使用n个不同的密钥对同一明文(密文)各进行多次加密(解密),抓取获得的能量迹。首先,完全随机的噪声 Pnoise 对于我们的攻击毫无用处,甚至是一种干扰,应当(求平均)过滤掉。针对去掉毫无用处的噪声后的信号,我们可以很明显地判断,密码设备在运用不同的密钥对同一个明文(密文)进行加密(解密)的过程中产生的能量消耗不同。这里,举几个简单的数据以作说明(取360ns时的八组数据举例说明):

在这里插入图片描述

密钥值能量值差值
00 00 00 0198.23-1.66
00 00 00 0298.05-1.84
00 00 00 0399.30-0.59
00 00 00 04101.211.32
00 00 00 05100.560.67
00 00 00 06101.731.84
00 00 00 0799.98-0.09
00 00 00 08100.060.17
能量平均值99.89

从上表,我们可以看到由于密钥值的不同而造成的能量消耗的不同,这被称为能量迹的单点泄露。在密码设备实际执行密码算法的过程中,往往存在多个泄露点。简单能量分析攻击和差分能量分析攻击都关注能量迹中的一个泄露点,因此不能够充分利用能量迹中所泄露出来的信息,而模板攻击关注整条能量迹中的多个信息泄露点,能够充分利用这些信息。另外,我们约定一个关于密钥信息泄露的关键点,记为P。还值得说明的是,这里只是采用了最简单的方法直观地展示了什么是密钥信息泄露的关键点,实际在应用的过程中还会有其他的办法更恰当地寻找这些对于攻击有用的点。

在实际运用过程中,我们采用的是多元高斯分布模型来描述一条能量迹上多个密钥信息泄露的关键点之间的关系。其运用的实际结果是,能够充分地描述一条能量迹上多个密钥信息泄露的关键点之间的关系,是最有效的能量分析攻击手段。

2.2 多元高斯分布模型

多元高斯分布模型
其中,Cm 的具体表达如下:
在这里插入图片描述
关于多元高斯分布模型的具体知识,在这里不作阐述,它是一维高斯分布模型(即一维正态分布)的高阶表达,其概率密度函数由(mC)唯一决定,而(mC)被称为模板。在这里C是指相关样本点的协方差矩阵,而m是指样本的均值。在这里仅需要理解它的数学形式即可,在攻击过程中具体如何去应用这个数学模型构建攻击模板可以在第三部分去理解。

在了解“能量迹是如何泄露密钥关键信息的”之后,我们又建立了描述不同信息泄露点之间关系的数学模型——多元高斯分布模型,接下来就可以进一步去探讨模板攻击的具体实施步骤了。


三、攻击过程

模板攻击的过程可以被初略地分为两步,构建模板和实施攻击,下面将分别详细阐述这个过程。

3.1 构建模板

3.1.1 采集能量迹

在构建模板阶段,首先要采集用于实施模板攻击的能量迹。如果一个密码算法的密钥长度为8比特,那么就应该针对每一个可能的密钥值,即256个密钥可能值,采集相应的能量迹。一般而言,在这个阶段会采集大量的能量迹(每个密钥值对应的能量迹所需的典型数量为1000次左右)。如果密钥长度过长,例如256比特,那么往往采取将其拆分为几个部分,逐个部分地进行攻击,以避免密钥猜测的数量过大而造成攻击困难。 在这里进行一个符号约定,针对某个密码算法,我们一共猜测了n个密钥值,分别记为 {K1,K2,……,Kn} ,每个密钥值相应地采集了 L 条能量迹。

3.1.2 计算能量迹平均值

针对每一个密钥猜测 Ki ,计算其能量迹的平均值,分别记为 M1,M2,……,Mn
M i = 1 L ∑ i = 1 L P t o t a l − i M_i =\frac{1}{L} \sum_{i=1}^L P_{total-i} Mi=L1i=1LPtotali

3.1.3 寻找密钥信息泄露的关键点

在这里,仅仅介绍差值求和的方法,实际过程中还有很多其他的办法用以寻找密钥信息泄露的关键点。在 3.1.2 中已经得到了针对一个密钥猜测 Ki 得到的能量迹平均值 Mi 。将这些代表每个密钥猜测的平均能量迹 M1,M2,……,Mn 两两作差,并对差值求和,就会得到一条带尖峰的曲线,最高处的尖峰则表示该点上密钥差异所引起的能量迹差异最明显,为密钥信息泄露的关键点 P
在这里插入图片描述
我们从曲线中选择最高的 N 个尖峰对应的点作为选择的密钥信息泄露关键点 P1,P2,……,PN 用以构建多元高斯分布模型的模板 (mC)。这里需要注意的是在相邻很近的尖峰上我们需要舍弃一部分尖峰,因为每个时钟周期可能会被多次采样,如果两个点相邻很近可能会导致这两个点反映的密钥相关信息重复。

3.1.4 构建模板

到目前为止,我们已经针对每个密钥猜测采集了 L 条能量迹,计算出了关于每个密钥猜测的平均能量迹 M1,M2,……,Mn,并选择了 N 个密钥信息泄露的关键点 P1,P2,……,PN。现在我们来计算每个密钥猜测 **Ki**对应的模板(miCi

模板中 mi 就是每个密钥猜测的平均能量迹中与密钥信息泄露关键点相对应的平均能量值,记为 mi = (Mi[1],Mi[2],……,Mi[N])Ci 的计算方法如下:
在这里插入图片描述
作符号约定如下:对于每个密钥猜测 Ki,获得的 L 条能量迹中第i条能量迹表示为 ti,ti[j] 和 ti[k] 表示第i条能量迹上第 j 和 k 个密钥信息泄露关键点,Mki[j] 和 Mki[k] 分别表示第 p 个密钥猜测下 L 条能量迹均值上对应的第 j 和 k 个密钥信息泄露关键点。那么对于 Ci 中的每个 cj,k,计算如下:

在这里插入图片描述
这样就获得了密钥 Ki 相对应的模板(miCi),则可以根据下式计算相应的概率值。密钥猜测 Ki 信号的构成则可以描述成相应的能量迹均值 Mi 和由多元高斯分布函数给出的噪声分布。

在这里插入图片描述

3.2 实施攻击

3.2.1 攻击的一般流程

假设我们从被攻击的设备上一共采集到 n 条能量迹,并用 xi,j 表示第 i 条能量迹上第 j 个密钥信息泄露关键点,其中 1 <= i <= n,1 <= j <= N。

  1. 那么对于第 i 条能量迹,其所有的密钥信息泄露关键点对应的能量值可以表示为向量 x = (xi,1,xi,2,……,xi,N) T

  2. 将向量 x 代入每个密钥猜测值对应的模板之中,计算每个密钥猜测下的概率密度函数值:pk,i = fk(x),表示第 i 条能量迹在密钥猜测 k 下的概率值。

  3. 将测得的 n 条能量迹在每个密钥猜测下的概率合并起来,判断哪个密钥猜测更可能是最终的答案(一般选择最大值)。
    P k = ∏ i = 1 n p k , i P_k = \prod_{i=1}^np_{k,i} Pk=i=1npk,i
    采用这种方式进行计算,对于 n 太大,容易出现精度问题,因此可以采用取对数的方式来表示,如:
    log ⁡ P k = ∑ i = 1 n log ⁡ p k , i \log P_k = \sum_{i=1}^n\log p_{k,i} logPk=i=1nlogpk,i

3.2.2 剪枝策略

在实际攻击的过程中往往一个密钥的长度十分长,因此我们需要把它分成多段来进行猜测。例如针对256位的AES算法,那么我们可以按照8×32进行拆分,每次猜测8位密钥,最后再根据所有的32轮猜测进行分析选取最可能的密钥值。在这个过程中,我们就会遇到如何在猜测过程中删除不可能的密钥的猜测的问题(即计算所得的概率小于一定值),这就需要我们采取合适的剪枝策略,既保障正确的密钥猜测不被剪枝掉,又保障尽可能多地剪掉错误密钥猜测值。具体的方法,在这里不进行探究,仅提一句,各位需要注意此点即可。


四、总结

从信息论意义上讲,模板攻击是能量分析攻击领域最有效的侧信道攻击方式。但是它有两个比较明显的缺点,第一点是在实施攻击之前,必须构建大量的模板,这无疑增加了非常多的工作量;这也决定了它的第二个缺点,即需要敌手能够获得与被攻击设备一致的且可被编程的密码设备。解决了这两个问题,模板攻击的威力则十分巨大,在攻击阶段仅需要极少的能量迹,极端情况下获取一条能量迹即可高效地实施攻击。

五、参考文献

  1. 火腿烧豆腐:模板攻击
  2. Chari S , Rao J R , Rohatgi P . Template Attacks[C]// International Workshop on Cryptographic Hardware & Embedded Systems. Springer, Berlin, Heidelberg, 2002.
  • 24
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值