trust zone之我见

老板交待任务,这个星期我都在研究trust zone的东东,之前有看过代码,但没有深入了解!

好吧,这次看来我要跟它杠上了。

网上有很多资料,但很多讲得太抽象,至少对门外汉来说有些难以理解,我估计有些文单可能翻译过来的吧,有些拗口。

在介绍trust zone之前!我们来看两个字,慢慢引导大家trust zone与之前的安全方式有何不同?

好吧,太熟悉了,你有多少密码?QQ密码有没有?银行密码有没有?支付宝密码有没有?

那你怎么保证你的密码安全?

that is all,够了吗?

还记得11年的CSDN密码事件吗?我也是受害者。

事实证明,还要靠服务商!他们把我们的密码记录在disk上。服务器端上的密码一但被黑客读取,那就麻烦了。

.

系统这块--->比如各种防火墙,各种安全机制。

密码加密--->比如用各种方法加密,越复杂越好,密钥鬼长鬼长的。

其实我们知道,是软件就有漏洞,迟早被破解。

所以人们转向安全芯片的研制:

即:TPM(Trusted Platform Module)

就是把加密解密放在芯片中进行,甚至可把信息存储在芯片里。

理论上来说只有芯片才能解密。但是TPM没有办法保护运行时攻击,比如黑客在你运行进破解,直接去内存读你解密过的东西,这样TPM就形同虚设了。

那么下面的trust zone则完全不同,它从硬件角度做到安全。即受它保护的硬件,就算黑客root了你的设备也没办法访问的,只有生产者自己写的trust app才能访问。

而且secure boot技术保证了别人没办法窜改你的image。

从下面图可知:

黑客入侵系统后,通常喜欢从内存,硬盘获取信息,有些木马还能通过截取你的touch或者display内容获取信息。

这样你防不胜防,除非你不要开机。

什么是trust zone?

Trust zone 是ARM内核中新添加一种架构,从ARM A系统就已经支持。

支持这种功能的CPU会跑在两个世界,普通世界/安全世界。

android跑起后CPU跑在普通世界,运行的是普通世界的APP,当SMC系统调用触发进入安全世界时,CPU跑在安全世界,运行安全世界的APP,安全世界APP里所用到的资源,包括内存,cache,磁盘,touch,display,普通世界的app是不能够访问的,攻击者没办法拿到敏感信息

那trust zone要做到这种隔离?

其实隔离要两方面支持

硬件上:

第一:the core AXI bus:AXI总线,增加一条控制线。

第二:ARM core,可支持虚拟化核

第三:Trust zone Address Space controller:TZASC

第四:Trust zone protection controller:TZPC

软件上:

软件上就是基于第二点可虚拟化核心,加上SMC系统调用,使CPU进入安全世界,跑安全世界的APP。

基于上述一,二,三,四加上SMC调用就可以做安完全隔离了。

先谈谈AXI总线

是内存,片内静态RAM ROM,外设隔离的基础。

主要原理是:AXI总线上每个读写信道都增加了一个额外的控制信号

AWPROT[1]:总线写事务控制信号---低电平为安全写事物,高电平为非安全写事物

ARPROT[1]:总线读事物控制信号---低电平为安全读事物,高电平为非安全读事物

当设备向总线提出读写事物请求时必须将控制信号发送到总线上。总线根据这个信号和CPU当前的世界来判断能否读写。防止非安全程序/设备读写安全设备。

基于AXI总线,内存,片内静态RAM ROM是如何隔离的?

TrustZone通过两个设备来保障物理内存的安全

一个是TrustZone地址空间控制器(TZASC)

一个是TrustZone存储适配器(TZMA)

如下图:

TZASC是AXI总线的主设备,用它可以把内存地址空间划分一系列的内存空间,通过运行在安全世界的软件把部分空间配置为安全、非安全的,TZASC防止非安全事物访问安全内存空间。

使用TZASC的主要目的就是AXI的从设备分区为几个安全设备,防止非安全事物访问安全设备。ARM的DMC本身不支持创建安全,非安全区,为此需要连接到TZASC上。

注:ZASC只用来支持存储映射设备,不能用于块设备,比如NAND FLASH

TZMA是AXI总线的主设备,用它来划分片内RAM,ROM的安全区间

基于AXI总线,外设是如何隔离的?

看上图,由于APB总线没有AXI总线有trustzone安全相关的控制信号,需要APB-to-AXI桥负责,外设还是与APB连接,APB-to-AXI桥有上TZPCDECPORT信号输入,用它来决定配置外设是安全的,非安全的。APB-to-AXI桥杜绝非安全事物访问外设

TZPCDECPORT输入信号可以在SoC设计时静态地设置,也可以通过对TrustZone保护控制器(TZPC)进行编程,在程序运行时动态地设置,也就是说通过TZPC可能动态配置外设是安全的,非安全的。

另外:cache和内存为了支持trustzone安全策略,需要做些扩展。

cache的tag都增加了NS位,用于标识这一行的安全状态,NS=0这一行处于安全状态,NS=1这一行处于非安全状态。

MMU的TLB的tag增加NSTID位,功能与NS一样

现在已经了解trustzone保护内存外设的基本思想。

从上面已经知道,只有CPU安全世界才能起保护作用,那CPU如何进入安全世界的呢?

引入特殊机制--监控模式,负责不同执行环境切换。

未完----

时间: 2024-10-11 01:31:47

trust zone之我见的相关文章

ARM的Trust Zone技术

ARM的Trust_Zone技术是一个系统的Access Control的架构. 与AXI,AHB,APB其中的secure,supervisor信号相关联. 与ARM core的模式相关连,当ARM初始化结束后,默认进入Secure Supervisor的模式. 与Coresight相关连,CoreSight authentication interface中的SPIDEN, SPNIDEN, DEGEN信号. 并且提供一系列的IP核来支持,PL301 Matrix, PL380 Addres

简谈高通Trustzone的实现

从trust zone之我见知道,支持trustzone的芯片会跑在两个世界. 普通世界.安全世界,对应高通这边是HLOS,QSEE. 如下图: 如下是HLOS与QSEE的软件架构图 HLOS这两分为kernel层,user层.user层的通过qseecom提供的API起动trustzone那边的app. qseecom driver 除了提供API,还调用scm函数做世界切换. scm driver 那边接到qseecom的调用后,会把HLOS相关数据(包括指令参数)放入指它buffer,然后

Juniper Netscreen常见

Netscreen常见问题汇总 1.netscreen防火墙可不可以作HA? 目前为止NetScreen-100以上的型号都可以做HA,NetScreen-50在新的OS版本中或许也能做HA. 2.Netscreen是否支持负载均衡?在哪一端? 是,Trust和DMZ区均支持负载均衡. 3.netscreen防火墙支不支持PPPoE拨号? netscreen防火墙的低端产品都支持PPPoE拨号. 4.什么是A/A Full Mesh HA? netscreen防火墙的高端产品支持A/A Full

    Junipersrx100防火墙配置指导

Junipersrx100防火墙配置指导 # 一.初始化安装 1.1设备登录 Juniper SRX系列防火墙.开机之后,第一次必须通过console 口(通用超级终端缺省配置)连接SRX   , 输入root 用户名登陆,密码为空,进入到SRX设备之后可以开始加载基线配置. 特别注意:SRX低端系列防火墙,在第一次登陆时,执行命令 "show configuration" 你会发现系统本身已经具备一些配置内容(包括DNS名称.DHCP服务器等),建议删除这些配置,重新配置. Dele

ASPF(Application Specific Packet Filter)

ASPF ASPF(Application Specific Packet Filter)是针对应用层的包过滤,其原理是检测通过设备的报文的应用层协议信息,记录临时协商的数据连接,使得某些在安全策略中没有明确定义要放行的报文也能够得到正常转发. 通过以下实验说明,ASFP: FTP客户端经过防火墙访问FTP服务器 配置完成后,尝试登陆FTP服务器,可以正常登陆,但是不能够正常进行数据连接. 查看会话状态: 已经成功建立session会话. FTP协议是一个典型的多通道协议,在其工作过程中,FTP

2.uboot和系统移植-第5部分-2.5.uboot源码分析1-启动第一阶段

第一部分.章节目录 2.5.1.start.S引入 2.5.2.start.S解析1 2.5.3.start.S解析2 2.5.4.start.S解析3 2.5.5.start.S解析4 2.5.6.start.S解析5 2.5.7.start.S解析6 2.5.8.start.S解析7 2.5.9.uboot重定位详解 2.5.10.start.S解析8 2.5.11.start.S解析9 2.5.12.start.S解析10 2.5.13.start.S解析11 第二部分.章节介绍 2.5.

centos7的基础文档二

centos7基础文档二 一.centos7的服务控制 1. 服务脚本文件 systemctl对于Linux来说,就是一个init程序,可以作为sysVinit和Upstat的替代. centos7的服务脚本存放在:/usr/lib/systemd/,有系统(system)命令和用户(users)命令之分,像需要开机不登录的就能运行的服务存在系统的服务里,即:/usr/lib/systemd/system目录下,每一个服务以.server结尾.一般会分为三个部分:[unit][service][

JUNIPER搭建站点到站点IPSecVPN 丢包问题解决方案

背景: 公司办公区到租赁机房之间搭建的是一条IPSECVPN,分别是在两边的防火墙设备上搭建的,办公区这边使用的是飞塔防火墙,机房防火墙为juniper防火墙,搭建过程可以参考之前的帖子.之前搭建完成后测试没有问题,一直使用到现在,但昨天晚上公司同事突然说,方法机房网络慢,ping包存在丢包的情况,丢包率大概在1%-2%之间,并且没有规律可言. 解决办法: 1.重启了公司这边的飞塔防火墙上的vpn服务,没有解决问题. 2.重启飞塔防火墙,没有解决问题. 3.在谷歌上查找解决办法,找到以为描述:

Centos7学习笔记 (一)

centos7新特性 一.运行级别 centos7的运行级别由target方式代替06运行级别的描述. centos7下修改默认运行级别: 1.命令 systemctl set-default multi-user.tartget 2.创建软链接:ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target 切换运行级别: systemctl isolate 运行级别 / init 0-6 二.gru