TrustZone是什么?TrustZone的结构

电子说

1.2w人已加入

描述

TrustZone是什么

基本的安全方式有加密和完整性保护等,加密通过密码口令或是秘钥方式,鉴权用来检查资源是否可用,如果资源遭遇破坏则会导致鉴权失败。由于存在多种攻击方式,软件方式包括软件病毒、恶意软件等,而硬件方式可以通过JTAG引脚、I/O引脚检测、电流电压检测、显微镜查看电路等进行攻击,所以需要从硬件软件层面设计有效系统来对抗攻击。TrustZone是ARM为了防止设备有效资源被拷贝、破坏或篡改,防止被恶意攻击,对资产包括有形和无形资产进行,以防止恶意软件、硬件监视、硬件干预等方式破坏或获取设备信息。Trustzone从处理器、总线、外设等系统层面进行保护,同时考虑减少额外的资源开销。注意时间、开销允许的情况下,不可能阻止所有可能的攻击,只是在一定的时间和资源(钱)的限制内,能够保证不会受到相应的攻击。

TrustZone 将软件硬件部分分为安全世界和正常世界,正常世界器件不可访问安全世界区域器件、存储空间等。TrustZone可以作为实现TPM功能的HSM (hardware Secure module) 模块来使用。对于外设的权限控制TrustZone通过AXI-APB桥来实现,以此兼容外设需求。

ARMv8的特征

ARMv8中包含了trustZone功能,同时提供了SHA、AES等一些加密加速器处理(? 没有注意到TRNG 真随机数处理的相关模块)。另外相对于v7,v8中还提供了64位数据的指令处理,同时增加了SIMD ( Single Instruction Multi Data) 的指令处理。所以在v8中有AArch64和AArch32的处理模式,在AArch64模式下支持128比特的SIMD,在AArch32模式下支持64比特的SIMD处理模式,同时v8有三种配置模式,A Application配置,指示虚拟地址系统VMSA(Virtual Memory System Architecture)及MMU,支持A64、A32、T32指令集;R Real-time配置,支持MPU,支持PMSA(Protected Memory System Architecture),支持A32和T32指令集;M 微控制配置。支持PMSA,低延时中断处理,支持T32变种指令集。三种模式对能力和功耗做了权衡,可适应不同的使用场景。v8 AArch64重新定义了四种等级EL0-EL3模式,其中EL0为最低模式,EL0 用户应用模式;EL1 系统相关功能特权模式;EL2 为Hypervisor 虚拟功能模式;EL3 Monitor用于切换Secure和Non-Secure两种模式。对应32模式增加了Hypervisor和 Monitor 两种模式分队对应EL2和EL3模式,用户模式为EL0,其他FIQ、IRQ、system等模式对应EL1。为了实现Secure world和Non-Secure world的分离,增加了NS比特位的处理,例如CP15 SCR( Secure Configuration Register ) NS的配置。

TrustZone的结构

整体结构: 两个虚拟world使用同一个物理处理器实现,亦即一个实体核有两虚拟核模式,非安全核只能访问非可信系统资源,而安全核可以访问所有资源。两种模式不可共存,时分复用,通过Monitor mode(软件实现两种模式的信息切换)切换。进入monitor通过软件指令Secure Monitor Call (SMC) instructio或硬件机制( FRQ、FIQ、external Data Abort and Prefetch Abort ) 。

软件调度实现

在实现两个不同安全模式切换时,采用Monitor进行两个世界的上下文切换,而对于两个模式的配合可以使用多种不同的方式。安全世界可以拥有自己的操作系统,独立于非安全世界;同样安全功能也可以作为正常模式调用的子模式,或是采用两种极端模式的折中方式。

安全启动与可信链

常见到secure boot、trusted boot、meased boot等,方式有些类似,都是采用签名加密等方式来保证启动及软件的完整和安全性,当然处理方式细节及概念细节上也存在些许差别,例如关于安全启动和可信引导 secure boot、trusted boot,前者保证boot程序正确,后者引导的程序未被修改,采用数字签名技术。可信根 ( 需要NVRAM或OTP One-Time-Progrm方式存储 ) 需要从硬件初始化开始保证每个模块代码的载入都是可靠可信的,可信链即表达了按照链式方式保证每个步骤都是可靠的。

TrustZone典型启动过程

硬件安全的一些理解

通过频率、电源供电等检测、电路、时钟、时序、端口等硬件方式可以得到硬件的具体执行内容,例如正常乘法和加法消耗时间可能就不相同。为了避免这些硬件攻击方式,硬件可以在物理特性上保证消除不同处理的特征差异,如统一执行周期,加入指令噪声,插入特殊或空指令等;而防止ROM / FLASH等内容被读出进行反汇编,则可以采用加密接口的ROM、FLASH等;防止总线数据被读取,可以进行极性反转等操作;同样检测数据是否被修改,可以进行奇偶校验等处理。当然这些处理将带来更多的资源,更多的功耗,所以需要必要的进行权衡取舍,简化无效处理。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分