SoC中的安全卫士——安全AHB控制器
- 分类:新闻中心
- 作者:Liu Hao@NXP
- 来源:恩智浦MCU加油站
- 发布时间:2023-03-03 17:05
- 访问量:
【概要描述】 一、Cortex-M33 TrustZone Cortex M33内置了Arm设计的TrustZone技术,可以实现安全(Secure/S)与非安全(Non-Secure/NS)之间的隔离,提高系统的安全等级。 恩智浦MCU加油站中已经有若干文章为大家介绍了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严格限制,但其他主设备在总线上仍然是畅通无阻。 四、安全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可以分块地保护各种内部存储介质。 此时总线的架构图如上图所示。 有了安全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相关章节。
SoC中的安全卫士——安全AHB控制器
【概要描述】
一、Cortex-M33 TrustZone
Cortex M33内置了Arm设计的TrustZone技术,可以实现安全(Secure/S)与非安全(Non-Secure/NS)之间的隔离,提高系统的安全等级。
恩智浦MCU加油站中已经有若干文章为大家介绍了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严格限制,但其他主设备在总线上仍然是畅通无阻。
四、安全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可以分块地保护各种内部存储介质。
此时总线的架构图如上图所示。
有了安全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相关章节。
- 分类:新闻中心
- 作者:Liu Hao@NXP
- 来源:恩智浦MCU加油站
- 发布时间:2023-03-03 17:05
- 访问量:
一、Cortex-M33 TrustZone
二、解剖总线上的主从设备
三、只有TrustZone就够了吗?
四、安全AHB控制器
-
总线上,只有Cortex M33内核CPU0具有TrustZone功能,而其他的主设备没有此功能。站在总线的角度看,只能判断出CPU0 Cortex M33发出的请求和访问是否是安全,却无法判断出其他主设备的访问请求是安全或非安全。 -
对于总线上的从设备来说,从设备无法判断来自总线的访问是安全还是非安全的,因此也就无法通过以设置访问规则的方式,拒绝违背访问规则的非法请求和访问。
关注威旺达网站及微信公众号,了解 NXP MCU更多信息。
扫二维码用手机看
相关新闻
恩智浦发布新一代安全高能效i.MX 91系列,为广泛的边缘应用扩展Linux功能!
恩智浦人工智能创新实践平台正式启动!
MCU在烟感传感器上如何选型
20多年专注半导体
为国内各行业广大用户提供高品质的NXP半导体产品
SINCE 1997
为您量身定制解决方案
威旺达公众号