0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学习笔记|硬件安全属性介绍

jf_pJlTbmA9 来源:STM32 作者:STM32 2023-09-26 17:16 次阅读

STM32H7为例来介绍下主要的硬件安全属性。

wKgZomUDyAyAXAyRAAEuQVOwnas442.jpg

看门狗

独立看门狗和窗口看门狗

看门狗是我们常用到的针对CPU运行状态监测的手段之一。它本质上就是一个定时器,启动之后,需要不断的去刷新(我们通常把这个动作叫做“喂狗”),否则当看门狗的定时器减到规定的值后,就会引起系统复位。我们可以利用它来检测程序是否跑飞,并通过芯片复位,来让系统恢复到正常状态。

STM32 MCU提供两个看门狗,独立看门狗IWDG和窗口看门狗WWDG。

wKgZomUDyA2AfriRAAEMRclSvwk281.jpg

从独立看门狗的名字可以看出,它的特点是拥有独立于系统时钟的时钟。独立看门狗使用LSI时钟,这样使得它与系统时钟分离开,即使系统时钟出现故障,独立看门狗也能正常工作。独立看门狗还支持“硬件看门狗”功能,通过选项字使能该功能后,MCU只要一上电,就会启动运行,开启对系统的保护。

窗口看门狗使用的是系统时钟,它的特点是必须在一个窗口时间内完成“喂狗”的动作,否则就会引起系统复位,所以窗口看门狗对“喂狗”的要求更精确了。窗口看门狗还有一个EWI(early wakeup interrupt)的功能, 这个功能使能后,可以在窗口看门狗引起系统复位之前,先产生一个EWI中断,在这个中断里,给了系统软件一个机会去完成一些必要的安全动作或者数据保存的工作。部分MCU系列的窗口看门狗也支持“硬件看门狗”的功能。

独立看门狗和窗口看门狗都支持在调试模式下“冻结”计数,以及在低功耗模式下继续工作的功能。

电源监测

关于电源检测,STM32MCU的上电复位POR、掉电复位PDR、欠压复位BOR及可编程电压监测(PVD),模拟电压监测(AVD)和电池电压监测等功能可以用来检测VDD,VDDA和电池电压是否在正常的电压范围内。

时钟安全系统CSS

关于时钟的检测,MCU内部的时钟安全系统(CSS)可以用来检测外部高速时钟(HSE)和外部低速时钟(LSE)是否丢失。当检测到HSE时钟丢失后,CSS可以触发定时器的“刹车”功能和系统中断,并自动切换到内部高速时钟HSI,软件可以根据这些触发的事件,制定相应的保护措施。

LSE是RTC的时钟源,当检测到LSE丢失后,RTC不能再使用LSE时钟源,并产生CSS中断,在中断中需要将RTC切换到其他时钟源。

CSS只能检测时钟是否丢失。对于时钟存在但发生偏移的情况,可以通过下图所示的时钟交叉测试来进行检测。

wKgaomUDyA6AE3-gAAAgDTiB6Xs656.jpg

该测试利用了MCU的TIMER模块的输入捕获功能,LSI时钟内部连接到TIMER的一个输入捕获通道,当分别使用HSE或者HSI作为计数时钟时,通过检测LSI的频率是否在正常范围内,从而间接的检测了HSE/HSI的频率。不同STM32系列用到TIMER模块不一样,具体请查看相应的参考手册。

SRAM奇偶校验位

部分STM32系列支持带奇偶校验的SRAM。

奇偶校验可以用来检测SRAM的瞬时和永久性故障。比如由于电磁干扰导致的SRAM中的数据错误。由于奇偶校验的检测原理,使得它只能检测出奇数个的比特位错误,并且也不能对错误数据进行纠正。

STM32 MCU带奇偶校验的SRAM每个字节增加了一位奇偶校验位,所以SRAM的数据总线是36位。在对SRAM进行写操作时,硬件自动计算并存储奇偶校验;当进行读操作时,硬件自动进行校验。如果检测到错误,会立刻产生不可屏蔽中断(NMI),并且可以配置成可以触发定时器的“刹车”功能。

硬件ECC

ECC全称Error Checking and Correcting,是一种错误检查和纠正的技术。跟奇偶校验一样,它也需要额外的空间来存储校验码。比奇偶校验更强的是,ECC可以做到单比特位错误校正和双比特位错误检测。对于由于电磁干扰等原因造成的内存瞬时故障或者永久性故障,ECC都可以检测。ECC检测在读操作时进行,当检测到一个比特位的错误时,读出来的数据就是已经纠正后的数据,当检测到两个比特位的错误时,ECC无法纠正,但是可以告诉应用程序该位置的数据有错。

STM32部分MCU系列(STM32H7/H5/L4/G0/G4/L5/U5/WB)支持Flash ECC,H7/H5/U5支持SRAM ECC和Cache ECC。

当检测到单比特/双比特ECC错误时,出错地址会被自动保存到寄存器中(需要使能该功能),并且可以通过寄存器配置产生对应的错误中断。

检测到双比特错误时,还将触发NMI中断,并可以将出错信号连接到TIMER的“刹车”功能。

请参考AN5342了解更多关于ECC的操作细节。

硬件CRC

在Flash自检的程序中会用到CRC来检测Flash内容的完整性。其检测思路一般是:在程序编译完成后,计算整个程序的CRC值(第一次计算CRC值),然后将这个CRC值添加到可执行文件末尾。再将带有CRC校验值的可执行文件烧录到MCU中。在程序启动后,由程序中的自检代码重新根据当前Flash里内容(不包括预存的CRC校验值)计算一次CRC值(第二次计算CRC值),再与之前预先计算并烧录到Flash中的CRC校验值(第一次计算的值)进行比较,如果一致就通过检测。第二次计算CRC值的时候是由运行在MCU中的自检程序完成的,这部分工作可以利用软件代码完成,也可以利用MCU的硬件CRC完成。

STM32的全系列都提供了硬件CRC的功能,默认使用CRC32多项式0x4C11DB7。

请参考AN4187了解更多关于CRC的使用细节。

存储保护单元MPU

存储器保护单元MPU是Cortex-M内部的组件。Cortex-M0不支持MPU,所以除了基于Cortex-M0内核的STM32F0以外,其他STM32产品都支持存储器保护单元 (MPU)。

MPU可以用来设置部分数据只能被一些特权任务访问或者是只读;可以将SRAM空间定义为“不可执行代码”,从而防止注入攻击代码;可以用来检测堆栈溢出和数组越界;还可以通过MPU设置存储器的缓冲,缓存,共享等属性。

在功能安全的应用中,我们可以利用MPU来对安全相关的关键数据进行隔离,从而防止其被其他程序意外修改。

关于MPU的使用细节,请参考AN4838。

其他

除了前面介绍的这些硬件的功能外,还有:GPIO,Timer,比较器等外设的寄存器锁定功能,可以配置参数不会被软件意外修改。

定时器PWM输出的“刹车”功能,它的目的是保护由PWM信号驱动的功率开关,就是当系统出现故障时,可以触发该功能,关闭PWM输出,保证系统处于安全状态。而触发“刹车”功能的输入信号,既可以是来自MCU内部的系统级故障(比如CSS检测到的时钟失效,SRAM的奇偶校验错误等),也可以是连接到特定引脚的外部信号。不同的STM32系列支持的输入信号来源不同,具体使用请见相应的参考手册。

部分STM32系列还支持“内核进入lockup状态”作为“刹车”功能的触发源。关于“内核进入lockup状态”是指,当MCU已经因为出错进入fault中断后,在fault中断服务程序中又触犯了fault条件,这时就会进入lockup状态。

还有一些外设比如串口,I2CCAN等,也内置有协议错误检测,CRC校验等功能,可以用于该外设使用过程中的安全检测。

STM32内置安全属性还很多,这里就不一一列举了。请参考各个STM32系列的安全手册,来获取详细的信息

来源:STM32

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16018

    浏览量

    343632
  • 看门狗
    +关注

    关注

    10

    文章

    541

    浏览量

    70256
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348768
  • 硬件安全
    +关注

    关注

    0

    文章

    13

    浏览量

    2441
收藏 人收藏

    评论

    相关推荐

    请问搭建智能硬件安全实验室需要什么设备或者是技术?求大神指教

    请问搭建智能硬件安全实验室需要什么设备或者是技术?求大神指教
    发表于 07-30 14:02

    盈鹏飞嵌入式产品CoM-335x登录<硬件安全攻防大揭秘>书籍拉

    `盈鹏飞嵌入式产品CoM-335x登录<硬件安全攻防大揭秘>书籍拉有图有真相!`
    发表于 03-25 15:30

    硬件安全是什么?

    硬件安全技术系列课程详细介绍硬件安全相关的攻击技术和抗攻击设计技术,包括芯片的安全架构设计和安全认证。
    发表于 07-29 09:25

    NodeMCU学习笔记

    NodeMCU学习笔记(1)— 硬件介绍、固件制作、烧录提示:作者使用 ESP8266 进行开发学习。文章目录NodeMCU
    发表于 11-04 07:43

    介绍一种基于硬件安全模块

    访问权限、身份验证和数据以受保护的方式在车内加密。同时,意法半导体推出了全新旗舰 SPC58 H 系列 Chorus 汽车 MCU,旨在保护联网汽车功能并通过其硬件安全模块 (HSM) 安全
    发表于 02-11 07:41

    Arm的***是怎样保证硬件安全

    Arm的***是怎样保证硬件安全的?正好看到有人问这个问题,所以来找专家咨询一下,谢谢
    发表于 08-15 15:12

    副井绞车硬件安全模块与硬件状态显示装置的设计

    东欢佗矿业公司副井绞车硬件安全模块故障严重影响该公司的正常提升运输,硬件安全模块和硬件状态显示装置的设计不仅使得硬件回路故障率大大降低,而且缩短了故障查找和排
    发表于 01-12 17:16 14次下载

    清华大学首次提出用独立的芯片“动态”监测硬件安全

    该技术首次提出用独立的芯片“动态”监测硬件安全,让CPU硬件安全的保障手段从以传统的流程管控和静态检测为主的“事前预防”,扩大到了“事中监测”和“管控危害”,从而构建起了完善的CPU硬件安全防护体系。
    的头像 发表于 11-12 14:26 2964次阅读

    一家硬件安全模块供应商存在漏洞,黑客可远程控制HSM

    安全研究人员发现一家HSM(硬件安全模块)供应商的产品中存在漏洞,黑客可远程完全控制HSM。
    的头像 发表于 06-12 15:12 2300次阅读

    如何将硬件安全模块功能直接集成到车辆的安全概念中?

    在带有嵌入式硬件安全模块的 CPU 上运行的安全堆栈如今被认为是汽车网络安全的核心。 因此,它们也是车辆功能安全的关键先决条件。 在最坏的情况下,针对网络攻击的
    的头像 发表于 08-20 09:22 6094次阅读

    NodeMCU学习笔记(1)--- 硬件介绍、固件制作、烧录

    NodeMCU学习笔记(1)— 硬件介绍、固件制作、烧录提示:作者使用 ESP8266 进行开发学习。文章目录NodeMCU
    发表于 11-01 16:25 17次下载
    NodeMCU<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(1)--- <b class='flag-5'>硬件</b><b class='flag-5'>介绍</b>、固件制作、烧录

    STM32内置硬件功能安全属性

    对于功能安全,ST MCU从芯片内置的硬件安全属性,经过认证的软件自检库和完备的安全文档三个层面来支持STM32用户在系统级进行开发,达到要求的功能
    发表于 02-08 15:44 1次下载
    STM32内置<b class='flag-5'>硬件</b>功能<b class='flag-5'>安全</b><b class='flag-5'>属性</b>

    聊聊硬件安全设计以及硬件安全机制相关的内容

    在系统开发阶段,我们细化了功能安全需求FSR,得到了技术层面可实施的技术安全需求TSR,并将其分配至系统架构中的硬件(HW)和软件(SW)组件,接下来就需要根据硬件相关的TSR进行
    发表于 09-26 11:27 4199次阅读

    Seucre-IC与合作伙伴获得了硬件安全与信任(HOST)的最佳演示奖!

    Secure-IC与NaghmehKarimi博士的团队(SECRETS实验室成员)及巴黎电信的合作者在2023年IEEE国际研讨会上获得了硬件安全与信任(HOST)的最佳硬件演示奖,这是具有标志性的硬件安全方面的会议,在加利福
    的头像 发表于 05-18 10:04 533次阅读
    Seucre-IC与合作伙伴获得了<b class='flag-5'>硬件安全</b>与信任(HOST)的最佳演示奖!

    Autosar硬件安全模块HSM的使用分析

    随着软件日益复杂,并且车载系统和传感器数量稳步增加,车内系统的通讯成几何增长,必须加强密码保护。这种保护可以通过经典的实时汽车开放系统架构(AUTOSAR) 来实现。即便在资源稀缺的情况下,安装合适固件的硬件安全模块(HSM)也是一种永不过时的技术,它可以用来验证您的系统密码。
    发表于 10-30 10:15 341次阅读
    Autosar<b class='flag-5'>硬件安全</b>模块HSM的使用分析