学习TrustZone可以参考的资料

news2024/12/27 0:04:25

最近看到了一篇学习资料分享的,感觉可以转过来做个记录,除去前辈分享的资料以外,我还觉得ATF的源码里面的DOC目录下的资料也是很不错的,起码可以让你对BL31有个比较不错的认识。当然那个有点太细节了。

最近看PSA安全技术交流微信群里,有一些做网关、车载,以及智能模组等朋友会聊一些TrustZone技术问题,想学TrustZone,但是不知道如何下手。下面将TrustZone的文档以及学习思路整下方便刚接触TrustZone的朋友学习和查找。

在这里插入图片描述

对于做手机、电视和机顶盒的芯片公司来说,大部分朋友对TrustZone已经非常精通了,例如指纹识别、人脸识别、移动支付、数字版权保护、企业应用,TEE-SIM等应用的安全性基本都是通过TrustZone来保护。现在越来越多的IOT,车载设备也开始注重信息安全,今年会越来越多的IOT设备也开始使用TrustZone来增加安全性。

TrustZone是作为Arm架构的安全扩展,也是随着架构的演进来不断的演进,例如Armv8.0-A将Secure Monitor和Secure OS分开大大简化TrustZone的开发难度,到Armv8.4-A时增加了Secure EL2增加了系统安全性和可扩展性,包括GICv1/v2/v3,SMMUv2/v3,TZASC, Security IP, AMBA等都随着TrustZone在向前演进,不过核心机制还是没变,还是CPU有两个安全状态,将系统的资源划分成安全和非安全两部分,通过一些System IP来控制访问权限,类似握手机制,Master和Salve都支持,如果salve不支持,一般需要在salve前面加个wraper来支持。Armv8-M也支持TrustZone,不过今天我们主要介绍时Armv8.x-A的TrustZone。

1、TrustZone白皮书

这份白皮书非常旧,还是介绍的Arm1176JZ,A8和A9,但是也是很多人学习TrustZone的第一份资料,介绍了什么是资产、攻击、和防御,也介绍了安全的三个要素CIA,也介绍TrustZone的硬件安全架构,包含CPU的安全状态,如何进行切换;MMU, TLB和Cache如何支持TrustZone,不过TLB和Cache算是微架构,不同的CPU上实现的方式也有些不太一样;AXI的AxPROT[1]如何区分是安全访问,还是非安全访问。安全中断也是非常重要的一部分,例如在文档中把FIQ作为安全中断,IRQ作为非安全中断,同时GIC也需要相应的支持;安全调试也是比较重要的一部分,例如通过SPIDEN、SPNIDEN、SUIDEN、SUNIDEN来控制不同的调试权限。也介绍了TrustZone软件架构,例如SMC指令,SecureMonitor,中断处理、上下文切换,以及安全启动。让大家明白TrustZone不是一个IP,是一个系统安全架构,不仅仅是包含hardware,还包含software,也包含了很多system IP。

2、Trustzone 平台设计文档 TBBR和TBSA

在这里插入图片描述

TBBR的全称是Trusted Board Boot Requirements,可以简单理解为安全启动的设计文档。安全启动时设计安全SoC的第一部分,基于不可更改的信任根,安全启动和安全升级非常多样化,我们在做安全SoC设计的时候很难去调研所有场景的安全启动要求,如果软件是多个供应商来参与,那么不同的供应商之间互相不信任,那么设计安全启动时就非常复杂。那么可以参考这个文档,这个文档主要介绍安全启动的流程、证书格式,需要支持的加解密算法、以及密钥强度,能满足GP TEE PP的文档要求,也可以涵盖绝大部分的应用场景,可以大大简化设计的时间。
在这里插入图片描述

TBSA的全称是Trusted Base System Architecture,可以简单理解为安全SoC设计的参考,安全是应用来驱动,如果不知道安全场景,对于硬件工程师来说很难去设计安全SoC,例如看总线的安全特性只是多了一个信号,它到底怎么跟安全怎么结合起来,还有OTP到底要留多大,哪些外设要做成安全的,哪些外设要做到动态配置的,安全timer给谁用等,一头雾水。这个文档通过用户隐私、数字版权保护、FIDO,BYOD为例为场景,介绍每个场景下哪些资产要保护,以及是机密性,还是完整性,再往下细分需要哪些软件和硬件支持,以及需要多少资源,这样理解起来就会容易很多,例如文档中会介绍需要哪些外设才能组建一个安全SoC作为参考,例如从CPU、ROM、SRAM、DDR、Fuse、Interrupt、power and clock management、Cryptographic Key,Secure timer、Counter ,Debug,Lifecycle等为例来介绍如何做一个安全SoC,可以简化大家自己摸索的时间。

3、Trusted Firmware-A

在这里插入图片描述

如果用的Armv8-A的CPU的话,还是非常推荐看下Trusted Firmware-A,现在绝大部分的Armv8-A的设备都在用Trusted Firmware-A,有了ATF(Arm Trusted Firmware)后,使用TrustZone也方便了很多。在以前Armv7-A时,很多开发secure OS的公司很痛苦,因为不但要安全OS、安全业务的设计,同时也要兼顾跟平台相关的特性,例如电源管理、安全启动、上下文切换、一些公司私有IP的驱动,如果涉及到多核更加麻烦,往往移植到一个新平台需要花非常大的精力,需要几个月的时间。到Armv8-A以后,有了EL3,可以将跟平台相关、以及通用的特性都可以放到EL3来实现,secure OS可以运行在S-EL1,Arm开发的ATF可以很好解决上面的问题,例如ATF包含了BL1,BL2,BL31,BL32等,可以简单认为BL1是Rom Code运行在EL3,BL2可以理解为Secure bootloader,BL31就是运行在EL3 的Run time services,BL32是运行在EL1的Secure OS,客户也可以替换BL32,换成自己选用的secure os,例如OP-TEE或者商业化的secure os等。ATF可以简单认为是按照TBBR的安全要求来实现了安全启动、安全升级的流程,同时也按照SMC calling covention实现了REE和TEE之间的切换、包括中断处理,按照PSCI实现了power管理,以及为Secure os留了标准的注册接口,让Secure OS更加关注与安全业务,留有标准的注册机制,很容易实现夸平台移植,同时ATF也在不断的向前演进。

4、OP-TEE

在这里插入图片描述

OP-TEE是一个开源Secure OS,也支持32位和64位,现在也有电视,机顶盒、网关设备等在用。如果再Armv8-A的CPU上,是运行在S-EL1,OP-TEE也是符合GP TEE API的规范,主要是三部分组成,一个是optee_os可以看做是OS的内核,也支持静态TA,也支持User TA, 还有一个是optee_client是运行REE侧给Client Application 提供接口,还有一个optee_test可以认为是一些测试用例,包含CA和TA。比较早期是还有一个optee_linuxdriver,现在用的也比较少了 ,因为Linux主分支已经有了TEE driver。

5、GP TEE API

在这里插入图片描述

比较早期时,TEE的API比较碎片化,目前大多数的Secure OS都跟GP TEE API兼容,例如OP-TEE等,但是也有些secure os会有私有的API,也有些朋友在问TEE和TrustZone什么关系,可以认为TEE是比较泛的安全可执行环境的概念,TrustZone是Arm CPU架构的安全扩展,能够通过TrustZone实现TEE。GP TEE API的内容可以参考GP的官网。

6、Armv8.4 S-EL2白皮书

在这里插入图片描述

如上文所说,安全的需求是不断在变化,TrustZone也随着Arm架构的演进在变化,例如比较早期时,运行在Secure world只是一些安全服务库,主要做安全启动和加解密服务,再后来开始运行一些简单的secure os提供的功能也非常有限,例如安全升级,密钥管理,随着安全应用需求的变化Secure os也在变化,例如开始支持多核,支持AI,支持C++,人脸识别,Secure OS越来复杂,在我们可预见的未来可能有支持多个secure os,或者一个Secure OS + 特性的Secure services,从Armv8.4后secure world也开始支持虚拟化,不仅提高了安全性,也提高了系统的可扩展性。例如目前Secure OS可以访问所有的资源,Secure OS也可以访问的Secure Monitor的memory,有了S-EL2之后,可以通过S-EL2可以限制S-EL1的访问权限,例如Secure OS访问不到ATF的代码,也访问不到REE OS的代码和数据。从可扩展性上也会更方便,例如一些secure services或者secure IP driver 不需要移植到Secure OS上,可以提供给标准的API给secure os来使用,隔离的粒度会更细,做安全认证时也相互独立。

安全不是一成不变的,是安全业务来驱动,影响安全的软件架构和硬件架构,以及CPU和IP的演进,例如现在Android应用已经从32位演进到64位,到64位可以通过Armv8.x的PAC,BTI,以及MTE的技术来提高安全性,具体如何提高,找时间在写。

参考资料

内容来自:https://mp.weixin.qq.com/s/WN2vU4fRvg7Im1F_Ru4z9g

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

30多岁想转行,零基础学编程,来得及吗?

“30多岁想转行,零基础学编程,来得及吗?能找到好工作吗?”这类问题,总是反复出现。尤其是最近我受《自学是门手艺》鼓舞,也借着参与 xue.cn 的契机想要把 python 学的全面而完整,也总有朋友找我…

从工地打工,到狂揽10个大厂offer、副业赚100万:培训班出来的程序员是怎么做到的?

七年前我 985 毕业却沦落到工地打工,七年后我已经收到了 10 个大厂 offer 。 你好,我是吴师兄,一位曾经的学霸毕业只能去工地,而如今大厂 offer 拿到手软,Github 全球 TOP100 算法仓库创作者,公众号五分钟…

eclipse和sts安装lombok

eclipse和sts安装lombok 说明 sts 是 eclipse集成springboot的开发环境 所以 sts 和 eclipse 安装 lombok 步骤基本一样 参考网址: https://blog.csdn.net/qq_39826207/article/details/119007580?ops_request_misc%257B%2522request%255Fid%2522%253A%252216708973141680…

算法day57|647,516

目录 647. 回文子串 516.最长回文子序列 动态规划总结篇 647. 回文子串 dp数组的定义 dp[i][j]代表的是区间[i,j]的字串是否为回文字符,如果dp[i][j]为true,否则为false 递推公式 如果s[i]和s[j]相等的话 1.ij 为同一个字符,dp[i][j] True 2 i与j相差1…

Kafka大厂高频面试题:在保证高性能、高吞吐的同时保证高可用性

Kafka的消息传输保障机制非常直观。当producer向broker发送消息时,一旦这条消息被commit,由于副本机制(replication)的存在,它就不会丢失。但是如果producer发送数据给broker后,遇到的网络问题而造成通信中…

火山引擎 DataTester 上线“流程画布”功能,支持组合型 A/B 实验分析

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 在精细化运营的时代,运营活动同样需要有精细化的策略,例如在年末大促活动中,设计 APP 弹窗提醒、满减、会员领券时,我…

C#语言实例源码系列-实现批量更改文件名称大小写或扩展名

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

DeepLearning_Note

这里写目录标题深度学习框架深度学习开发万能公式模型的网络设计和开发:激活函数:几个数据参数:神经网络的输出零碎知识点:深度学习框架 深度学习开发万能公式 ① 问题定义 ② Paddle.vision.datasets(内置数据集&am…

【ROS参数服务器】

参数服务器是以共享方式实现不同节点间数据交互的通信方式。主要用于存储多节点共享的数据,类似于全局变量。ROS中的参数服务器主要包含三个角色,分别是ROS Master(节点管理者)、Talker(参数设置者)、Listener(参数使用者),其中Talker和Liste…

创新京东T7开创“新算法宝典”,图文并茂,全新演绎,太酷了

导言 算法是一门学问,但却总遭到一些程序员的冷落。现在的开发人员,更热衷于编程语言的修炼,以应付面试需求时的需要,所以对算法的学习,稍许忽略了些。实际上,近些年来,各互联网公司对于算法的…

【知识梳理】前端路由的两种模式

一、概述 这是几年前写的的一篇文章,发在了简书上面,现在看来仍然有一些不足,所以再次整理一下发在掘金。 二、什么是单页面应用(SPA)? 首先我们需要了解一下前置的基础知识————SPA(单页面…

S3 #DooTrader 经典组冠军以良好盘感,创下近 900% 收益率摘得桂冠

本届 S3 #DooTrader 慈善杯全球交易大赛现已经进入白热化阶段,第二轮赛事冲刺在即,各位选手摩拳擦掌争取赢得最终的丰厚奖金。目前,领先的选手调整策略和仓位,以保持排位优势。我们看到现阶段经典组 TOP 1 选手已经创造了 1,300% …

WMS类图分析-android12

为什么要分析类图? WMS是一个复杂的模块,就像一个很大的家族,里面有各种角色,认识类图就像是认识WMS模块中的各个角色,不先把人认清楚了,怎么更好的理解他们之间的交互? 我觉得,这…

vue+antd搭建后台管理界面模版(PC端),适配中文、英文、日文 mock数据,开箱即用

vueantd搭建后台管理界面模版(PC端) 完整代码下载地址:vueantd搭建后台管理界面模版(PC端) 技术栈 vue2 vuex vue-router webpack ES6/7 axios antd 阿里图标iconfont 项目预览 http://nmgwap.gitee.io/vue…

【软件工程】实验4:校园二手物品交易过程的UI设计

文章目录校园二手物品交易过程的UI设计通过“用户画像”对用户群体进行分析校园二手物品交易过程UI设计(Figma)校园二手物品交易过程的UI设计 通过“用户画像”对用户群体进行分析 大学校园交易市场特点: 容量大。随着我国高等教育近年来的连…

Kubernetes部署_使用kubernetes部署Mysql主从结构(Kubernetes工作实践类)

文章目录一、前言二、实际操作步骤1:编写namespace脚本步骤2:编写configmap脚本步骤3:编写secret脚本(用来存放mysql密码)步骤4:编写initContainer脚本步骤5:编写StorageClass相关脚本1)权限设置&#xff1…

干货分享 | To B业务的用户运营五要点

随着产业互联网格局的逐渐深化,近年来,To B业务逐渐被互联网改变和赋能。为了更高效地获客和服务,更多的运营手段逐渐被运用在To B业务之中,而To B运营也变得越来越重要。 作为一家To B企业,AdBright常常收到网友的提问…

YOLOV3论文学习

YOLOv3论文链接:https://pjreddie.com/media/files/papers/YOLOv3.pdf 综述 一、摘要 1、320*320的YOLOv3推理时间22ms,准确率28.2mAP,达到了SSD的精确度,推理速度却快了三倍。 2、基于.5mAp Iou 的YOLOv3的检测效果还比较不错&a…

Python使用Pandas导入数据库sql

Python使用Pandas导入数据库sql一、前言二、准备工作三、从数据库导入数据到Pandas一、前言 对于关系数据库的访问,Python社区已经制定出一个标准,称为Python Database API Specification。Mysql,Oracal等特定数据库模块都遵从这一规范&…

QT 学习笔记(十一)

文章目录一、绘图设备1. QPixmap1.1 QPixmap 简介1.2 QPixmap 演示2. QBitmap2.1 QBitmap 简介2.2 QBitmap 演示见 QPixmap 和 QBitmap 的区别。3. QImage3.1 QImage 简介3.2 QImage 演示4. QPicture4.1 QPicture 简介4.2 QPicture 演示二、QPixmap 和 QBitmap 的区别1. widget…