一、背景

由于涉及多个系统层的攻击难以预测和建模,因此安全漏洞通常是由组件和层之间的意外交互造成的。如果算法设计者、软件开发人员和硬件工程师不合作,不了解彼此的工作,在系统的一个层中进行的安全性假设可能与其他层的实际属性不匹配。许多技术已被设计用于单独测试密码算法。例如,差分密码分析和线性密码分析可以利用密码输入和输出中极小的统计特征。现代密码被设计来抵抗这种攻击。然而,这种分析只适用于系统架构的一部分,即算法的数学结构。

对密码分析的抵制不足以在实践中创建安全的密码系统。即使是使用强大算法和协议的正确实现也不一定是安全的,因为漏洞可能来自实现的其他层。

差分功率分析(DPA)、简单功率分析(SPA)以及一些相关技术。这些攻击通过测量目标设备(或其他侧信道)的功率消耗来提取密钥。这些方法对于所有主要算法的实现都是有效的。

这些攻击已经针对数百种设备实施,包括ASIC、FPGA和软件。目标范围从小型的单一用途芯片到复杂的设备,这些设备的功率测量会产生噪音,并且会因不可预知的并行操作而变得模糊。

二、功率分析

1、产生原因

大多数现代密码设备都是使用半导体逻辑门实现的,而半导体逻辑门是由晶体管构成的。当电荷被施加到晶体管的栅极或从栅极移除时,电子流过硅衬底。这种电子流消耗能量并产生电磁辐射。

集成电路或更大设备的功耗反映了其单个元件的聚合活动,以及系统的电容和其他电气特性。例如,微处理器可能使用与寄存器负载不同的电路来调度加法操作,从而导致这些操作消耗不同的功率。净功耗还取决于有源电路中开关的晶体管。一些晶体管的活动取决于电路正在处理的数据。例如,当将十六进制字节A7添加到B9时,可能比将01添加到00时更多的晶体管切换。

由于设备使用的电量受正在处理的数据的影响,因此功耗测量包含电路计算的信息。单个晶体管的影响虽然在大型设备的功率测量中无法直接观察到,但却表现为弱相关性。当设备处理加密机密时,其依赖于数据的电源使用会使这些机密受到攻击。

图1来自执行AES-128加密的智能卡的电源跟踪,十轮清晰可见

2、轨迹和频率分布

 功耗分析过程的第一步是从目标设备收集一条或多条记录道。跟踪是跨加密操作或操作序列进行的一系列测量。

图1显示了从执行AES-128加密操作的智能卡收集的大约3毫秒的电源跟踪。功耗为采样数100MHz,跟踪中的每个点是多个采样的平均值。通过将电阻器与设备接地线串联,然后使用示波器测量接地输入处的电压来捕获跟踪数据。因此,较大的测量值(图1中的较高值)表示较高的功耗。

图2显示了在CBC模式下使用ES128从ANFPGAE加密1MBOFD数据记录的5微秒功率跟踪段。图中显示了四个单独的AES-128加密。完整的跟踪记录了500 MHz下近4000万次测量,跨越了完整CBC加密中的216次AES操作。通过将电阻器与电源(Vcc)输入串联,并测量设备上的电压,可以捕捉到该轨迹,因此图中较高的功耗显示为较低的值。

图2执行AES-128 CBC模式加密的FPGA电源跟踪的一部分。

在功率侧测量中,向下对应于更大的功率

图3显示智能卡上第一轮AES-128加密的电源跟踪段。垂直线标记第一个S形框查找的位置

尽管AES轮在两个图中都可以清楚地识别。1和2,PAA攻击不需要此类干净的测量。下面的实验使用从智能卡收集的一组痕迹进行,说明了功耗如何依赖于敏感数据。图3、图1显示了AES-128运行第一阶段的功率区域。(图3显示了比图1更详细的信息,因为较少的点被平均在一起以产生绘图中的每个点。)卡计算第一个S盒输出的时间时刻由垂直线标记。在执行AES-128加密操作时,从同一智能卡捕获了4000条记录道。每个轨迹观察到不同的、随机的、纯文本的加密。每次都使用相同的随机已知密钥。图4显示了在图3中标记的时间,4000条记录道中的功率测量分布。使用了一个8位A/D转换器,因此点的可能范围为0到255。观测到的分布接近高斯分布,平均值为120个单位,标准偏差为10.66。图4显示,在以下情况下,记录道之间的功耗测量值存在显著变化:

图4第一次S盒输出计算时的功耗分布

这是计算过程中的一个关键点。这种变化结合了一系列影响,包括密码处理中的数据相关变化、设备中的其他活动、测量不准确度、干扰、环境因素等。

图5证实了与数据相关的功耗会导致在功率跟踪中观察到的变化。该图显示了两种功率测量分布。左侧的分布仅使用第一个S盒输出的最低有效位(LSB)为1的记录道生成。向右的分布仅使用LSB为0的记录道生成。在这种情况下,密钥和明文是已知的,因此可以从明文计算S-box输出。

对于LSB为1的记录道,功耗近似为高斯分布,平均值为116.9,标准偏差为10.7。当LSB为0时,分布近似为高斯分布,平均值为121.9,标准偏差为9.7。通过逻辑综合工具和其他设计细节布置逆变器,使得任何一个值都可能消耗更多功率。重要的是,这两种分布显著不同,表明功耗与S盒输出的LSB具有统计相关性。图5中的分布显著重叠,因此单个测量将不足以确定S盒输出比特的值,但是如果测量集足够大,则可以可靠地区分这些分布。

图5所示的子集并不是划分数据的唯一方法,如图4所示。例如,如果根据第一个S盒的任何其他输出位的值将数据划分为两个子集,则所得分布也可以清楚区分。这重申了所选时间点的功耗取决于第一个S盒输出的所有位。

图5第一个S盒输出的LSB为1(左)和0(右)的记录道功耗测量分布

差分能量分析介绍(一)相关推荐

  1. 差分能量分析介绍(五)

    DPA的执行(下) 步骤 数据收集和准备 使用选择函数生成假设 求平均值 评估 1.DPA:求平均值 分析阶段是执行堆芯DPA计算的阶段.除了计算各记录子集的平均值外,还通常计算所有能量迹上各点的平均 ...

  2. 差分能量分析介绍(二)

    差分功率分析 1.基本分析方法 差分功率分析DPA是一种统计方法,用于分析测量集,以确定数据相关的相关性.基本方法包括将一组记录道划分为子集,然后计算这些子集的平均值之差.如果将哪个记录道分配给每个子 ...

  3. 差分能量分析介绍(三)

    简单功率分析--SPA(Simple Power Analysis) 简单功率分析是一组用于检查功率跟踪的方法,以深入了解设备的操作,包括识别与数据相关的功率变化.SPA侧重于检查在单个能量迹中直接可 ...

  4. 差分能量分析介绍(四)

    DPA的执行(上) 步骤 数据收集和准备 使用选择函数生成假设 求平均值 评估 1.数据收集和准备 DPA利用的泄漏可能比一组能量迹中的噪声水平小得多,但更好的信噪比需要更少的能量迹.在评估实验室或对 ...

  5. DPA——差分能量分析(Differential Power Analysis)

    1 能量分析技术 1.1 能量分析概述 密码设备在进行加解密运算时,其内部结点电平高低变换完成运算,电平变换过程中电容不断地充放电进而从电源源源不断的获取电流.由于内部电阻的存在,此时设备不断地产生能 ...

  6. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]41所有的侧信道分析都是能量分析吗

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

  7. matlab时频分析工具箱安装_EEG时频分析介绍与实现(基于EEGLAB、NetStation与Analyzer2软件)...

    本文首发在个人博客上(7988888.xyz),此文章中所有链接均通过博客进行访问. 我在很早之前有翻译过一篇通过小波变换来进行时频分析的文章,可参考<小波教程>.最近,我在油管上看到了E ...

  8. splunk 提取字段_全面的Splunk应用日志分析介绍

    全面的Splunk应用日志分析介绍 Splunk 是一款顶级的日志分析软件,如果你经常用 grep.awk.sed.sort.uniq.tail.head 来分析日志,那么你需要 Splunk.能处理 ...

  9. 我的世界java史莱姆生成条件_关于我的世界史莱姆的生成条件分析介绍

    关于我的世界史莱姆的生成条件分析介绍.那下面给大家分享的则是我的世界玩家浅谈史莱姆的生存心得哦~有感兴趣的玩家不妨进来看看下面的介绍吧!希望对大家有所帮助. 游戏园我的世界官方群:325049520 ...

最新文章

  1. 大数据5年规模将达8000亿
  2. 论大型信息系统集成项目的人力资源管理
  3. apache php5.3 配置_php-5.3+APACHE 安装配置
  4. mysql修改root密码的方法
  5. js加载音频文件并播放,代码实例
  6. JUnit5 @BeforeEach注解示例
  7. 你还记得珠算的口诀吗?
  8. XmlDocument,XDocument相互转换
  9. 特殊权限 set_uid、set_gid、stick_bit,软链接文件,硬链接文件
  10. 判断一个对象是否存在
  11. 用canvas画一个刮刮卡
  12. 语音识别(ASR)论文优选:自监督学习Self-Supervised Learning for speech recognition with Intermediate layer supervisi
  13. 当在Windows上安装SQL Server,点击setup,出现以下错误0 x84b10001
  14. channel(3) 一 基本定义
  15. sw运行很卡怎么办_win10运行solidworks好卡怎么解决_win10打开solidworks经常卡顿如何处理...
  16. DSC测试仪器校正及检验
  17. 2020煤矿安全监测监控模拟考试题库及煤矿安全监测监控作业考试题库
  18. Yocto新增一个hello程序
  19. 图解ReentrantLock底层公平锁和非公平锁实现原理
  20. cocos-2d 游戏开发

热门文章

  1. 数据结构-求一个字符串中的某个子串(C语言)
  2. linux禁止客户端上传文件_实战 FastDFS Java 客户端上传文件
  3. 2225!全国电厂名单大全
  4. 数据中心的未来:一体化无人值守
  5. 《公安机关互联网安全监督检查规定》今日起实施,要检查你家的数据中心了...
  6. 国内IDC行业现状及投资策略分析
  7. 计算机操作日志文件,查看电脑操作记录(LastActivityView)
  8. Matlab:成功解决Undefined function or variable B
  9. DayDayUp:博主,在此,祝愿大家(十五种编程语言输出),2019年春节快乐!猪年诸事大吉!学要有所成,劳要有所获!
  10. BlockChain:BlockChain周边概念详解+个人理解