破解MCU难于上青天?这几招告诉你什么叫大神
时间:06-04
来源:互联网
点击:
迟(quesTIon-answer delay)。很多密码算法容易受到时序攻击,主要原因是软件来执行算法。那包括执行适时跳过需要的分支和操作条件;使用缓存;不固定时间处理指令如倍频和分频;还有大量的其他原因。结果就是执行能力典型地取决于密钥和输入的数据。
暴力对于半导体硬件和密码来说是另一种意思。对于密码,暴力攻击是对系统尝试数量众多的密钥。通常是使用高速计算机来寻找匹配的密钥。 一个例子是微控制器中的密码保护设置。以TI的MSP430为例,密码本身长度为32字节(256位),抵挡暴力攻击已经足够了。但密码分配在与处理器中断矢量相同的存储器地址。那么,首先减少存储器内矢量一直指向的区域。然后当软件被更新时,只有小部分的密码被修改,因为大部分中断子程序指向的矢量是相同的地址。结果是,如果破解者知道早前密码中的一个,就很容易做系统的搜索,在合理的时间内找到正确的密码。 暴力攻击也可用在ASIC或CPLD的硬件设计来实现。这种情况下,破解者使用所有可能的逻辑组合到元器件可能的输入端并观察所有输出。这种方法也称为黑箱分析(Black-box analysis),因为破解者不知道被测试元器件的情况。通过所有可能的信号组合,尝试获得元器件的功能。这种方法对相对小的逻辑器件很有效。另一个问题是破解者使用的ASIC或CPLD有触发器,故输出将可能是当前状态或输入的状态。但如果预先检查并分析信号,搜索的范围可以显著减少。例如,时钟输入,数据总线和一些控制信号是很容易认出的。另一种可能的暴力攻击,对很多半导体芯片有效,是将外部高压信号(通常是两倍于电源电压)加到芯片引脚上,来试图进入工厂测试或编程模式。事实上,这些引脚用数字万用表很容易发现,因为它们没有保护二极管到电源脚。一旦发现对高压敏感的引脚,破解者就可以尝试可能的逻辑信号组合来加到别的引脚上,找出用于进入工厂测试或编程模式的部分。 破解者也可用元器件的通信协议来找出设计者嵌入在软件中的测试和更新用得隐藏功能。芯片制造商经常提供给后期测试用得嵌入硬件测试接口。如果这些接口的安全保护没有适当设计,破解者很容易利用它来读写片上存储器。在智能卡中,这些测试接口通常位于芯片电路之外,并在测试后从物理上除去。 任何安全系统,不管软件和硬件,在设计上都可能有缺陷,对于破解者来说都是机会,暴力攻击有可能找到它。小心设计安全保护系统,进行适当的评估,可以避免很多问题,并使得这些攻击事实上不可行。四、功耗分析(Power analysis)
一个运算设备的功耗取决于它当前的状态。依照CMOS晶体管的原理,各部分动态时的功耗比静态的要大。当输入电压加到反向器上,会引起一个晶体管短路,这个晶体管电流的增加比静态消耗的寄生漏电要大得多。在电源线上加个10-20欧的电阻,就可以测量电流的波动。为达到更好的效果,需要使用至少12位精度和50MHz采样速度的模数转换器。这些获得的参数可以用来区别处理器的不同指令并估计总线上同时翻转的位数。 通过平均多次重复同样操作的电流,即使是没有通过总线的很小信号也能区别开。有些信号如移位状态特别有用,因为很多密码的密钥产生算法使用移位操作
为防止此类攻击可以使用盲签名(Blinding signatures)技术。这个方法是利用选定的随机数与输入数据混合来防止破解者知道输入数据的数学运算法则。
时序攻击可用在安全保护是基于密码的微控制器,或使用确定数字的卡或密码来进行访问控制的系统,如达拉斯的iButton产品。这些系统中共有的风险是输入的连续数字在数据库进行再次校验。系统需经常检查输入到数据库的密钥的每个字节,一旦发现不正确的字节就会立即停止,然后切换到下一个直到最后一个。所以破解者很容易测量出输入最后一个密钥倒请求另一个的时间,并得出发现的密钥相似度。尝试相对小的数字,有可能找到匹配的密钥。为防止这些攻击,设计者需要小心计算处理器的周期。当密码进行比较时确保正确和错误的时间是一样的,例如:飞思卡尔的68HC08微控制器的内部存储器载入模块在输入正确的八字节密码后可以访问内部闪存。为达到正确和错误的密码都处理相同的时间,程序中增加了额外的空操作指令。这对时序攻击提供了很好的保护。一些微控制器有内部阻容振荡器,那样处理器的工作频率与电压和芯片的温度相关。这使得时序分析很困难,攻击时需要稳定元器件的温度并减少电源线上的噪声和电压波动。一些智能卡有内部随机时钟信号使得攻击时测量时间延迟无效。三、穷举攻击(也称暴力攻击Brute force attacks)暴力对于半导体硬件和密码来说是另一种意思。对于密码,暴力攻击是对系统尝试数量众多的密钥。通常是使用高速计算机来寻找匹配的密钥。 一个例子是微控制器中的密码保护设置。以TI的MSP430为例,密码本身长度为32字节(256位),抵挡暴力攻击已经足够了。但密码分配在与处理器中断矢量相同的存储器地址。那么,首先减少存储器内矢量一直指向的区域。然后当软件被更新时,只有小部分的密码被修改,因为大部分中断子程序指向的矢量是相同的地址。结果是,如果破解者知道早前密码中的一个,就很容易做系统的搜索,在合理的时间内找到正确的密码。 暴力攻击也可用在ASIC或CPLD的硬件设计来实现。这种情况下,破解者使用所有可能的逻辑组合到元器件可能的输入端并观察所有输出。这种方法也称为黑箱分析(Black-box analysis),因为破解者不知道被测试元器件的情况。通过所有可能的信号组合,尝试获得元器件的功能。这种方法对相对小的逻辑器件很有效。另一个问题是破解者使用的ASIC或CPLD有触发器,故输出将可能是当前状态或输入的状态。但如果预先检查并分析信号,搜索的范围可以显著减少。例如,时钟输入,数据总线和一些控制信号是很容易认出的。另一种可能的暴力攻击,对很多半导体芯片有效,是将外部高压信号(通常是两倍于电源电压)加到芯片引脚上,来试图进入工厂测试或编程模式。事实上,这些引脚用数字万用表很容易发现,因为它们没有保护二极管到电源脚。一旦发现对高压敏感的引脚,破解者就可以尝试可能的逻辑信号组合来加到别的引脚上,找出用于进入工厂测试或编程模式的部分。 破解者也可用元器件的通信协议来找出设计者嵌入在软件中的测试和更新用得隐藏功能。芯片制造商经常提供给后期测试用得嵌入硬件测试接口。如果这些接口的安全保护没有适当设计,破解者很容易利用它来读写片上存储器。在智能卡中,这些测试接口通常位于芯片电路之外,并在测试后从物理上除去。 任何安全系统,不管软件和硬件,在设计上都可能有缺陷,对于破解者来说都是机会,暴力攻击有可能找到它。小心设计安全保护系统,进行适当的评估,可以避免很多问题,并使得这些攻击事实上不可行。四、功耗分析(Power analysis)
一个运算设备的功耗取决于它当前的状态。依照CMOS晶体管的原理,各部分动态时的功耗比静态的要大。当输入电压加到反向器上,会引起一个晶体管短路,这个晶体管电流的增加比静态消耗的寄生漏电要大得多。在电源线上加个10-20欧的电阻,就可以测量电流的波动。为达到更好的效果,需要使用至少12位精度和50MHz采样速度的模数转换器。这些获得的参数可以用来区别处理器的不同指令并估计总线上同时翻转的位数。 通过平均多次重复同样操作的电流,即使是没有通过总线的很小信号也能区别开。有些信号如移位状态特别有用,因为很多密码的密钥产生算法使用移位操作
- μC/OS-II下通用驱动框架的设计与实现(07-23)
- 微控制器省电管理方法(05-04)
- 基于DSP和Cygnal单片机的移动数据处理传输系统 (07-06)
- 从硅片工艺技术到嵌入式软件的全方位低功耗系统设计(01-01)
- 基于IAP的STM32程序更新技术(01-23)
- 发挥ARM Cortex-M3和M4微控制器最大作用的要诀(01-21)