微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 技术达人教你轻松破解MCU

技术达人教你轻松破解MCU

时间:10-28 来源: 点击:
能被推测出。处理器的不同单元在时钟沿相关的不同时间里有独有的开关状态,能被高频仪器分离出来。

有多种不同的功耗分析技术用在破解密码算法上。整个分析过程是相对简单的,只需要标准的现有的廉价仪器设备。 功耗分析技术主要有两种:简单功耗分析(SPA:Simple Power Analysis)和差分功耗分析(DPA:Difference Power Analysis)。SPA是在密码或别的安全相关操作时直接观察功耗,可以得知设备运行时的信息如密钥资料。如果破解者知道密码算法,很容易通过观察处理器指令次序,特别是移位条件转移,找到一些位的信息。如果算法或逻辑运算的结果很容易被看出,如进位状态,零或负标志,就可以获得更多的信息。

DPA是种更有效的技术,因为破解者不需要知道密码算法是如何执行的。它使用静态分析和已知密码运算的大量功耗迹线来获取隐藏信息。用统计方法鉴别功耗的微小区别,可用来恢复密钥中的单个的位信息。 功耗特性当然包括噪声部分。额外的噪声可以通过减少获取信号的探针长度并小心使用测量仪器来降低它。测量接在地线上的电阻的功耗有一些优势。首先,减少了噪声电平。其次,可以用示波器的探头直接测量信号,因为大部分探针站有公共的地线与外部电源地相连。为了增加信噪比,可以通过提高平均采样数来获得。

有源探头能降低输入电容,增加对输入信号的带宽。一种方法是用高速低噪声的运放来构建相对简单的探头,另一种是用很短的同轴电缆直连到示波器的输入端。在这些情况下,探头的输入电容显著减少。

对现有的功耗分析步骤进行了改进。这是一种新的方法,尚未有类似的。我们用铁芯变压器来取代连到电源或地的电阻,那样波形就有点不一样,因为信号的直流成分丢失了,同时又有些有利条件。常用的方法对直流电流几乎没有什么限制。但对于10欧电阻来讲100mA的电流意味着有1V的电压降,那可能中断微控制器的正常操作。

减少这个电阻可以解决这个问题,但会使得难以识别功耗的微小变动。使用变压器后,不需要使用昂贵的有源探头,标准的无源探头就可以给出几乎相同的结果。如果信号太小,调节二次侧的线圈就可以增加振幅。变压器也担当无源滤波器的角色,如波形,同样的处理器指令对电阻和变压器所测量到的波形有不同的影响。那可以通过对获得的信号进行处理。为了攻击获得成功,需要采集数千的样本,然后快速分析处理所展现的秘密。

最近,芯片设计上已考虑这种攻击,并将使得这种攻击方法更难获得成功。

五、噪声攻击(Glitch attacks)

噪声攻击是快速改变输入到微控制器的信号,以影响它的正常运行。通常噪声是叠加在电源上或时钟信号上,但噪声也可以是外加的短暂电场或电磁脉冲。在离芯片表面数百微米处放置两根金属针,然后加上少于1微秒的数百伏电压的窄脉冲,晶圆衬底会感应出一个电场,使得邻近晶体管的阈值电压发生变化。最近出现一种改进的方法:使用几百圈金属线绕在微探针的针尖构成一个小型电感。当电流进入线圈会产生磁场,针尖将集中磁力线。

每个晶体管和与它相连的线路构成有时延特性的RC电路。处理器的最大可用时钟频率取决于该电路的最大延迟。同样的,每个触发器在接收输入电压和由此引致的输出电压之间有个特征时间窗口。这个窗口由给定的电压和温度来确定。如果用时钟噪声(比正常的时钟脉冲要短得多)或电源噪声(电源电压的快速波动)将会影响芯片里的某些晶体管,导致一个或多个触发器进入错误状态。通过改变参数,处理器会被导致执行许多完全不同的错误指令,有时甚至是不被微码支持的。经管我们不会预先知道何种噪声会导致何种芯片的何种错误,但它能相当简单地进行系统的搜索。

1、时钟噪声攻击(Clock glitches)

时钟信号的噪声攻击在目前是最简单的,且相当实用。实际应用中的噪声通常用来取代跳转条件并试验先前的测试指令。可以在安全密码问询处理时创建一个攻击窗口,简单预防执行这些指令。指令噪声也能用来扩大循环的时间。如,串口子程序在输出缓冲后再读更多的内容;或在密钥操作时减少循环次数来传一个弱的密码。 为获得噪声,时钟需要临时增加一个或大于半个周期,有些触发器在到达新状态之前就获得输入。时钟噪声通常针对处理器的指令流。对硬件执行安全保护的微控制器没有什么效果。实际中,仅使用时钟噪声来攻击微控制器或智能卡的软件程序接口。

这类保护的破解是相对容易的。如处理器在循环里只执行一个指令,攻击时可用不同的时钟噪声导致处理器误操作。不需要小心地与时钟信号同步,只需要随机制造噪声就可在数次攻击内成功。插入噪声是相对容易的,无需使用外部发生器,瞬间短路晶振即可。当谐振器在不同的泛音上产生震荡会发出很多噪声。大部分情况下需要在确定的时钟周期内获得所需结果,在这种情况下用信号发生器更好。

使用时钟噪声来攻击某些微控制器也许是很困难的。例如德仪的MPS430微控制器在内部RC震荡器工作的启动模块。很难与内部时钟同步,攻击时很难估计精确的时间。一些智能卡在处理器指令流里会随机插入延迟,使得攻击更为困难。使用功耗分析会有帮助,但要求非常昂贵的设备来实时获得参考信号。

2、电源噪声攻击(Power glitches)

电源供应电压的波动会导致晶体管阈值电平的漂移。结果就是一些触发器在不同的时间里采样它们的输入,或读出错误的安全熔丝的状态。 通常用瞬间增加电源电压或电压跌落来制造噪声,一般在10个时钟周期内。电源噪声通常用在微控制器的程序接口上,能影响处理器运行或硬件安全电路。一般地,弱点比时钟噪声更难找到并利用,因为对于时域参数,振幅,上升/下降时间都是变量。

一个例子是上例提到的攻击MC68C05B6.如果在执行AND $0100指令时电源电压减少50-70%,处理器从EEPROM中取出的值是FFh而不是实际的值。这会对应熔丝未加密状态。窍门是小心计算执行时间来减少电源电压,否则处理器会停止运行或进入复位状态。这种任务并不难,复位后目标指令在第一个一百周期内被执行。破解者可以使用矢量发生器或构建一个自己的噪声源。

另一个是微芯的老旧的PIC16F84。芯片的擦除操作会解除安全保护。但同时会芯片上程序和数据存储器中的内容。安全保护电路在硬件设计上是在安全熔丝复位之前擦掉存储器。但我们发现在芯片擦除操作时电源电压几微秒内增加到大约10V,会中断存储器擦除操作,但安全熔丝正常完成复位,这使得有可能读出存储器里的内容。如此高压需要谨慎使用,如果时间过长会损伤芯片。新版本的PIC16F84A增加了防欠压和过压攻击的能力。如果电源电压低于3V或6V,通过编程接口的任意修改存储器的操作会被立即中断。

不是一直需要电源噪声超过电源电压范围的规格。例如,PIC18F84A微控制器,保护机制可以阻止在芯片擦除操作开始后使用大于50mV的噪声。那会导致中止程序存储器的擦除操作但不会擦掉熔丝。

上述例子表明噪声攻击时无需特殊工具就有很好的效果。智能卡里有时钟监控电路但极少微控制器有。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top