特别是在医疗和军事应用中,数据安全性和设备的持续安全运行至关重要。 MCU制造商具有内置的众多功能,如果使用得当,通常可以检测并响应设备故障,以及存在未经授权的代码。本文将研究领先的半导体供应商使用的一些硬件安全功能及其检测和响应异常的策略。
什么是安全性?
安全系统基本上是一个无法被未授权方复制,损坏或接管的系统。虽然这通常被认为是防火墙或软件问题,但MCU制造商正在越来越多的内置硬件安全措施,可以帮助您防止,检测或最坏的情况从嵌入式系统的攻击中恢复。在嵌入式设计中需要考虑安全性的三个方面:
机密性适用于您无法承受的密码或加密密钥等信息。硬件加密模块可以极大地提高数据机密性。
完整性对于正在处理的数据以及MCU的不同组件,特别是闪存以及根表和结构至关重要。 MCU具有各种启动例程,旨在检查片上存储器和外设的完整性。
真实性。如果你不能确定数据的完整性,至少要确保它是真实的,也就是说,攻击者没有改变它。
安全启动
几乎所有的MCU都至少检查过首次初始化或从低压状态恢复时的操作完整性。这些检查在上电复位(POR)或掉电复位(BOR)期间发生,但在正常操作期间也可能由于访问冲突而触发复位。某些MCU在启动时可能会进行进一步的系统检查。
德州仪器(TI)的MSP430 MCU是首批采用超低功率外壳的产品之一。 MSP430G2230IDR不是专为大量网络应用而设计的,它包含专用的安全功能。 MSP430的闪存控制器报告访问冲突,以响应任何错误的写入闪存的尝试。此外,任何对高字节中除0A5h以外的任何值的FCTLx寄存器的写操作都会被报告为安全密钥违规。看门狗定时器也是如此。当MSP430首次上电或VCC在掉电事件后重新上电时,会产生上电复位(POR)信号,从而产生上电清零(PUC)信号。如果PUC来自POR,则芯片开始正常初始化,激活CPU和外设。但是,如果看门狗定时器或闪存控制器生成PUC信号,报告安全密钥违规(图1),则设备将保持在复位状态,直到问题得到解决。
图1:MSP430中断优先级(由德州仪器公司提供)。
内存保护
检测篡改看门狗定时器或闪存内容的企图是防止嵌入式系统接管或至少防止数据损坏的关键。但是,也可以简单地防止攻击者首先访问您的启动代码。 MSP430包含一个安全保险丝,可保护编程到闪存中的代码。
如果第三方无法读取或写入MCU上的嵌入式闪存,则可以有效防止它们篡改设备。瑞萨RX631提供多种保护设置,以防止第三方访问片上闪存(图2)。它们提供三种类型的保护:
ID代码保护 - 在启动模式下启动MCU并与PC等主机设备建立串行通信接口(SCI)连接后,执行身份验证阻止第三方连接和编程,读取或擦除片上闪存。
片上调试器ID代码保护 - 在单片机模式或用户启动模式下启动MCU后并且与片上调试器建立连接,执行ID认证以防止第三方连接和编程,读取或擦除片上闪存。
ROM代码保护 - 当使用PROM编写器,第三方无法编程,读取或擦除片上闪存。
通过分配控制代码,ID代码或ROM来启用各种保护功能码。控制代码和ID代码分配给0xFFFFFFA0,ROM代码分配给0xFFFFFF9C。尝试连接时执行身份验证;如果验证失败,则不允许连接,从而阻止读取,编程或擦除片上闪存。
图2:RX631保护设置选择表(由Renesas提供)。
嵌入式开发人员需要开发一种策略来检测尝试写入未分配内存部分的代码。一种方法涉及用未定义的指令填充空白存储器。当非法代码尝试访问此内存时,它将生成未定义的指令中断,提醒CPU采取纠正措施。
Microchip的PIC24H MCU为程序闪存提供引导和程序安全性(CodeGuard)。 PIC24H MCU支持数据RAM保护功能,可在与引导和安全代码段安全性结合使用时保护RAM段。与软件加密库配合使用时,CodeGuard Security使多方能够在单个芯片上安全地共享资源(内存,中断和外设)。
启用后,BSRAM(引导段的安全RAM)只能从引导段闪存代码访问,而SSRAM(RAM的安全RAM段)只能从安全段闪存代码访问。任何尝试更改受保护段中受限制的位置都会导致安全性重置。
Well ARMed
大部分MCU基于ARM内核,提供各种硬件安全功能,芯片供应商可以构建这些功能。
较大的MCU可能使用ARM®Cortex™-A系列处理器,其中包括TrustZone安全扩展。 TrustZone硬件架构(图3)对硬件和软件资源进行分区,使它们存在于两个域中:所谓的敏感资源安全世界和所有其他领域的普通世界。这两个世界通过支持TrustZone的AMBA3-AXI总线结构进行通信,该结构在两个域之间创建了一个强大的边界边界,确保Normal World组件无法访问Secure World资源。
图3:ARM TrustZone硬件架构(由ARM提供)。
TrustZone架构允许单个核心通过称为监控模式的上下文切换运行两个虚拟处理器(每个域一个),严格控制对其的访问以确保两个域的安全性。您可以在Secure World中运行单独的安全操作系统,也可以在其中放置同步代码库。还可以实现一个安全的内核,该内核可以运行多个同步的Secure World应用程序,与普通世界中发生的情况无关。
536 MHz Atmel SAMA5D3 MCU基于Cortex-A5,集成了128 KB RAM,128 KB闪存和高数据带宽架构。凭借其安全启动机制,用于加密的硬件加速引擎(AES,TDES)和散列函数(SHA),SAMA5D3可确保反克隆,代码保护和安全的外部数据传输。
能够对两个操作系统进行分区可以提供出色的安全性,但是这条路线会带来成本,复杂性和代码大小等问题。 MCU更常用于Cortex-M系列处理器,这些处理器针对低成本,低功耗,混合信号嵌入式应用进行了优化,如智能计量,汽车和工业控制系统,便携式消费产品和医疗设备。 Cortex-M4,Cortex-M3和Cortex-M0 + MCU包括一个可选的内存保护单元(MPU),可提供细粒度内存控制,使应用程序能够实现安全权限级别,并在任务中分离代码,数据和堆栈 - 任务基础。 ARM许可证持有者通常会实施其他安全功能
Cortex-M4处理器(图4)是M系列中最大的处理器。为了安全起见,它们提供可选的8区MPU。如果在没有所需权限的情况下访问内存区域,则会引发权限错误,触发不可屏蔽中断(NMI),启动RTOS或应用程序代码的保护操作。 MPU特别适用于必须保护某些关键或认证代码免受其他任务不当行为的应用程序。
图4:ARM Cortex-M4框图(由ARM提供)。
除了MPU之外,STMicroelectronics的基于Cortex-M4的STM32F2 MCU还具有CRC计算单元,可验证数据传输或存储完整性。 CRC计算单元帮助在运行时期间计算软件签名,以与在链接时生成并存储在给定存储器位置的参考签名进行比较。
Cortex-M3处理器基本上是没有DSP指令的Cortex-M4和一个(可选)浮点单元。德州仪器(TI)的Stellaris M3系列包括Cortex-M3 MPU以及只能在特权模式下访问的系统控制模块(SCB)寄存器。此外,闪存控制器(FMC)允许您以2 KB的块为基础应用闪存保护。
Silicon Labs基于Cortex-M3的SiM3C167 Precision32 MCU具有寄存器锁定和锁定机制,可防止任何从固件中不期望地访问外围设备(图5)。必须写入一个密钥序列,以便KEY寄存器修改PERIPHLOCKx中的任何位。随后对KEY的任何写入将禁止PERIPHLOCKx的任何访问,直到通过KEY再次解锁为止。如果外设寄存器被锁定,则所有写操作都将被忽略。无论外设的锁定状态如何,都可以始终读取寄存器。产品培训模块“Precision32 ARM Cortex-M3 MCU简介”提供了对产品的更多信息。
图5:Precision32外设锁定方案(由Silicon Labs提供)。
低功耗Cortex M0 +处理器还包括可选的8区MPU,可用于更大的同类产品。飞思卡尔基于Cortex-M0 +的Kinetis KL02增加了安全电路,以防止未经授权访问RAM和Flash内容。当Flash安全性处于活动状态时,SWD端口无法访问MCU的内存资源。
恩智浦LPC4350在单芯片上集成了Cortex-M4处理器和Cortex-M0协处理器。虽然微小的Cortex-M0缺乏安全功能,但较大的内核占用了空间。除了MPU之外,LPC4350还提供硬件来保护存储的数据内容,并加速数据解密,数据完整性和原始证据的处理。其AES引擎支持128位ECB/CBC解码和CMAC哈希计算。
全部0条评论
快来发表一下你的评论吧 !