模板攻击

  • 一、概述
  • 二、建模过程
    • 2.1 能量迹是如何泄露密钥关键信息的?
    • 2.2 多元高斯分布模型
  • 三、攻击过程
    • 3.1 构建模板
      • 3.1.1 采集能量迹
      • 3.1.2 计算能量迹平均值
      • 3.1.3 寻找密钥信息泄露的关键点
      • 3.1.4 构建模板
    • 3.2 实施攻击
      • 3.2.1 攻击的一般流程
      • 3.2.2 剪枝策略
  • 四、总结
  • 五、参考文献

一、概述

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

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

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

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


二、建模过程

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

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

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

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

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

密钥值 能量值 差值
00 00 00 01 98.23 -1.66
00 00 00 02 98.05 -1.84
00 00 00 03 99.30 -0.59
00 00 00 04 101.21 1.32
00 00 00 05 100.56 0.67
00 00 00 06 101.73 1.84
00 00 00 07 99.98 -0.09
00 00 00 08 100.06 0.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
Mi=1L∑i=1LPtotal−iM_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 条能量迹在每个密钥猜测下的概率合并起来,判断哪个密钥猜测更可能是最终的答案(一般选择最大值)。
    Pk=∏i=1npk,iP_k = \prod_{i=1}^np_{k,i} Pk=i=1npk,i
    采用这种方式进行计算,对于 n 太大,容易出现精度问题,因此可以采用取对数的方式来表示,如:
    log⁡Pk=∑i=1nlog⁡pk,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.

侧信道攻击之模板攻击相关推荐

  1. 侧信道攻击,从喊666到入门之——Unicorn的环境构建

    作者:backahasten 发表于小米安全中心微信公众号 0x00 前言 Unicorn可以模拟多种指令集的代码,在很多安全研究领域有很强大的作用,但是由于需要从头自己布置栈空间,代码段等虚拟执行环 ...

  2. 侧信道攻击:SPA / DPA

    参考资料:Cryptographic Engineering, by Cetin Kaya Koç, Editor Springer. 文章目录 Side-Channel Analysis Timin ...

  3. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]43 为AES 对抗侧信道攻击的防御

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 为AES描述一些基础的(可能无 ...

  4. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第39篇]侧信道攻击和故障攻击有什么区别

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 侧信道攻击(Side-chan ...

  5. Intel CPU 易受新型的 SGAxe 和 CrossTalk 侧信道攻击

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 网络安全研究员发现了两种针对当代 Intel 处理器的攻击,可泄露CPU 可新执行环境 (TEE) 中的敏感信息. 第一种攻击名为 & ...

  6. 【安全硬件】Chap.6 IC和半导体产业的全球化;芯片生产猜疑链与SoC设计流程;可能会存在的安全威胁: 硬件木马、IP盗版、逆向工程、侧信道攻击、伪造

    [安全硬件]Chap.6 IC和半导体产业的全球化:芯片生产猜疑链与SoC设计流程:可能会存在的安全威胁: 硬件木马.IP盗版.逆向工程.侧信道攻击.伪造 背景 1. IC和半导体产业的全球化 2. ...

  7. 基于Montgomery算法的高速、可配置 RSA密码IP核硬件设计系列(五)——模幂模块(抵抗侧信道攻击)模块的设计实现方案

    基于Montgomery算法的高速.可配置RSA密码IP核硬件设计系列(五) 2.2 模幂模块设计(抵抗测信道攻击模块) 2.2.1 模幂模块及内部模块的功能 2.2.3 模幂各模块的实现方案 2.2 ...

  8. CATalyst——针对末级缓存侧信道攻击的防御技术

    CATalyst: Defeating Last-Level Cache Side Channel Attacks inCloud Computing, HPCA'16 (A类), 2016年3月[1 ...

  9. 简单来看看什么是侧信道攻击

    前言 之前在看逻辑层面的安全,其中有个旁路攻击,书里面说这玩意就是防范侧信道攻击. 旁路攻击又被称为旁路信道攻击或侧信道攻击.这种硬件层面的攻击通常以从电子设备获取机密信息为目标.对于密码算法,加密是 ...

  10. Spectre侧信道攻击过程验证【头歌教学实践平台】

    第1关:Cache vs Memory // 补全下方代码,完成array[0*4096]至array[9*4096]数据的缓存驱逐 /******************************** ...

最新文章

  1. Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6
  2. 超微服务器开机启动项目怎么设置,超微服务器启动项设置
  3. 【Python基础】Python 炫技操作:五种 Python 转义表示法
  4. C语言struct中冒号用法
  5. 一次代码优化实践,用了模板方法+策略+工厂方法模式
  6. numberformatexception是什么异常_处理Java异常的9个最佳实践
  7. B2B2C-2 品牌管理-2-品牌列表的实现
  8. c语言答辩中期报告,安徽工程大学毕业设计(论文)中期检查总结
  9. android volley 请求参数,android – Volley – 如何发送DELETE请求参数?
  10. 14.Linux/Unix 系统编程手册(上) -- 文件系统
  11. sublime3安装常用插件
  12. 开源的SNMP网管系统LibreNMS
  13. SQL查询语句精华大全
  14. 20个开源的工业设计软件
  15. android 6 root 工具,安卓手机ROOT ROOT工具
  16. 一键清理系统垃圾文件
  17. 手机扫描计数器有哪些?实用扫描计数软件分享给你
  18. 【Akka】Actor模型探索
  19. iia期是第几期_IIa期和IIb期的定义,区别
  20. Window Git配置

热门文章

  1. 后台数据联调的接口工具 postman和apizza 集成数据
  2. 记一次微信APP支付开发返回-1的坑
  3. 电子统计台账:中文标记月度流水账格式数据的转换,以及过滤模板的普遍适配性
  4. 显示器尺寸对照表_电脑显示器尺寸对照表(电脑显示器尺寸一览表)
  5. Android端记录跑步计步运动轨迹数据的App
  6. PHP 汉字转拼音Class类
  7. 超牛逼的性能调优利器 — 火焰图
  8. Ace Admin安装配置教程
  9. Java 程序员必须掌握的 4 大开源框架!
  10. 软件技术专业-就业提示(一、实施工程师)