资讯详情

单片机看到这些技术瑟瑟发抖~

761a8d02c77a7e42cb50297a446398a8.png


大家好,我是bug菌~

对于MCU攻防之前也研究过如下入流的东西:

【MCU】可怕,别人把我MCU反汇编固件!(反向)

【MCU】用stm32的UID加密固件(重点加密)

加密解密比开发难多了。它是一个非常全面的操作,包括软件、硬件、结构、物理等,需要对解密对象有非常全面的了解。同时,还应制作自动解密工具和软件。

最近看到了这篇文章MCU攻防技术,收获颇丰,这里也整理并标注与大家分享:

这篇文章是俄国人Sergei P.Skorobogatov在英吉利剑桥大学读博士论文,讲解各种博士论文MCU攻防技术堪称小百科全书。志在研究MCU保护筒可以给你很多参考思路:但是对于想当黑客的人,我们对后果不负责,维护正义一直在进行中。~

非侵入性攻击不需要初始化元器件。组件可以在测试电路中分析,也可以单独连接。这种攻击一旦成功,就很容易普及,重新攻击也不需要花很多钱。此外,使用这种攻击不会留下痕迹。因此,这被认为是对任何组件硬件安全的最大威胁。同时,寻找对特定部件的非侵入性攻击方法通常需要大量的时间和精力。

非侵入性攻击可以是被动或主动的。

被动攻击,也叫被动攻击,不会对被攻击元器件发生作用,但通常是观察它的信号和电磁辐射。如功耗分析和时钟攻击。

2动攻击,如,其特点是在元件上添加信号,包括电源线。

基于上电配置的简单非侵入攻击可以复制SRAM的FPGA。配置芯片的连接JATG接口,用示波器或逻辑分析仪捕捉所有信号。然后可以分析波形,回复独特的命令。

只用一半FPGA伪装盗版的事实可以在资源中轻微改变数据流。在不影响元件运行的情况下,在配置过程中留出一点空间。JTAG接口在发送信号时也有一些自由,所以盗版的波形可以设置为看起来不同于原始信号。此外,破解者可以在上传时交换线路地址,给人的印象是设计完全不同。

半导体制造商为大客户提供了提高产品防破解能力的措施:

这给人的印象是产品是由定制的集成电路设计的。众所周知,ASIC为防止各种攻击提供了良好的保护措施,只有少数经验丰富、装备精良的破解者才能成功破解。这将阻止许多潜在的破解者。但一个自信的破解者会试图用简单的方法来确定芯片是否真的ASIC。

最简单的方法是与数据库中可疑的微控制器相比,这种结果非常可靠,每个微控制器都有自己的引脚特性。

一旦发现类似之处,就把它放在通用烧写器上,试着读出结果。

另一个简单的方法是它通常用于智能卡,但也用于一些微控制器。这不是一个非常可靠和实用的方法。当然,它在智能卡中使用得很好,所有客户都被迫与芯片制造商签扩散协议。

然而,微控制器很少。世界上许多公司都可以提供能够被通用烧写器烧写的微控制器。即使文件中没有烧写规格,所需的波形也可以在几个小时内用低成本示波器覆盖。如果微控制器不得到特殊通用烧写器的支持,仍可通过从制造商购买开发板获得直接完整的协议。

输入值和密钥由半导体芯片在不同时间进行比较。仔细的时间顺序测量和分析可以恢复密钥。该方法最早在1996年的文献中提到。后来,这次攻击成功地解决了实际情况RSA签名智能卡。

为了攻击成功,需要收集与处理时间集成的装置信息,如问答延迟(question-answer delay)。许多密码算法容易被时间攻击,主要是因为。那包括:

1.及时跳过所需的分支和操作条件;

2、使用缓存;

3.不固定时间处理指令,如倍频和分频;

还有很多其他原因。因此,执行能力通常取决于密钥和输入数据。

为了防止此类攻击使用盲名(Blinding signatures)技术。该方法是使用选定的随机数与输入数据混合,防止破解者知道输入数据的数学操作规则。

时间攻击可用于基于密码的微控制器的安全保护,也可用于访问控制系统,如达拉斯iButton产品。这些系统的共同风险是在数据库中重新检查输入的连续数字。系统需要经常检查输入数据库的密钥的每个字节,一旦发现不正确的字节,立即停止,然后切换到下一个直到最后一个。

因此,破解器很容易测量输入最后一个密钥并要求另一个时间,并得到发现的密钥相似性。尝试一个相对较小的数字,可以找到匹配的密钥。

为了防止这些攻击,设计师需要仔细计算处理器的周期。比较密码时,确保正确和错误的时间是一样的,比如飞思卡尔的68HC输入正确的八字节密码后,08微控制器内部存储器载入模块可访问内部闪存。在程序中添加额外的空操作指令,以实现正确和错误的密码处理时间相同。这为时间攻击提供了很好的保护。处理器的工作频率与电压和芯片温度有关。这使得时序分析很困难,攻击时需要稳定元器件的温度并减少电源线上的噪声和电压波动。一些智能卡有内部随机时钟信号,延迟了攻击时的测量时间。

暴力是半导体硬件和密码的另一种含义。

对密码而言,暴力攻击是对系统大量尝试的密钥。

一个例子是微控制器中的密码保护设置。以TI的MSP以430为例,密码本身长度为32字节(256位),抵抗暴力攻击就足够了。但密码分布在与处理器中断矢量相同的存储地址中。然后,首先减少存储器一直指向存储器的区域。然后,当软件更新时,由于大多数中断子程序指向相同地址,只有少数密码被修改。因此,如果破解者知道之前的密码中的一个,就很容易在合理的时间内系统地搜索和找到正确的密码。

也可以使用暴力攻击ASIC或CPLD实现硬件设计。在这种情况下,破解者将所有可能的逻辑组合到组件可能的输入端,并观察所有输出。这种方法也被称为黑箱分析(Black-box analysis),因为破解器不知道被测元件的情况。尝试通过所有可能的信号组合获得元件的功能。

这种方法对相对较小的逻辑器件非常有效。另一个问题是破解者使用的ASIC或CPLD有一个触发器,因此输出可能是当前状态或输入状态。但是,如果提前检查和分析信号,搜索范围可以显著降低。例如,很容易识别时钟输入、数据总线和一些控制信号。

另一种可能的暴力攻击对许多半导体芯片有效,。事实上,数字万用表很容易找到这些引脚,因为它们不保护二极管到电源脚。一旦发现对高压敏感的引脚,破解者可以尝试将可能的逻辑信号组合添加到其他引脚上,找出进入工厂测试或编程模式的部分。

芯片制造商经常为以后的测试提供嵌入式硬件测试接口。如果没有适当设计这些接口的安全保护,破解器很容易使用它来阅读写片上的内存。在智能卡中,

任何安全系统,无论是软件还是硬件,在设计上都可能存在缺陷,这是破解者的机会,暴力攻击可能会发现。仔细设计安全保护系统并进行适当的评估可以避免许多问题,使这些攻击实际上不可行。

计算设备的功耗取决于其目前的状态。

依照CMOS晶体管的原理,各部分的动态功耗大于静态功耗。当输入电压添加到反向器上时,晶体管的电流比静态消耗的寄生泄漏增加得多。在电源线上增加10-20欧元的电阻,以测量电流的波动。

至少需要12位精度和50位才能达到更好的效果MHz模数转换器采样速度。这些参数可用于区分处理器的不同指令,并估计总线同时翻转的位数。

即使没有通过总线的小信号,通过平均多次重复相同操作的电流也可以区分。有些信号,如移位状态,特别有用,。即使不能直接测量状态位的变化,它们通常会改变指令顺序或微码的执行,从而导致功耗的明显变化。

不同的指令导致不同级别的指令解码和操作单元的活动,可以清楚地区分,因此可以推测操作部分。处理器的不同单元在时钟沿不同时间有独特的开关状态,可以与高频仪器分离。

破解密码算法中使用了多种不同的功耗分析技术。整个分析过程相对简单,只需要标准的现有廉价仪器设备。

主要有两种功耗分析技术:

SPA直接观察密码或其他安全相关操作中的功耗,了解设备运行中的密钥数据等信息。如果破解器知道密码算法,则很容易通过观察处理器指令顺序,特别是移位条件移,找到一些位的信息。如果算法或逻辑运算的结果很容易被看出,如进位状态,零或负标志,就可以获得更多的信息。

DPA是种更有效的技术,因为破解者不需要知道密码算法是如何执行的。它使用静态分析和已知密码运算的大量功耗迹线来获取隐藏信息。用统计方法鉴别功耗的微小区别,可用来恢复密钥中的单个的位信息。

功耗特性当然包括噪声部分。额外的噪声可以通过减少获取信号的探针长度并小心使用测量仪器来降低它。测量接在地线上的电阻的功耗有一些优势。首先,减少了噪声电平。其次,可以用示波器的探头直接测量信号,因为大部分探针站有公共的地线与外部电源地相连。

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

 图  左侧是普通的无源探头,右侧是自制的有源探头.

我们对现有的功耗分析步骤进行了改进。这是一种新的方法,尚未有类似的。,那样波形就有点不一样,因为信号的直流成分丢失了,同时又有些有利条件。常用的方法对直流电流几乎没有什么限制。但对于10欧电阻来讲100mA的电流意味着有1V的电压降,那可能中断微控制器的正常操作。减少这个电阻可以解决这个问题,但会使得难以识别功耗的微小变动。

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

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

噪声攻击是快速改变输入到微控制器的信号,以影响它的正常运行。

通常噪声是叠加在电源上或时钟信号上,但噪声也可以是外加的短暂电场或电磁脉冲。在离芯片表面数百微米处放置两根金属针,然后加上少于1微秒的数百伏电压的窄脉冲,晶圆衬底会感应出一个电场,使得邻近晶体管的阈值电压发生变化。

最近出现一种改进的方法:使用几百圈金属线绕在微探针的针尖构成一个小型电感。当电流进入线圈会产生磁场,针尖将集中磁力线。

每个晶体管和与它相连的线路构成有时延特性的RC电路。处理器的最大可用时钟频率取决于该电路的最大延迟。同样的,每个触发器在接收输入电压和由此引致的输出电压之间有个特征时间窗口。这个窗口由给定的电压和温度来确定。如果用时钟噪声(比正常的时钟脉冲要短得多)或电源噪声(电源电压的快速波动)将会影响芯片里的某些晶体管,导致一个或多个触发器进入错误状态。

通过改变参数,处理器会被导致执行许多完全不同的错误指令,有时甚至是不被微码支持的。经管我们不会预先知道何种噪声会导致何种芯片的何种错误,但它能相当简单地进行系统的搜索。

时钟信号的噪声攻击在

实际应用中的噪声通常用来取代跳转条件并试验先前的测试指令。可以在安全密码问询处理时创建一个攻击窗口,简单预防执行这些指令。指令噪声也能用来扩大循环的时间。

如,串口子程序在输出缓冲后再读更多的内容;或在密钥操作时减少循环次数来传一个弱的密码。

为获得噪声,时钟需要临时增加一个或大于半个周期,有些触发器在到达新状态之前就获得输入。时钟噪声通常针对处理器的指令流。对硬件执行安全保护的微控制器没有什么效果。实际中,仅使用时钟噪声来攻击微控制器或智能卡的软件程序接口。

这类保护的破解是相对容易的。如处理器在循环里只执行一个指令,攻击时可用不同的时钟噪声导致处理器误操作。不需要小心地与时钟信号同步,只需要随机制造噪声就可在数次攻击内成功。

插入噪声是相对容易的,无需使用外部发生器,瞬间短路晶振即可。当谐振器在不同的泛音上产生震荡会发出很多噪声。大部分情况下需要在确定的时钟周期内获得所需结果,在这种情况下用信号发生器更好。

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

电源供应电压的波动会导致晶体管阈值电平的漂移。

结果就是一些触发器在不同的时间里采样它们的输入,或读出错误的安全熔丝的状态。通常用瞬间增加电源电压或电压跌落来制造噪声,一般在10个时钟周期内。

电源噪声通常用在微控制器的程序接口上,能影响处理器运行或硬件安全电路。一般地,弱点比时钟噪声更难找到并利用,因为对于时域参数,振幅,上升/下降时间都是变量。

一个例子是上例提到的攻击MC68C05B6.

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

另一个是微芯的老旧的PIC16F84。

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

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

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

处理器一般会把密钥保存在静态RAM里,如果元器件被篡改就会掉电,RAM内容丢失,从而保护密钥不被窃取。

很多元器件把温度低于这个阈值视为发生篡改事件。我们做了一些实验来确定现代SRAM数据保持能力与温度的关系。我们的实验表明传统的思维不再有效。即使在高温下,数据保持能力也是个问题。

数据保持能力不仅仅对SRAM有影响,对DRAM, UV EPROM, EEPROM和闪存也有影响。结果是,仍然可以从已擦除的存储器中获得一些信息。这会给安全设备带来很多问题。

安全工程师都很关注断电后SRAM器件能保持数据的时间。

原因如下:很多产品使用密钥或类似的方法进行加密和别的安全相关的计算,需要不能被读出或改变。

一旦检测到发生篡改,易失传感器会掉电或短路到地。但如果数据保留时间大于破解者打开元器件并对存储器上电的时间,那保护机制就被摧毁了。

在二十世纪八十年代,发现低温能将SRAM的数据保存时间增加到几秒甚至几分钟。对于那个时候的元器件,发现零下20度就可以增加数据保存时间,并且会随着温度的降低而增加保持的时间。

本次试验是重复这个工作,察看2000年后的产品是否也有此特性。

另一个需要关注的是即使部分内容已被破坏,安全信息也能被复原。假设破解者获得了n=128位密钥中的m=115位,也就是90%的信息。他可以通过搜索n!/(m!(n-m)!=128!/(115!13!)=2.12*1017~258个可能的密钥。

通过1万台电脑,每台每秒进行10亿次搜索密钥的操作,破解者只需6个小时就能搜遍所有密钥。如果只有80%的信息,也就是知道128位密钥中的103位,那就有2.51*1026~288种可能。几乎增大了一百倍,破解者要花百万年来搜索密钥,故认为均匀的128位密钥不能被恢复。

看完本文,直呼惊叹,一方面想参观一下MCU攻防科研组实验室,另一方面还真想完整的体验一波解密过程。

看完本文,直呼惊叹,一方面想参观一下MCU攻防科研组实验室,另一方面还真想完整的体验一波解密过程。

来源 :ittbank ,俄国人Sergei P.Skorobogatov就读英吉利剑桥大学之博士论文

本文来源网络,版权归原作者所有。如涉及作品版权问题,请联系我进行删除,感谢~

      觉得有所收获,记得点个哦~

1.芯片都去哪了?美国SIA年度报告揭秘~

2.树莓派偷偷换上新SoC!

3.MCU从入门到躺平

4.车规级MCU国产替代下的选择题:车厂策略激进,直供能成为未来主流?

5.编程语言成功的几大要素

6.碳中和,不确定世界里的确定性

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

标签: 电容传感器电缆丢失怎么办国产低温漂电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台