对智能卡微控制器的动态分析和防御:测量CPU的电流损耗

时间:2008-11-21

  在1995年本书的第1版中,就这一点已经作出了如下的阐述:“处理器的设计对安全性是关键的。智能卡 处理器对所有机器命令必须具有基本相同的电流损耗,否则基于电流损耗就可做出有关处理命令的判断,一 定数量的秘密信息就可以从这些结论中推出。自从1998年6月PaulKocher,Joshua Jaffe和Benjεlmln Jun 发表了关于简单功率分析SPA(Simple Pow·er Analysis)和差分功率分析DPA(Differential Powˉer  Analysis)[ Kocher 98]以来,分析执行命令时处理器的电流损耗可以推出处理器执行的命令,甚至于所 处理的数据。这一结论多年来已是人所共知的事实了。

  如图1所示,比较起来简单功率分析的工作原理并不复杂的,微控制器的电流损耗可由测量串接在电源回 路中的电阻上的电压降而确定,用一个高时间分辨率的模数转换器来测量。对于高性能的处理器,诸如 Pentium或Power PC困其内部处理的复杂性不可能得出关于所执行命令的结论。另一方面,对于智能卡用的 比较简单的微控制器如:8051和6085 CPU的设计就是可测的,可以说明随所处理的命令与数据的不同其电流 损耗的变化。

  差分功率分析和简单功率分析相比,甚至能揭示出微控制器的更细致的电流损耗的差别,用DPA技术先测 量微控制器处理已知数据的电流损耗,再测量未知数据时的电流损耗,测量应多次重复以便取得平均值而排 除噪音影响,一旦测量完成并计算出差别,有关未知数据的结论即可由此结果得出,见图2和图3。

  在Kocher等人的论文“高阶差分功率分析”(HO-DPA)是作为DPA的进一步扩充来论述的,这里测量的不 仅是微控制器的电流损耗,还包括了依赖于处理器所执行的程序的其他量,诸如芯片的电磁辐射。测量数据 按下述方式收集:即对于已知和未知数据二者的收集,然后使用和DPA技术中相同的方法去计算差别,即可 计算出秘密数据。


图1 智能卡微处理器,执行几条不同的机器命令时的电流变化的简略图示(电流损耗依赖于所处理的数据和所执行的机器命令)


图2 用串连电阻进行简单电流测量时,所需的智能卡微控制器的电路连接图


图3 智能卡微控制器在闲置状态的电流损耗和工作时的电流变化的简化显示(基于微控制器所吸收的电流, 有可能识别出随着I/0线上的第1个下降边微控制器从睡眠状态被唤醒。
接着由于执行了不同的机器命令而呈 现出连续变化的功率损耗)

  在尚未采取适当保护对策时,对智能卡微控制器的这三种类型的功率分析是对软件和硬件的极为严重的攻击形式。因为,对某些微控制器来说,其电流损耗是固定地依赖于所执行的机器命令以及被此命令所处理的数据。此外,在此方法中为成功攻击所需设各的价格和复杂性也比较有限。当然,也可以采取一系列的有效对策,它们一方面是基于改进的硬件而另一方面则是对软件的改变。

  简单的硬件解决方案是在芯片中集成一个快速电压调节器,它利用一系列的传感电阻来保证微控制器的电流损耗与机器命令和数据无关。芯片上的人工电流噪音发生器也是一个有效的方案。技术上比较复杂的解决方案包括修改处理器的半导体设计,使得它的电流损耗总是固定不变的。

  这里我们简短地叙述某些代表性的例子,说明存在着范围极其广泛的软件对策。简单的方法是采用电流损耗非常接近的机器命令。在这种情况下,不允许使用那些电流损耗明显地不同于平均电流损耗的机器命令,不允许它们出现在汇编代码中。另外的方案是准备几个执行同一计算过程的加密算法,每次需要时就从这些过程中随机选用一个,这使得观察者去辨别已知和未知机器命令或被处理的数据的相互关系时显得比较困难。为了使成功地实现功率分析前必须采集的数据更加难于获取,所有的密钥应由不可逆的重试计数器保护。此外,必须闭锁对所有可能用来传送任何经智能卡加密算法处理的预期数据的命令的自由访问(例如INTERNAL AUTHENTICATE)。如果出于某些原因必须使用这类命令,在执行它们之前智能卡必须测试终端的真实性,这种对命令在使用上的限制,使得为后继的功率分析搜集基准数据变得困难多了。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com


  
上一篇:计算机测控系统的功能规范
下一篇:对智能卡微控制器的分析和防御:测量CPU的电磁辐射

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料