设计开发要关注处理器周期,破解及其预防措施
扫描二维码
随时随地手机看文章
中央处理器CPU,包括运算器、控制器和寄存器组。是MCU内部的核心部件,由运算部件和控制部件两大部分组成。前者能完成数据的算术逻辑运算、位变量处理和数据传送操作,后者是按一定时序协调工作,是分析和执行指令的部件。
Ⅱ:存储器,包括ROM和RAM。ROM程序存储器,MCU的工作是按事先编制好的程序一条条循序执行的,ROM程序存储器即用来存放已编的程序(系统程序由制造厂家编制和写入)。存储数据掉电后不消失。ROM又分为片内存储器和片外(扩展)存储器两种。
RAM数据存储器,在程序运行过程中可以随时写入数据,又可以随时读出数据。存储数据在掉电后不能保持。RAM也分为片内数据存储器和片外(扩展)存储器两种。
Ⅲ:输入、输出I/O接口,与外部输入、输出(电路)设备相连接。PO/P1/P2/P3等数字I/O接口,内部电路含端口锁存器、输出驱动器和输入缓冲器等电路。其中PO为三态双向接口,P1/P2/P3数字I/O端口,内部驱动器为“开路集电极”输出电路,应用时内部或外部电路接有上拉电阻。每个端口均可作为数字信号输入或输出口,并具有复用功能(指端口功能有第一功能、第二功能甚至数个功能,在应用中可灵活设置)。
MCU器件,除数字I/O端口外,还有ADC模拟量输入、输出端口,输入信号经内部A/D转换电路,变换为数字(频率)信号,再进行处理;对输出模拟量信号,则先经D/A转换后,再输出至外部电路。
再来谈几种如何破解MCU方法及预防措施
一、非侵入式攻击
不需要对元器件进行初始化。攻击时可以把元器件放在测试电路中分析,也可单独连接元器件。一旦成功,这种攻击很容易普及,并且重新进行攻击不需要很大的开销。另外,使用这种攻击不会留下痕迹。因此,这被认为是对任意元器件的硬件安全最大的威胁。同时,通常需要很多时间和精力来寻找对特定元器件的非侵入式攻击方法。这通常对元器件进行反向工程,包括反汇编软件和理解硬件版图。
非侵入式攻击可以是被动的或主动的。被动攻击,也叫侧面攻击,不会对被攻击元器件发生作用,但通常是观察它的信号和电磁辐射。如功耗分析和时钟攻击。主动攻击,如穷举攻击和噪声攻击,特点是将信号加到元器件上,包括电源线。
一个简单的非侵入式攻击可以是复制一个上电配置的基于SRAM的FPGA。接上配置芯片用的JATG接口,用示波器或逻辑分析仪,捕捉所有信号。然后可以通过分析波形并回复独有的命令。
只使用到一半的FPGA资源时,可以轻微改变数据流来伪装盗版的事实。配置时留下一点空间而不影响元器件的运行。JTAG接口在发送信号时序时也有一些自由,故盗版的波形可以设置成看上去与原始信号不一样的。另外,破解者可以在上传时交换行地址,给人的印象是完全不同的设计。
防护与安全
半导体制造商给大客户提供了增强产品防破解能力的措施:包装上的客户印字代替了标准的芯片型号。这给人的印象是产品是由定制的集成电路设计的。众所周知,ASIC提供了很好地保护措施来防止多种攻击,只有极少数经验丰富且装备精良的破解者才有可能成功破解。这会使很多潜在的破解者望而却步。但一个信心坚定的破解者会尝试用简单的方法确定芯片是不是真的ASIC。最简单的方法是观察连接到电源,地,时钟,复位,串口或别的接口的引脚。与数据库中被怀疑的微控制器相比较,这种结果非常可靠,每种微控制器都有自己的引脚特点。一旦发现相似的,就把它放在通用烧写器上尝试读出结果。
另一个简单的方法是限制访问程序存储器。通常用在智能卡中,但一些微控制器中也用到。这不是很可靠且实用的方法。当然在智能卡中用得很好,所有的客户被与芯片制造商迫签署不扩散协议。但微控制器极少这样,能被通用烧写器烧写的微控制器世界上很多公司都能提供。即使文件中没有烧写的规格,用低成本的示波器几个小时就可以套出需要的波形。如果微控制器不被特殊通用烧写器所支持,仍然可以通过从制造商购买开发板来获得直接完整的协议。
二、时序攻击(Timing attacks)
一些安全相关的操作使用输入的值和密钥,由半导体芯片执行不同的时间来比较。小心的时序测量和分析就能恢复出密钥。这个方法最早在1996年的文献上提到。稍后这种攻击成功破解了实际的RSA签名的智能卡。
为了攻击成功,需要收集装置的信息,与处理时间整合比较,如问答延迟(question-answer delay)。很多密码算法容易受到时序攻击,主要原因是软件来执行算法。那包括执行适时跳过需要的分支和操作条件;使用缓存;不固定时间处理指令如倍频和分频;还有大量的其他原因。结果就是执行能力典型地取决于密钥和输入的数据。
为防止此类攻击可以使用盲签名(Blinding signatures)技术。这个方法是利用选定的随机数与输入数据混合来防止破解者知道输入数据的数学运算法则。
时序攻击可用在安全保护是基于密码的微控制器,或使用确定数字的卡或密码来进行访问控制的系统,如达拉斯的iButton产品。这些系统中共有的风险是输入的连续数字在数据库进行再次校验。系统需经常检查输入到数据库的密钥的每个字节,一旦发现不正确的字节就会立即停止,然后切换到下一个直到最后一个。所以破解者很容易测量出输入最后一个密钥倒请求另一个的时间,并得出发现的密钥相似度。尝试相对小的数字,有可能找到匹配的密钥。
为防止这些攻击,设计者需要小心计算处理器的周期。当密码进行比较时确保正确和错误的时间是一样的,例如:飞思卡尔的68HC08微控制器的内部存储器载入模块在输入正确的八字节密码后可以访问内部闪存。为达到正确和错误的密码都处理相同的时间,程序中增加了额外的空操作指令。这对时序攻击提供了很好的保护。一些微控制器有内部阻容振荡器,那样处理器的工作频率与电压和芯片的温度相关。这使得时序分析很困难,攻击时需要稳定元器件的温度并减少电源线上的噪声和电压波动。一些智能卡有内部随机时钟信号使得攻击时测量时间延迟无效。[!--empirenews.page--]