随着物联网IOT的高速发展,越来越多的智能终端在用户层面普及,大到电网的无线供配电,小到家里的智能开关、智能音箱。让人们在手机上随时随地可以查看到自己家的温湿度和图像,手指点点就能控制电器工作。我们在享受便利的同时,却往往忽视了隐私的保护。操作系统的漏洞、应用安全的不完善,都会导致物联设备被恶意代码注入,从而导致个人账号等隐私泄露。那么如何去防范恶意代码攻击呢?

从当前的技术角度来讲,仅仅通过系统层面的应用数据隔离和虚拟化技术,是不足以提供安全的应用运行环境的。代码可以很轻松的访问整个硬件的RAM与ROM,应用间没有数据隔离机制,这样就避免不了恶意代码的越界访问,也无法防范恶意篡改和关键隐私泄露。TEE(Trusted Execution Environment)技术由此应运而生。

TEE 是 Trusted Execution Environment的缩写,即为可信任执行环境。通常用来进行数字版权管理、移动支付和敏感数据保护,安全等级较高。而可信任环境,依赖于可信任硬件,目前各芯片构架厂商均有自己的TEE技术,例如Intel的SGX,ARM的TrustZone。他们的原理各有差异,但均能实现对关键代码和数据的完全隔离与保护,开发者基于可信硬件和可信系统,来开发可信应用,来保障用户隐私。

TrustZone是 ARM于2008年发布的技术,首先应用在Cortex-A芯片上,旨在保护移动端物联网设备的信息安全。TrustZone的原理主要是将RAM与ROM分配为两个部分,安全区和非安全区。非安全区运行普通的操作系统和应用,例如安卓系统和安卓应用,而安全区运行TEE OS和针对特定应用定制的安全代码。安全区代码对全局地址数据均有访问权限,而非安全区只能访问自身,如果想要与安全区进行数据交互,必须通过预留的API接口。这样用户就可以将密钥和加解密过程放入安全区,封装为安全应用,与非安全区进行交互时也不用担心泄露密钥等关键隐私。如今安卓手机的指纹、支付大多都使用了TrustZone技术,关键隐私仅保存于设备本身的安全区,非安全区的应用无法直接访问,仅能通过特定API接口传递信息。即便最坏情况,非安全应用得知了与安全区通信的API接口格式和位置,但安全区传递出来的是经过私钥加密的签名,而非私钥,私钥仅在安全区内使用并且不会对外直接传递,这就从源头上杜绝了隐私泄露。(只要将RSA运算代码和私钥放入安全区,对外仅传递签名而非私钥,就可避免私钥的泄露。这种方法并不能保障用户的账号绝对安全,但可以保证私钥不会泄露。用户账号的安全性如何,取决于账号管理系统的安全措施和TEE安全应用的编写水平。了解数字签名:数字签名-阮一峰、RSA:RSA非对称加密)

随着物联网的飞速发展,移动互联网已经不仅仅局限于手机、电脑等用户终端,越来越多的开始向智能家居、移动物联网方向渗透。这类设备强调极低的系统功耗、较长的产品寿命、智能化的用户交互体验,但这些设备大多使用无TrustZone技术的Cortex-M芯片,用户的账户隐私在这些设备中保存,极大的增加了隐私泄露的风险。

2016年,ARM公司推出了Cortex-M家族的继承者,分别是Cortex-M23和Cortex-M33 MCU,这两款内核基于ARMv8构架并且加入了TrustZone功能,看中的就是物联网信息安全。其中,Cortex-M23是Cortex-M0+的继任者,主打超低功耗。而Cortex-M33是Cortex-M3和Cortex-M4的继任者,性能更强,具有DSP浮点运算功能。ARM Cortex-M23与Cortex-M33是首款基于ARM公司最新的ARMv8-M架构的嵌入式处理器,而Cortex-M0/0+、Cortex-M3、Cortex-M4和Cortex-M7则是基于上一代的ARMv7-M架构。

Cortex-A与Cortex-M的TrustZone并没有太大功能上的区别,均可实现Secure与Non-Secure的划分,但M系列和A系列架构本身就存在差异,所以从实现上来看略有差异,详情可见ARM官网:ARM TrustZone技术

ARMv7-M的TrustZone比较难用,市面上几乎没有它的产品就很好的说明了这一点,因为它有着一条神奇的规定:基地址(Base Address)必须对齐(Aligned with)到它的尺寸(Size),而且尺寸必须是2的整数次方。就是说如果我想给安全区划分一块274KB的内存,ARMv7-M需要用1KB+16KB+256KB+1KB将其组合出来,这根本上的导致了几乎没有什么RTOS可以很好的使用它的MPU。而ARMv8-M很好的改正了这一点,更改为 起始地址+终止地址

STM32L5为STM32L低功耗家族最新一代的MCU,针对物联网安全设计,已通过PSA level2认证。主要有三方面的特点:系统信息安全、低功耗、系统集成度和性能的提升。

STM32L5采用了ARMv8-M架构下的TrustZone机制,在同一颗芯片上实现了两个世界,安全世界和非安全世界,它们同时存在于同一颗芯片上,但是物理机制又保证了两个世界有可靠的隔离。基于L5的TZ硬件基础,ARM的TF-M已经提供了L5的支持,并经过了PSA level2认证。片上内置的AES加解密引擎、SHA验证模块、PKA公钥算法加速器,为加解密提供了足够的运算能力。

信息安全,不仅仅是加解密,系统上的隔离、代码和执行的保护、安全启动固件的支持也很重要。这些功能元素,L5都有硬件和软件的支持。新加入“代码和执行保护” 硬件,包括灵活的软件隔离、安全启动、密钥存储和硬件加密加速器。TEE系统方面有ISEEM TEE SDK支持,提供了完善的安全启动流程、加解密算法框架,支持SHA、AES、RSA等常用加解密算法。ISEEM固件内置OTA升级功能,可实现硬件在TEE环境下的远程升级,助力TEE技术在IOT领域的应用。

STM32L5提供了嵌入式SMPS降压转换器,可进一步减低MCU的运行功耗。LDO模式下的运行功耗为106μA/MHz,SMPS降压转换器模式下,运行功耗低至62μA/MHz(3V时)。关断电流为17nA,停止模式下为3µA,完整保留SRAM和外围状态时,唤醒时间为5µs。

STM32L5内核为110MHz的Cortex-M33,为Cortex-M4改进而来,同频条件下比Cortex-M4有20%的运算能力提升,相比于Cortex-M0+改进而来的Cortex-M23性能也有比较大的提升。凭借出色的内核,以及对DSP指令和浮点运算的支持,结合ST ART Accelerator™存储器加速技术,STM32L5系列MCU在110 MHz时取得165 DMIPS / 427 CoreMark™的测试成绩。经过市场检验的ST ART Accelerator™是STM32L5 MCU的一项创新的增强功能,现在通过8KB的指令缓存支持内部闪存和外部存储器加速,在软件耗尽外部存储器时可以提高取指效率。

STM32L5引入了新的数字外设,包括即使在系统电压1.8V时也能使USB保持数据传输的内置专用电源的USB Full Speed控制器,以及符合USB Type-C Rev. 1.2和USB Power Delivery Rev. 3.0的UCPD控制器,专为物联网应用而设计。智能模拟功能包括最先进的模数转换器(ADC)、两个功率门控数模转换器(DAC)、两个超低功耗比较器和两个运算放大器,其中两个运算放大器有外部或内部电压跟随电路和可编程增益放大器(PGA)功能。除此之外还有CAN FD工业用通信接口,STM32L5 MCU为工业传感器或控制器、家庭自动化设备、智能电表、健身追踪器、智能手表、医用泵或表计等产品提供一个理想的平台。

STM32L5x2 MCU配备512 KB双区闪存,允许读写同时操作,方便设备管理,并支持错误校正码(ECC)诊断,提高数据安全性;还配备256KB SRAM,支持高速外部存储器,包括单线、双线、四线或八线SPI和Hyperbus 闪存或SRAM,提供SRAM、PSRAM、NOR、NAND或FRAM存储器接口。

好的芯片离不开完善的软件支持,了解完芯片硬件特性后,来看下STM32L5的软件和开发环境。STM32L5提供了完备的软件开发包,包括:HAL/LL库的外设驱动API,FreeRTOS、FatFS、USB协议栈、TF-M安全固件等中间件,以及大量的项目例程。用户可以借助SDK,快速投入到开发进程,搭建STM32L5的TEE运行环境。

IDE可以使用STM32CubeIDE进行一站式管理,完成配置、开发、烧录全流程,亦可使用第三方工具。

后续的文章会结合实际工程,进一步了解STM32L5,以此硬件平台为基础进行TEE开发与应用。

参考的PPT资料来源:STM32L5官方培训课程

STM32L5特性简介 Cortex-M33内核TEE-TrustZone信息安全相关推荐

  1. Cortex M33处理器下移植FreeRTOS V10.2.0的操作记录

    1.前言 本文记录了本人使用Keil V5.28向Cortex M33处理器下的一款MCU进行FreeRTOS V10.2.0的移植操作,过程中描述如存在不当或错误之处欢迎指正. 2.FreeRTOS ...

  2. 重磅!兆易创新推出中国首款Cortex®-M7内核超高性能MCU GD32H737/757/759系列

    关注.星标公众号,精彩内容每日送达 来源:网络素材 中国北京(2023年5月11日)--业界领先的半导体器件供应商兆易创新GigaDevice (股票代码 603986) 今日宣布,正式推出中国首款基 ...

  3. ARM® Cortex®-M内核单片机STM32家族介绍,覆盖STM32F、STM32H、STM32L全系列

     STM32是ARM®Cortex®-M内核单片机.目前提供10大产品线(F0, F1, F2, F3, F4, F7, H7, L0, L1, L4),超过700个型号.STM32产品广泛应用于 ...

  4. i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm® Cortex®-A7内核

    i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm® Cortex®-A7内核 概述 i. MX6UltraLite作为i.MX6系列的扩展,一系列高性能.超高效的处理器 ...

  5. cortex M内核优先级设置

    Cortex M内核中 每个中断都有一个8位的优先级设置寄存器 这个8位的寄存器可以分为抢占优先级和子优先级两个部分(通过设置优先级组设置) 抢占优先级和子优先级有什么用? 举例说明: 有两个中断A. ...

  6. Cortex M3内核架构

    CortexM3内核架构 宗旨:技术的学习是有限的,分享的精神是无限的. 1.ARMCortex-M3处理器 Cortex-M3处理器内核是单片机的中央处理单元( CPU). 完整的基于CM3的MCU ...

  7. python简述列表特征_python高级特性简介

    Python中的五种特性:切片,迭代,列表生成式,生成器,迭代器. 切片 切片就相当于其他语言中的截断函数,取部分指定元素用的. L = list(range(100)) #利用切片取部分元素 pri ...

  8. 32 位 ARM® Cortex®-M0+内核 单片机

    PY32F003 系列微控制器采用高性能的 32 位 ARM® Cortex®-M0+内核,宽电压工作范围的 MCU.嵌入高达 32Kbytes flash 和 4Kbytes SRAM 存储器,最高 ...

  9. 32位ARM®Cortex®-M0+内核单片机 XL32F003系列MCU

    XL32F003系列微控制器采用高性能的32位ARM®Cortex®-M0+内核,宽电压工作范围的MCU.嵌入高达64 Kbytes flash和8 Kbytes SRAM存储器,最高工作频率32 M ...

最新文章

  1. lucene索引文件格式
  2. 我总结的js性能优化的小知识
  3. spring-cloud-config 搭建-入门级(一)
  4. AI:2020年6月23日北京智源大会演讲分享之机器学习专题论坛——09:45-10:25邢波教授《A Blueprint of Standardized and Composable ML》
  5. VS Code阅读Android源码
  6. mysql重连服务器失败_java – MySQL连接器错误“服务器时区值中...
  7. etcd 启动分析_Etcd 架构与实现解析
  8. window系统下的堆栈溢出 作者:ipxodi
  9. 推荐两款超实用的 gRPC 客户端调试工具
  10. mysql frm 恢复_mysql 从 frm 文件恢复 table 表结构的3种方法
  11. ES11新特性_可选链操作符---JavaScript_ECMAScript_ES6-ES11新特性工作笔记064
  12. python怎么读-Python中怎么读写文件
  13. 代码积累与编程能力哪个更重要
  14. 计算机ps论文范文,ps论文范文
  15. 东财《组织行为学B》综合作业
  16. 为什么很多人交易十几年都做不到稳定盈利呢?
  17. ubuntu ftp服务器上传文件,ubuntu ftp服务器上传文件
  18. 名词解释微型计算机,微机原理名词解释
  19. 记录自定义维护视图的修改日志
  20. 【论文简述】CVP-MVSNet:Cost Volume Pyramid Based Depth Inference for Multi-View Stereo(CVPR 2020)

热门文章

  1. 你不努力,就是你的错!
  2. 读书笔记五:TCP/IP详解之RARP逆地址解析协议
  3. jvisualvm性能监控
  4. Android-JNI编程-图文解析
  5. 借助模糊测试 深耕细作你的压力测试
  6. Tomcat源码学习(9)-How Tomcat works(转)
  7. windows server 2003优化设置方法
  8. 【恋上数据结构】排序算法前置知识及代码环境准备
  9. 【matplotlib笔记】plt.subplot()绘制子图
  10. 下载与eclipse匹配的hibernate tools