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

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

3天内不再提示

使用STM32L5 TrustZon保护片上代码的机密性

STM32单片机 来源:STM32单片机 作者:STM32单片机 2021-06-11 17:49 次阅读

STM32L5微控制器系列基于Arm Cortex-M33 内核,充分利用该内核的安全特性,即适用于 Arm V8-M 的 TrustZone技术,从内核到整个芯片系统,实现了安全区域和非安全区域之间的有效隔离。

在调试端口保护方面,TrustZone 和 RDP(读保护)的配合,同样可以实现灵活的调试端口访问控制,有效阻断来自调试端口对片上代码的窥探。

使用 STM32L5 TrustZone 保护片上代码的机密性

调试端口连接可控

在RDP1或者RDP0.5条件下,如果芯片使用了TrustZone上电调试接口就不可连接(具有类似RDP2的效果)

比RDP2更灵活,可以由用户代码控制后续调试端口访问权限,实现安全调试,并保留修改选项字节的可能性

用户片上Flash进一步隔离

安全闪存区域不能被非安全世界任意访问

非安全世界不能访问安全世界的数据

非安全世界不能访问安全世界的外设

非安全世界访问安全世界的函数,需要按照一定规则,不可随意调用

STM32L5 TrustZone 助力代码保护示例

资源在“安全世界”和“非安全世界”之间的分配

示例菜单和测试功能

示例运行注意事项

资源的分配

上电运行安全世界代码,做资源分配

安全世界:

关键操作,关键数据

配合读保护,可以阻断调试端口连接

非安全世界:

人机交互

可以使能调试端口,但是无法访问到安全世界的关键数据和外设

调试端口的连接控制RDP=0

读保护级别为0(芯片缺省状态)

芯片复位可被调试端口连接

调试端口的连接控制RDP=0.5

读保护级别为0.5

硬件保证:CPU处于安全状态时,调试无法连接;包括复位时,运行安全代码时

软件操作:安全代码在跳转到非安全区域之前,关闭调试端口

保护效果

CPU运行在非安全区域时,缺省调试无法连接;可通过身份认证来使能对非安全代码的调试

带身份认证的调试使能

基于“挑战-应答”模型

芯片产生随机序列,合法用户持有匹配私钥对随机序列的签名,才能被芯片使用其存储在安全世界里的对应公钥验签成功

例程运行注意事项

RDP0.5时,S代码自动关闭调试端口。使用STM32CUbeProgrammer hotplug也无法连接;IDE下载NS代码也不会成功;需要用户通过菜单打开调试端口,之后STM32Cubeprogramer才能连接成功,IDE下载也才能成功。

RDP非0时,片上Flash中如果没有可以跑到非安全状态的有效代码,调试端口不再可连 除非改变启动方式,从系统BL启动(系统BL的代码是一定可以跑到非安全状态的) 需要确保可以从系统BL启动(选项字节中的启动控制:nSWBOOT0)

【Q】为何例程没有提供RDP回退的菜单? 【A】TrustZone使能时,RDP回退只能由调试接口或者系统BL完成

例程通过硬件和软件两方面一起作用,实现了对非安全代码的可控调试 硬件:读保护级别不为零+TZ使能 复位时+ 运行在安全代码区域时,调试不可连接 软件:安全区代码在跳转到非安全区代码之前,软件关闭调试端口 菜单【1】、【2】:测试作用,不会集成到产品中 菜单【D】:即使通过通信端口在非安全区注入恶意代码来调用打开调试端口的功能,由于不知道签名所需要的私钥,验证无法通过,不能打开调试端口

原文标题:干货分享 | 代码保护(2)使用STM32L5 TrustZone 特性控制调试端口访问,保护片上代码安全

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    112

    文章

    16361

    浏览量

    178027
  • FlaSh
    +关注

    关注

    10

    文章

    1635

    浏览量

    148016
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    355980

原文标题:干货分享 | 代码保护(2)使用STM32L5 TrustZone 特性控制调试端口访问,保护片上代码安全

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    意法半导体TCPP01-M12赋能USB Type-C保护

    G4、STM32L5STM32U5与TCPP01-M12组合使用,比使用一堆外部设备要划算得多。端口无连接时的零静态电流使TCPP01-M12与众不同。
    的头像 发表于 11-14 11:24 410次阅读

    X-CUBE-CLASSB以及生态系统为何如此重要

    ‍‍‍‍‍‍‍‍ X-CUBE-STL目前支持STM32MP1、STM32U5STM32L5STM32H5STM32WL。实
    的头像 发表于 11-07 14:01 321次阅读

    MSP代码保护功能

    电子发烧友网站提供《MSP代码保护功能.pdf》资料免费下载
    发表于 09-21 09:14 0次下载
    MSP<b class='flag-5'>代码</b><b class='flag-5'>保护</b>功能

    过流保护是怎样与电池组连接的

    过流保护(Current Limiting Fuse)是一种电路保护元件,用于保护电池组免受过大电流的损害。它通过限制电流的流动来防止电池过热、损坏或者发生火灾。过流
    的头像 发表于 09-20 15:46 392次阅读

    过流保护的型号选择要考虑哪些参数

    过流保护,也称为过电流保护或电流限制片,是一种用于电路中保护电子设备免受过大电流损害的元件。选择合适的过流
    的头像 发表于 09-20 15:45 363次阅读

    基于机智云移植STM32L496G代码移植

    前言最近我拿到了STM32L496AGMCU,发现其扩展版可以连接ESP-01S。我想尝试将开发板连接到我们的机智云上,并根据机智云提供的文档进行程序移植。STM32CubeMX移植机智云自动生成
    的头像 发表于 09-20 08:05 414次阅读
    基于机智云移植<b class='flag-5'>STM32L</b>496G<b class='flag-5'>代码</b>移植

    鸿蒙开发:Universal Keystore Kit 密钥管理服务 密钥使用介绍及通用流程

    为了实现对数据机密性、完整保护,可使用生成/导入的密钥,对数据进行密钥操作
    的头像 发表于 07-09 11:56 500次阅读
    鸿蒙开发:Universal Keystore Kit 密钥管理服务 密钥使用介绍及通用流程

    请问STM32L5STM32H5对trustzone有哪些不同?

    STM32L5STM32H5对trustzone有哪些不同?
    发表于 07-04 08:08

    请问STM32怎么在代码中把读保护加进去呢?

    STM32怎么在代码中把读保护加进去呢?
    发表于 04-16 06:28

    STM32L4禁用nJTRST但不中断JTAG要怎么操作?

    如题,我的目标板有一 STM32L432KBU6。现在在开发过程中想要禁用掉 nJTRST 把 PB4 用作 GPIO,但又不想因此中断四线制 JTAG。这该怎么办? 限制条件: 我不用 HAL
    发表于 04-15 06:44

    关于STM32 DMAMUX模块具体的应用示例代码

    有人通过公众号微信留言,询问是否有关于STM32 DMAMUX模块具体的应用示例代码。同时,个人也发现,虽然STM32内的DMAMUX不是什么新模块,似乎还是很多人并不太熟悉。这里借
    的头像 发表于 03-25 09:15 2435次阅读
    关于<b class='flag-5'>STM32</b> DMAMUX模块具体的应用示例<b class='flag-5'>代码</b>

    STM32L5 boot_lock与rdp level配置导致死锁如何解决?

    STM32L5 boot_lock 与 rdp level配置导致死锁,应该如何解决
    发表于 03-20 06:22

    同样的代码stm32l072cbt6改用stm32l053c8t6就出出现了HardFault_Handler的原因?

    我之前使用的是stm32l072cbt6芯片,现在改用stm32l053c8t6,结果在调取芯片uid时出现了同样的代码,却产生了错误
    发表于 03-11 08:31

    STM32无法进入上Bootloader的处理方法

    STM32无法进入上Bootloader的处理方法  当STM32芯片无法进入上Bootloader时,我们需要采取一系列的处理方法来解决这个问题。以下将详细介绍一些常见的处理方法
    的头像 发表于 02-02 14:33 2084次阅读

    基于LL库实现STM32U5 LPTIM功能

    有人打算使用STM32U5系列内LPTIM做低功耗模式唤醒。基于STM32 LL库组织代码,折腾几天后似乎连中断都进不了,想找找是否有现存LL库例程可以参考。
    的头像 发表于 01-07 14:12 1567次阅读
    基于LL库实现<b class='flag-5'>STM32U5</b> LPTIM功能