当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]传统的嵌入式软件应用程序存在于单个连续的空间中,具有唯一的ID,内存和代码均坐在一起且易于访问。当然,这使得黑客一旦踏入门,就可以很容易地访问整个系统。嵌入式系统安全的关键是隔离。开发人员可以改善隔离的一种新方法是利用ARM®M23/33微控制器中的新Trustzone®功能。在这篇文章中,我将介绍读者如何使用Trustzone保护安全功能,但仍能从非安全内存区域访问它们。

传统的嵌入式软件应用程序存在于单个连续的空间中,具有唯一的ID,内存和代码均坐在一起且易于访问。当然,这使得黑客一旦踏入门,就可以很容易地访问整个系统。嵌入式系统安全的关键是隔离。开发人员可以改善隔离的一种新方法是利用ARM®M23/33微控制器中的新Trustzone®功能。在这篇文章中,我将介绍读者如何使用Trustzone保护安全功能,但仍能从非安全内存区域访问它们。

在介绍细节之前,讨论有关Trustzone的一些信息将很有用。 TrustZone是ARMV-8体系结构的安全硬件扩展,可提供硬件隔离,从而创建一个可以从中执行软件的安全和非安全区域。这两个区域都有自己的MSP,PSP,MPU和安全区域,甚至有一些非银行寄存器在非安全区域中无法访问。从安全到非安全的过渡,反之亦然,在三个时钟周期内的硬件中都完成了,因此开发人员无需担心添加任何额外的代码来处理过渡;但是,开发人员确实需要关注自己可以正确控制哪些安全功能可以从非安全区域访问。

Trustzone允许开发人员除了指定在安全区域中应执行哪些内存区域,中断和外围设备,还可以安全启动其微控制器。

默认情况下,在非安全区域中执行的代码无法访问安全区域。在安全区域中放置内存位置的任何尝试都将导致异常。问题在于,开发人员可能需要调用安全功能,例如加密库函数,或者可能被认为是安全的外围驱动程序。为此,开发人员需要在其安全的应用程序项目中创建一个接口,该项目成为非安全和安全代码区域之间安全网关的一部分,并允许执行安全函数。安全功能在安全或受信任的区域中执行,使其与非安全代码隔离。

在安全代码和非安全代码之间创建接口是使用ARM_CMSE库完成的,该库是C库扩展程序,以支持安全的可执行文件。该库包含用于创建功能指针的定义,以指向非安全内存,例如cmse_nsfptr_create。编译器本身(例如Keil MDK)还包括诸如CMSE_NONSECURE_ENTRY之类的新编译器属性,该属性告诉编译器,相关函数位于安全内存中,但可以从非安全内存中访问。

创建可访问的安全功能的过程很简单。首先,开发人员可以像其他任何功能一样定义其安全功能,只是在其安全项目中定义了该功能。可以在下面看到一个安全功能:

int mySecureFunction(funcptr_ns,int data){funcptr_ns callback_ns; callback_ns =(funcptr_ns)cmse_nsfptr_create(callback); data = callback_ns(data); Return data;}

有关此代码有几个有趣的观点:

· 该代码利用来自ARM_CMSE.H的funcptr_ns类型,该类型定义了用于访问非安全内存的功能指针的类型

· 从安全区域访问非安全回调函数需要调用CMSE_NSFPTR_CREATE,这将允许在安全区域中访问非安全函数

· Trustzone代码通常使用NS表示非安全,并表示安全

· 如书面,非安全区域无法访问此代码

为了纠正此代码是完全安全且不可访问的事实,开发人员需要使用cmse_nonsecure_entry属性。然后,安全功能定义将从以下方式变化:

int mysecurefunction(funcptr_ns,int data){…}

int mysecurefunction(funcptr_ns,int data)__attribute __(((cmse_nonsecure_call))){…}

添加属性CMSE_NONSECURE_CALL告诉编译器,可以从非安全内存访问此功能。这将允许使用安全的网关指令访问该功能。此外,当安全函数完成执行并准备好跳回非安全代码时,将清除任何非银行寄存器,即在安全区域和非安全区域之间共享的寄存器。清除寄存器可以防止可能存储在非银行寄存器中的任何安全数据暴露于非安全区域。

在这一点上,开发人员将能够编译安全库,然后从其非安全项目中,包括其功能的标头文件,并拨打迈塞克雷功能。

在尝试保护嵌入式系统时,将关键功能与应用程序的其余部分隔离至关重要。应仔细考虑,以决定应隔离应用程序中的哪些功能,甚至将使用哪些机制。 Trustzone是一种嵌入式软件开发人员可以开始用于提高产品安全性的工具。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭