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

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

3天内不再提示

TrustZone是怎样保护片上代码的机密性的?

strongerHuang 来源:STM32 作者:STM32 2021-06-15 15:59 次阅读

STM32L5基于Cortex-M33 内核,其内核基于ARMV8-M架构,自带有TrustZone安全技术,从内核到整个芯片系统,实现了安全区域和非安全区域之间的有效隔离。在调试端口保护方面,TrustZone 和 RDP(读保护)的配合,同样可以实现灵活的调试端口访问控制,有效阻断来自调试端口对片上代码的窥探。

TrustZone 保护片上代码的机密性

调试端口连接可控

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

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

用户片上Flash进一步隔离

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

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

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

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

pYYBAGDIXsyARUS1AAC2rzFcgc8321.jpg

TrustZone 助力代码保护示例

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

示例菜单和测试功能

示例运行注意事项

资源的分配

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

安全世界:

关键操作,关键数据

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

非安全世界:

人机交互

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

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

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

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

poYBAGDIXsWASYafAADWo-ExoC0371.jpg

运行示例

调试端口的连接控制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】:即使通过通信端口在非安全区注入恶意代码来调用打开调试端口的功能,由于不知道签名所需要的私钥,验证无法通过,不能打开调试端口 。

责任编辑:lq6

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

    关注

    2240

    文章

    10675

    浏览量

    348866

原文标题:ARMV8-M中的TrustZone如何保护代码的安全?

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

收藏 人收藏

    评论

    相关推荐

    如何入门STM32CubeU5 TFM应用程序

    • 受保护存储:保护数据的机密性/真实/完整• 内部可信存储:保护内部 Flash 存储器中
    发表于 09-06 07:52

    STM32 MCU TrustZone开发调试技巧分享

    系统隔离与ARM V8-M TrustZone技术、TrustZone地址安全区及资源安全属性配置、TrustZone架构下的HardFault调试与处理 、TrustZone环境中外
    发表于 09-05 06:16

    在ARMv8-M上使用TrustZone

    对安全有着强烈的需求。 可能需要保护的资产包括: ·设备通信(使用加密和身份验证方法)·秘密数据(如密钥和个人信息)·固件(防止IP盗窃和反向工程)·操作(维护服务和收入)ARM®TrustZone
    发表于 09-04 07:11

    适用于裸机应用的ARM Streamline Target设置指南

    本文档包含特定于该产品的信息。 有关其他有用信息,请参阅以下资源。 对ARM文件的访问取决于其机密性: ·非机密文件可在developer.arm.com/Documentation上找到。 下表中的每个文档链接都指向文档的在线版本。 ·只有通过产品包才能向被许可方提供
    发表于 08-25 08:23

    FAST型号固定虚拟平台(FVP)参考指南

    本文档包含特定于该产品的信息。 有关其他有用信息,请参阅以下资源。 对ARM文件的访问取决于其机密性: ·非机密文件可在developer.arm.com/Documentation上找到。 下表中的每个文档链接都指向文档的在线版本。 ·只有通过产品包才能向被许可人提供
    发表于 08-25 07:47

    ARM开发工作室2022.2版用户指南

    本文档包含特定于该产品的信息。 有关其他有用信息,请参阅以下资源。 对ARM文件的访问取决于其机密性: ·非机密文件可在developer.arm.com/Documentation上找到。 下表中的每个文档链接都指向文档的在线版本。 ·只有通过产品包才能向被许可人提供
    发表于 08-25 07:20

    ARM CoreLink™NI-700上网络互连技术参考手册

    本文档包含特定于该产品的信息。 有关其他有用信息,请参阅以下资源。 对ARM文件的访问取决于其机密性: ·非机密文件可在developer.arm.com/Documentation上找到。 下表中的每个文档链接都指向文档的在线版本。 ·只有通过产品包才能向被许可方提供
    发表于 08-25 07:12

    Arm Total Compute 2021参考设计软件开发者指南

    本文档包含特定于本产品的信息。有关其他有用信息,请参阅以下资源。 Arm文件的访问取决于其机密性: •非机密文档可在developer.arm.com/documentation上获取。下表中的每个文档链接都指向该文档的在线版本。 •保密文件只能通过产品包装提供给被许可方
    发表于 08-11 07:54

    安装适用于STMicroelectronics Edition 1.1版的Keil MDK应用说明

    本文档包含特定于该产品的信息。 有关其他有用信息,请参阅以下资源。 对ARM文件的访问取决于其机密性: ·非机密文件可在developer.arm.com/Documentation上找到。 下表中的每个文档链接都指向文档的在线版本。 ·只有通过产品包才能向被许可方提供
    发表于 08-11 07:20

    适用于Linux的ARM Streamline目标设置指南

    本文档包含特定于本产品的信息。有关其他有用信息,请参阅以下资源。 Arm文件的访问取决于其机密性: •非机密文档可在developer.arm.com/documentation上获取。下表中的每个文档链接都指向该文档的在线版本。 •保密文件只能通过产品包装提供给被许可方
    发表于 08-08 06:35

    Arm机密计算架构用户指南

    在本指南中,我们将探讨保密计算在现代计算平台和解释机密计算的原理。然后我们描述Arm机密计算架构(Arm CCA)实现了Arm计算平台中的机密计算。在本指南的末尾,您将能够: •定义机密
    发表于 08-02 08:27

    Armv8-A的可信赖基础系统架构详解

    泛的系统和彼此保护的业务和资产的集合,以确保它们的机密性、真实和完整。 每个目标用例的描述与要保护的资产列表一起提供需要
    发表于 08-02 08:12

    RA6快速设计指南 [8] 使用TrustZone®

    7 使用TrustZone 7.1 Arm TrustZone 技术的实现 某些RA6 MCU(如RA6M4和RA6M5)包含Arm TrustZone (TZ) 安全功能。有关 TZ 实现的完整
    的头像 发表于 06-19 15:25 373次阅读
    RA6快速设计指南 [8] 使用<b class='flag-5'>TrustZone</b>®

    PX5的ARM TrustZone支持让嵌入式系统变得更加安全!

    的高端RTOS产品对ARM TrustZone技术的支持,让开发者能够从硬件到应用程序代码层全面加强设备安全。随着微控制器(MCU)设备部署的增加和相关系统需求的增长,制造商需要在底层更加高效地提高
    发表于 05-18 13:44

    Arm如何让构建支持机密计算的平台变得更容易

    要构建一个支持机密计算的平台,必须解决几个挑战,但主要的挑战是如何在处理数据和代码保护数据和代码。相比之下,通过使用强大的加密、数字签名和细致的密钥管理,
    的头像 发表于 05-08 11:11 659次阅读
    Arm如何让构建支持<b class='flag-5'>机密</b>计算的平台变得更容易