简单功率分析——SPA(Simple Power Analysis)

简单功率分析是一组用于检查功率跟踪的方法,以深入了解设备的操作,包括识别与数据相关的功率变化。SPA侧重于检查在单个能量迹中直接可见或通过比较明显可见的能量迹对

1.SPA方法

1.1单信道分析

在单个能量迹中,与计时、设备属性、算法结构或计算的其他属性相对应的特征通常是可见的。SPA的第一阶段包括查看能量迹并推断操作。

例如,图10是从使用3DES和EEPROM运行伪随机数生成操作的智能卡捕获的。功耗的变化传达了设备操作的信息。从左到右,跟踪显示设备输入数据的到达、设备单字节的输出、三重DES操作和一系列EEPROM写入。其中一些子操作,如I/O和EEPROM写入,可以从它们的时序和功耗配置文件中识别,或者使用关于设备及其实现的协议的背景知识来识别。在其他情况下,信息通过识别重复的模式并计算循环中的迭代次数,可以推断出设备正在做什么。

在不同的层次上可以获得不同的信息。图10中的视图缩小显示了事务中涉及的每个主要操作。标记为“加密(3DES)”的部分中记录到三次活动爆发。放大这些凸起中的第一个,会显示重复16次的图案,这是DES round函数。如果分析人员不知道该协议使用的是3DES,那么这些结构线索可能会有所帮助。放大时钟周期级别可以显示更多细节,例如低级别实现选择。

虽然两段可能看起来相似,但识别细微差异的更可靠方法是计算轨迹两段之间的差异这里通常使用的方法是复制轨迹,将其移动一段时间间隔,然后计算并显示逐点差异。当轨迹的两段真正相似时,它们之间的差异应在它们一致的范围内相对平坦。在单一跟踪中明显存在的SPA泄漏也可能泄露加密秘密。图11显示了模块化求幂循环的幂函数轨迹的一部分,其中SPA特性的直接解释揭示了RSA解密密钥。

此轨迹显示设备使用从左到右的二进制算法执行模幂运算时的一系列平方和乘法。乘法在本族中消耗的能量大于平方,并且峰值更高。在从左到右的二进制算法中,每次迭代求幂循环都执行一个平方,而乘法仅在指数位为1时执行。这一事实允许解释图11中的操作模式。秘密指数中的每1位显示为一个较短的凹凸,后面跟着一个较高的凹凸,而0位显示为一个较短的凹凸,后面没有较高的凹凸。因此,可以恢复指数的位,如图所示。

1.2多信道分析

多信道分析包括对比试验,以确定相似区域和差异。图12显示了使用A3算法执行GSM认证订户命令的设备记录的两条能量迹。该设备每次都使用相同的键,但初始数据值不同,从而产生上两条能量迹。下部轨迹显示顶部轨迹之间的差异。

轨迹在图12的左边缘对齐,并在图的前半部分保持同步,差分轨迹相对平坦。然而,在暗垂直线指示的点处,轨迹发散,出现较大差异,表明计算采用了不同的路径。

图13显示了相同的两条记录道,但第二条记录已向左移动了21个时钟周期(4.2µS),以使它们在最右侧垂直黑线的位置恢复同步。图12中的黑线已经断开,并且仍然标记最初对齐的点。

图12和图13共同表明,这两种计算短暂地采用了不同的路径,发散区域在上记录道中采用了20个时钟周期,在第二记录道中采用了41个时钟周期。此特性是由在两个跟踪中采用不同执行路径的条件分支引起的。

导致时间差异的SPA泄漏通常可以使用时间攻击进行攻击,但SPA通常提供比总体时间更多的信息。图14显示了使用两个不同的输入消息运行的置换函数的跟踪。在这种情况下,即使总运行时间相同,高振幅泄漏也很明显。一旦了解了变化的原因,此类泄漏可能会提供可用于恢复密钥的信息。

在分析成对能量迹时,两条能量迹中的宏观SPA特征允许对齐和比较相似的特征。从另一个记录道中减去一个记录道的简单方法突出显示了它们之间的振幅和时间差。

2.SPA泄露

依赖数据的条件分支是SPA泄漏的一个来源。SPA泄漏的另一个常见来源是具有可变定时的CPU指令,例如ARM7和Intel 80486上的乘法。即使在具有恒定定时的无分支代码中,具有微码变化的指令在功耗方面也可能具有明显的依赖于数据的变化。算术运算和多精度整数运算的计算复杂度可能会发生重大变化,从而导致泄漏幅度变化较大。SPA泄漏可能由低概率事件触发。例如,对于输入的每一个16位字,多精度整数乘法可能运行得更快。SPA变体与密码处理系统无关,例如多线程CPU上的计时器中断和上下文切换,它们也很常见,但往往不太有用,并且通常可以识别,因为它们对于给定的密钥和数据输入不一致。

特别选择的输入可用于搜索对应于异常中间状态的SPA泄漏。当密钥和数据都被修改或保持不变时,可以检查其他能量迹对,以确定特征是否一致。正如将在后面讨论的那样,依赖于密钥或计算中介的SPA泄漏往往对密码分析特别有用。

3.SPA攻击

  一旦发现SPA泄漏,下一步就是用它来恢复钥匙。在一些情况下,例如图11中的装置,处理是简单的。在其他情况下,可能需要进行更多分析。

图15中的轨迹显示了在使用中国剩余定理(CRT)的RSA解密实现中出现的SPA泄漏。该图显示了解密这两条消息的最终CRT处理步骤。选择密文将明文中大约一半的最高有效位设置为0。 底部轨迹显示大于2^512附近阈值的消息出现的凹凸。当M小于阈值时,顶部轨迹显示相同的区域。进一步测试表明,该SPA泄漏揭示了M mod p>mod q。使用自适应选择密文攻击,可以通过二进制搜索找到阈值M=q,从而揭示RSA私钥。

在黑盒评估中,可能更难直接解释观察到的泄漏的含义。碰撞攻击是利用SPA漏洞的一种相对简单的方法。特别是,SPA可用于推断输入对何时导致设备进入碰撞(或类似)状态,而无需精确了解设备泄漏的性质。在某些情况下,识别这些输入的能力可以恢复密钥。

        代数攻击具体来说,基于lattice-based methods是利用SPA泄漏的另一种途径,这种泄漏在每条能量迹上只提供少量信息。

例如,图16示出了来自设备的两个功率迹线使用随机数执行ECC曲线乘法。对于在这个装置中,可以很容易地推断出20位的nonce168位椭圆曲线上每次乘法的SPA泄漏。这个顶部记录道显示等于0的随机数位,底部记录道显示等于0的随机数位显示一个随机数等于1的操作。价值随机数位在图像区域具有清晰可见的效果垂直线之间的轨迹。使用基于网格的攻击在Bleichenbacher和其他人的工作中签名密钥可以很容易地恢复。代数攻击也被证明对实现对称密码算法。

如这些示例所示,一旦识别出SPA漏洞并对其特征进行描述,则密钥的恢复通常是简单的。这并不奇怪,因为对手拥有密码设计者认为会被隐藏的关于计算中介的有用信息。

SPA仅在能量迹中的重要、依赖数据的特征明显时才实用。在实践中,加密计算期间的数据相关功率变化可能隐藏在噪声中。在其他情况下,SPA泄漏可能是可见的,但它们的解释非常繁琐,自动攻击更具吸引力。对于这些情况,DPA攻击的统计能力和结构简单性是有利的。

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

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

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

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

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

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

    一.背景 由于涉及多个系统层的攻击难以预测和建模,因此安全漏洞通常是由组件和层之间的意外交互造成的.如果算法设计者.软件开发人员和硬件工程师不合作,不了解彼此的工作,在系统的一个层中进行的安全性假设可 ...

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

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

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

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

  6. YOLOV4各个创新功能模块技术分析(三)

    YOLOV4各个创新功能模块技术分析(三) 八.数据增强相关-Stylized-ImageNet 论文名称:ImageNet-trained cnns are biased towards textu ...

  7. Linux内核分析(三)----初识linux内存管理子系统

    原文:Linux内核分析(三)----初识linux内存管理子系统 Linux内核分析(三) 昨天我们对内核模块进行了简单的分析,今天为了让我们今后的分析没有太多障碍,我们今天先简单的分析一下linu ...

  8. 物联网初步之电阻性电路分析 第三部分 电路分析方法和电路原理

    目录 电阻性电路分析 第三章 电路分析方法 3-1 支路电流法 3-2 网孔电流法 3-3 节点电位法 3-4本章总结 第四章 电路定理 4-1 叠加定理 戴维南定理和诺顿定理 电阻性电路分析 声明: ...

  9. Linux虚拟化KVM-Qemu分析(三)之KVM源码(1)kvm_init

    Table of Contents 1. 概述 2. KVM初始化 2.1 kvm_arch_init 2.1.1 init_hyp_mode 2.1.2 init_subsystems 2.2 mi ...

最新文章

  1. 基于Springboot实现在线考试管理系统
  2. Timer的缺陷 用ScheduledExecutorService替代
  3. 在iframe框架中全屏不好使的原因
  4. 界面设计方法 (2) — 3.卡式, 列表, 主细表, 树形, 页签
  5. CentOS7安装MySQL初始密码设置:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:
  6. 在VB中如何让线程或进程在指定的CPU上运行
  7. ubuntu packege下载网址
  8. 简单实用的网游服务器架构
  9. 信号集 信号屏蔽字/pending的处理
  10. 2.6 列昂惕夫投入产出模型(第2章矩阵代数)
  11. 如何解决注册GitHub帐户邮箱收不到验证邮件的问题
  12. kubelet源码分析(五)之 syncPod
  13. 发那科2021参数_发那科参数
  14. 巴比特专访丨Afri谈退出以太坊:再见,“分手”后依然是朋友
  15. 带你了解什么是产品经理,产品经理究竟做什么的【产品入门】
  16. 系统移植(系统移植环境搭建及简单概念)
  17. kuwo.php,酷我音乐公开api
  18. 重启网卡提示Bringing up interface eth0
  19. bouc wen matlab,基于Matlab磁流变阻尼器Bouc-Wen模型的参数识别
  20. python 使用input函数输入两个数字,比较两个数字的大小,并输出较大的数

热门文章

  1. Android --- RecycleView 中默认选择第一个 item,点击第 2 个 item 时改变其字体样式,其余的 item 的字体样式恢复默认
  2. C语言 数组传递与值传递讲解
  3. 怎么切换用户_走进通信:4G手机跟基站是怎么“交流”的
  4. mysql test 映射到实体_将MySql视图映射到JPA Entitites,使用哪个唯一...
  5. python第二大奇数_python-2.7 – matplotlib,包含奇数个子图
  6. 数据机房建设常用材料有哪些?
  7. js 获取屏幕高宽_JS获取屏幕的宽高。
  8. 成功解决AttributeError : ‘GridSearchCV‘ object has no attribute ‘grid_scores_‘
  9. ML之NB:利用朴素贝叶斯NB算法(TfidfVectorizer+不去除停用词)对20类新闻文本数据集进行分类预测、评估
  10. ML之NB:(NLP)基于sklearn库利用不同语种数据集训练NB(朴素贝叶斯)算法,对新语种进行语种检测