当前位置: 首页 > news >正文

【ARM】Trustzone和安全架构

Trustzone的基本概念&背景和历史

什么是Trustzone? 什么是TEE?

Trustzone是一个技术,是一个技术的设计,一个安全架构,既不是软件也不是硬件。
TEE (Trusted Execution Environment) 可信执行环境。就是依托Trustzone所实现的一个安全操作系统。
图1
TZC400,内存过滤单元,要不要挡住,不允许访问。
TAPC,配置controler的安全属性
在这里插入图片描述
在这里插入图片描述
2013 年 Apple 推出了第一款搭载指纹解锁的 iPhone:iPhone 5s,用以保证指纹信息安全的Secure Enclave 技术据分析深度定制了 ARM trustzone 架构,印象中这大概是 Trustzone 技术第一次走进大众视线
在这里插入图片描述
一个大系统中有很多操作系统。从图中可以看出有四个安全状态,Realm state、Non-secure state、Secure state、Root state。还有四个特权等级,每个志状态都可以跑多个虚拟机。

Runtime模型

任意时刻cpu都可能会跳过来进行工作叫做runtime
在这里插入图片描述

交互接口

在这里插入图片描述
从用户交互层到核心业务层的交互,从APPs调用GP Client API,该API是在llbteec.so中实现的。llbteec.so调用在KernelSpace中的tee_driver,KernelSpace中的tee_driver调用ATF中的opteed,opteed把消息转给optee_os,optee_os再把消息转给TA,TA再调用GP Internal Core API使用optee_os上的各种资源。

Processor (v8)

和core、cpu是一个概念
在这里插入图片描述NS=1表示是非安全的processor,程序跑在EL3时可以是安全也可以是非安全。SCR寄存器只有一个,只有SCR_EL3,只有EL3可以操作。

Processor (v9)

在这里插入图片描述
到了v9多了一个NSE比特位,有四种安全状态。后面也主要讨论v8。

安全和非安全状态的切换

在这里插入图片描述
从non-secure切到secure就是切cpu context,切换一堆系统寄存器。
所以只要经过ATF切换cpu context,就能达到SCR寄存器中NS比特位从0到1或从1到0的切换。

Secure Boot

业务安全<—APP安全<—操作系统安全<—SecureBoot<—efuse和签名私钥
<— 依赖关系,业务安全依赖APP安全

efuse

efuse每个比特只能下一次,从0到1

Boot模型

启动模型
在这里插入图片描述
BootROM(BL1)就相当于开机程序,只跑一次。BL1、BL2、BL31统称ATF。

编译和生产流程

在这里插入图片描述
首先对preloade签名,签名后变为preloade,img,sig,签名时首先把preloade,img放到xxxx,img,拿私钥对preloade.img进行签名,签名后生成一个证书cert1,证书中包含公钥。再拿root_priv.pem
密钥对cert1进行签名,签完名生成cert2证书。
私钥签名,公钥验签;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • golang学习笔记18——golang 访问 mysql 数据库全解析
  • Amoco:一款针对二进制源码的安全分析工具
  • HC-SR04超声波传感器详解(STM32)
  • scantf
  • k8s介绍及部署
  • 【Kubernetes】常见面试题汇总(二十四)
  • PWN二进制安全修仙秘籍【第一章#工具篇01】WLS配置tmux分屏、oh-my-zsh命令补全
  • SOCKS4和SOCKS5的区别是什么?
  • Redis Universe: 探索无边界的数据处理星系
  • 上线跨境电商商城的步骤
  • 百度起诉知名站长工具5118
  • SEAFARING靶场漏洞攻略
  • STM32中的计时与延时
  • 多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题MD-MTSP(提供Matlab代码)
  • 1. 如何在Java中连接MySQL数据库?请解释使用JDBC连接的步骤。
  • Docker容器管理
  • GitUp, 你不可错过的秀外慧中的git工具
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • in typeof instanceof ===这些运算符有什么作用
  • linux安装openssl、swoole等扩展的具体步骤
  • Netty源码解析1-Buffer
  • node 版本过低
  • node-glob通配符
  • php ci框架整合银盛支付
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 多线程 start 和 run 方法到底有什么区别?
  • 服务器之间,相同帐号,实现免密钥登录
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 中文输入法与React文本输入框的问题与解决方案
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​flutter 代码混淆
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (四)Controller接口控制器详解(三)
  • (一)基于IDEA的JAVA基础1
  • (转) ns2/nam与nam实现相关的文件
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .Net MVC4 上传大文件,并保存表单
  • .Net Web项目创建比较不错的参考文章
  • .NET 指南:抽象化实现的基类
  • .NET 中 GetProcess 相关方法的性能
  • .sdf和.msp文件读取
  • /bin、/sbin、/usr/bin、/usr/sbin
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)