查看: 2817|回复: 0

[分享] SoC中的安全卫士——安全AHB控制器

[复制链接]
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3868

    主题

    7472

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39227
    最后登录
    2025-7-18
    发表于 2023-2-16 08:56:54 | 显示全部楼层 |阅读模式
    SoC中的安全卫士——安全AHB控制器
    一、Cortex-M33 TrustZone


    Cortex M33内置了Arm设计的TrustZone技术,可以实现安全(Secure/S)与非安全(Non-Secure/NS)之间的隔离,提高系统的安全等级。
    恩智浦MCU加油站中已经有若干文章为大家介绍了TrustZone:
    ·LPC55Sxx之TrustZone 技术简介(附培训视频)
    ·LPC55S69安全环境的快速搭建
    ·调试TrustZone时,如何处理HardFault
    ·在LPC55S69-EVK上使用TrustZone详解
    通过上面的文章,想必大家对TrustZone已经有了一些基本的理解。
    TrustZone是内置在Cortex M33内核中的一个功能。安全是一个系统工程,可是,MCU也是一个麻雀虽小但五脏俱全的SoC(System on Chip),内核具备安全的隔离能力,是否能够满足我们对于整个SoC系统的安全隔离要求呢?
    本文以LPC55S69(CPU0为Cortex M33且支持TrustZone)为例,为大家简要介绍安全AHB控制器。




    二、解剖总线上的主从设备


    我们可以简单地把MCU理解为由内核+多种外设构成的芯片,软件工程师编写的代码最终运行在内核中,通过操作外设实现各种各样的功能。
    毫无疑问,内核是总线上的一种主设备,它不仅具有自己的寄存器,还会在运行中主动地向总线上的其他设备(例如内存,flash等)发起访问。
    而大部分外设,都是从设备,例如USART和SPI等外设,只能被动地等待内核或其他主设备的配置,然后实现相应的功能。在运行中,从设备并不具备操作其他设备的能力。
    有一些特殊的外设,例如DMA,USB等外设,与内核类似,它们具有自己的寄存器,并且在运行中,会主动地访问内存、flash甚至是其他外设的寄存器。

    三、只有TrustZone就够了吗?


    那么,在MCU中,通过TrustZone功能,内核可以在运行中从安全状态切换至非安全状态。转移至非安全状态后,内核是无法访问安全区域的资源的。
    如上节所述,总线上有很多主设备和从设备。但是,由于TrustZone是集成在内核中的,TrustZone不能限制内核之外的其他主设备的行为,总线上的其他主设备仍然可以访问安全区和非安全区的所有资源。
    因此,DMA等其他总线上的主设备,仍然可以访问整个地址空间,即使Cortex M33内核被转移至非安全状态,此时Cortex M33内核没有安全区资源的访问权限,仍然可以通过利用其他主设备(例如DMA),访问任意资源。那么此时,DMA等其他主设备就像是一个可以被利用的“漏洞”,这是安全系统不能接受的。
    这时的系统如下图所示,即使Cortex M33被TrustZone的SAU和IDAU严格限制,但其他主设备在总线上仍然是畅通无阻。
    11.png
    四、安全AHB控制器


    安全AHB控制器的英文名称是Secure AHB Controller。
    其实,产生前文所述问题的原因有两个:
    总线上,只有Cortex M33内核CPU0具有TrustZone功能,而其他的主设备没有此功能。站在总线的角度看,只能判断出CPU0 Cortex M33发出的请求和访问是否是安全,却无法判断出其他主设备的访问请求是安全或非安全。
    对于总线上的从设备来说,从设备无法判断来自总线的访问是安全还是非安全的,因此也就无法通过以设置访问规则的方式,拒绝违背访问规则的非法请求和访问。
    安全AHB控制器是NXP LPC55Sxx系列MCU的一个特殊外设。
    安全AHB控制器提供了MSW(Master Security Wrapper),MSW为总线上除CPU0之外的其他主设备,提供了一种简易的类似于TrustZone的功能。总线上除CPU0外的每一个主设备都有一个MSW。
    例如,我们可以通过MSW,将某个主设备DMA0配置为安全主设备,那么在运行中,DMA0发出的所有访问请求,都是安全请求;我们也可以将另一个主设备DMA1配置为非安全主设备,在运行中,DMA1发出的所有访问请求,都是非安全请求。
    有了MSW,从总线的角度看,我们就可以分辨出每一个主设备发出的请求是安全还是非安全。
    安全AHB控制器还为每一个从设备(外设)提供了一个“保安”PPC(Peripheral Protection Checkers),PPC将会恪尽职守,严格检查访问请求是否符合设置的规定章程,并拒绝非法的访问。
    例如,我们可以将位于USART之前的PPC检查规则设置为仅允许安全访问,那么所有非安全访问都被视为非法,并被PPC拒之门外,上文所述被配置为非安全主设备的DMA1也就无法访问和操作USART。
    同时,安全AHB控制器也为内部存储介质(包括RAM,Flash和ROM)提供了类似PPC的“保安”-MPC(Memory Protection Checkers),MPC可以分块地保护各种内部存储介质。
    12.png
    此时总线的架构图如上图所示。
    有了安全AHB控制器的MSW,总线上的所有主设备不仅支持安全侧带信号HNONSEC(安全访问)作为给定访问的安全属性的指示,也支持HPRIV(特权)信号作为特权与非特权属性的指示。(注:本文重点介绍了HNONSEC信号相关的安全与非安全属性,并未详细介绍与HPRIV相关的特权与非特权,这与Cortex M3/M4等内核中的特权与非特权相同)。
    安全AHB总线处理HNONSEC信号,并将其与安全AHB控制器中为从设备的PPC/MPC所设置的安全属性进行比较。如果请求访问的安全属性不违反被访问从设备的安全属性,则允许访问。如果在访问中违反规则发生冲突,则会引发安全冲突中断。CPU0切换到安全模式以处理违规。
    安全是个系统工程,有了安全AHB控制器这个安全守卫,我们的SoC系统才能被滴水不漏地划分为安全世界和非安全世界。
    与此同时,安全AHB控制器还提供了很多功能,可以用来设置SoC安全相关的配置,并且还提供了一些寄存器,用于调试和处理违规访问。关于安全AHB控制器的更多信息,请参考LPC55Sxx用户手册(User Manual)中Trusted Execution Environment相关章节。

    qiandao qiandao
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-18 18:28 , Processed in 0.088182 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表