ARM Security Technology

摘要:
Chapter2SystemSecurity2.1Systemsecurity常见三种系统安全方案:Externalhardwaresecuritymodule、Internalhardwaresecuritymodule、Softwarevirtualization,及其优缺点对比。Chapter3TrustZoneHardwareArchitecture3.2SystemarchitectureAMBA3AXI为每个读写通道增加了控制信号,表示Non-Secure或者Secure状态。AWPROT[1]:Writetransaction–lowisSecureandhighisNon-secure.ARPROT[1]:Readtransaction–lowisSecureandhighisNon-secure.所有总线主设备发起传输前必须这是这些信号,总线或者从设备解码逻辑必须符合安全规则。触发进入MonitorMode的手段有:SMC、IRQ、FIQ、externalDataAbort、externalPrefetchAbort。ProcessordebugcontrolTrustZone调试将调试介入控制分成独立配置的4部分:Secureprivilegedinvasivedebug-SPIDENSecureprivilegednon-invasivedebug-SPNIDENSecureuserinvasivedebug-SUIDENSecureusernon-invasivedebug-SUNIDENMultiprocessordebugcontrolCluster中每个核都包含独立的DBGEN、NIDEN、SPIDEN和SPNIDEN。PrimeCellInfrastructureAMBA3TrustZoneProtectionController-BP147:是APB总线具备安全设置功能。

关键词:TrustZone、AMBA3 AXI、AXI-to-APB、Monitor Mode、SMC、SCR NS、CP15、TZAPI等等。

参考文档:《ARM Security Technology Building a Secure System using TrustZone Technology

Chapter 1首先介绍什么是安全?有哪些威胁?需要做哪些工作才能确保安全?

Chapter 2接着介绍了常见系统安全方案?以及TrustZone的硬件安全方案?

Chapter 3然后详细介绍了TrustZone硬件架构:系统架构、处理器架构、调试架构。

Chapter 4罗列了涉及到的所有IP。

在介绍了硬件架构之后,Chapter 5介绍了软件架构:安全启动、Monitor Mode、多处理器安全、TrustZone API等。

最后Chapter 6介绍了一个Gadget2008示例。

Chapter 1 Introduction

Class-breaking attacks:是指一种可复制的攻击,往往是指对同一类设备。

Hack attack:仅可进行软件攻击,包括病毒和恶意软件等。

Shack attack:指低成本硬件攻击,攻击设备较易获取。攻击者往往可以接触设备,但是没有专业设备或专业知识对IC进行攻击。

Lab attack:最复杂最具破坏性的,可以借助实验室设备对设备进行逆向工程。

Chapter 2 SystemSecurity

2.1 System security

常见三种系统安全方案:External hardware security module、Internal hardware security module、Software virtualization,及其优缺点对比。

2.2 TrustZone hardware security

保护关键Key的必须安全模块Cryptographic hardware blocks。

基于TrustZone架构实现安全启动、经过验证的调试。

Chapter 3 TrustZone Hardware Architecture

3.2 System architecture

AMBA3 AXI为每个读写通道增加了控制信号,表示Non-Secure或者Secure状态。

AWPROT[1]: Write transaction – low is Secure and high is Non-secure.
ARPROT[1]: Read transaction – low is Secure and high is Non-secure.

所有总线主设备发起传输前必须这是这些信号,总线或者从设备解码逻辑必须符合安全规则。

AXI-to-APB桥提供了APB外设兼容TrustZone安全技术的能力。

总线传输上的NS位,可以看成是第33给地址位:安全传输32位地址空间,非安全传输32位地址空间。

3.3 Processor architecture

每个物理核被虚拟成两个核:一个安全核、一个非安全核。这两个核的切换由Monitor mode负责

非安全核仅能看到非安全系统资源;安全核可以看到所有资源。

ARM Security Technology第1张

安全世界和非安全世界切换

两个虚拟核通过分时使用物理核实现,他们之间的切换由Monitor Mode负责。

触发进入Monitor Mode的手段有:SMC、IRQ、FIQ、external Data Abort、external Prefetch Abort

CP15的SCR寄存器NS位表示当前安全还是非安全世界执行。

L1内存系统安全

MMU、Caches、TCM、ACP(Accelerator Coherence Port)

中断安全

ARM建议IRQ作为普通世界中断源,FIQ作为安全世界中断源。

如果当前CPU运行在对应安全状态,中断产生后不会导致Monitor Mode切换。反之,则会导致上下文切换,并且跳转到另一个世界执行。

ARM Security Technology第2张

处理器异常向量表包含三组:普通世界、安全世界、Monitor Mode

安全处理器配置

CP15

多核处理器安全

多核处理器中每个物理核都包含一个普通世界虚拟核和一个安全世界虚拟核

如下1个cluster的4核CPU,被虚拟成8个核。

ARM Security Technology第3张

3.4 Debug architecture

ARM的调试解决方案可以分为两部分:处理器调试和系统调试

Processor debug control

TrustZone调试将调试介入控制分成独立配置的4部分:

  • Secure privileged invasive (JTAG) debug - SPIDEN
  • Secure privileged non-invasive (trace) debug - SPNIDEN
  • Secure user invasive debug - SUIDEN
  • Secure user non-invasive debug - SUNIDEN

Multiprocessor debug control

Cluster中每个核都包含独立的DBGEN、NIDEN、SPIDEN和SPNIDEN

Performance analysis

CP15中包含Performance Monitor

System debug control

ARM CoreSight是系统调试解决方案,可用于调试或跟踪处理器和其他系统组件。

Chapter 4 TrustZone Hardware Library

4.1 System IP

  • PrimeCell® High-Performance Matrix - PL301:实现AMBA3 AXI总线,对系统安全和非安全进行系统范围的隔离。
  • PrimeCell Level 2 Cache Controller - PL310:L2缓存,标记每个cache line的安全状态。
  • PrimeCell DMA Controller - PL330:实现安全世界和非安全世界并发工作。
  • PrimeCell TrustZone Address Space Controller - PL380:将一段存储区域划分为若干安全和或非安全区。
  • PrimeCell Infrastructure AMBA3 AXI TrustZone Memory Adapter - BP141:将片内ROM和STAM一段内存设置为安全区域和非安全区域。
  • PrimeCell Generic Interrupt Controller - PL390:设置安全或非安全中断。
  • PrimeCell Infrastructure AMBA3 TrustZone Protection Controller - BP147:是APB总线具备安全设置功能。

4.2 Processor IP

介绍可以作为智能卡安全核的处理器,也可以和TrustZone核结合使用,提供更高安全性能。

Chapter 5 TrustZone Software Architecture

5.1 Software overview

实现TrustZone功能两种软件结构:安全OS和同步库调用。

ARM Security Technology第4张

安全OS缺点是复杂,但是功能更强大。可以模拟实现安全应用并发执行、使用MMU对不同安全应用形成隔离等等。

同步库函数调用实现简单,但是每次技能处理一个安全相关任务、库函数完全被普通世界操作系统通过SMC调用和管理、安全世界不能独立执行。

5.2 Booting a secure system

启动流程

启动过程是一个系统安全的关键点,可以通过更改镜像文件实现系统进行攻击。所以在启动过程中对镜像进行验证是必要的。

所以从Bootrom启动开始,每一步进行安全检查,直到所有安全世界和普通世界运行,形成一个完成的信任链。

一个典型的TrustZone处理器启动流程:

ARM Security Technology第5张

BootRom:负责初始化关键外设,比如初始化外部存储控制器并从中读取二级Bootloader。这里需要对二级Bootlader的合法性进行验证,通过后才能跳转到二级Bootlaoder。

二级Bootloader:负责加载并验证安全OS,通过后启动安全OS。

安全OS:负责启动普通世界OS。

安全启动

安全启动从BootRom开始对启动每个阶段,对每个镜像文件基于密码的检查,杜绝未授权或恶意修改。

加密签名协议:使用PrK对镜像生成一个签名,并且和二进制软件一同发布;设备中存有相应的PuK,PuK可用于验证二进制文件是否被修改。

所有阶段镜像在执行之前必须被验证,才能确保形成完整的启动流程信任链。

5.3 Monitor mode software

模式监控软件管理CPU在安全和非安全状态切换,类似于进程切换:保存将要退出CPU状态,恢复将要进入CPU状态。

普通世界进入模式监控可以通过如下手段:interrupt、external abort、SMC;安全世界进入模式监控通过写CPSR寄存器。

安全模式软件是安全世界和普通世界切换的纽带,一般建议执行期间关闭中断使能。

模式监控上下文切换

模式监控上下文切换需要保存的信息有:

  • 所有ARM通用寄存器
  • 所有协处理器,比如NEON或VFP等。
  • 所有CP15中不同世界独立配置寄存器。

硬件异常:IRQ、FIQ、external abort。

软件异常:SMC。

Lazy context switching:针对VFP和NEON状态保存消耗大的设备。

5.4 Secure software and multiprocessor systems

安全世界的执行会降低普通世界调度效率,可以通过将所有的安全任务仅在一个核上运行。

ARM Security Technology第6张

5.5 TrustZone API

通过TZAPI,非安全世界客户端发送命令到安全世界请求服务。

ARM Security Technology第7张

Chapter 6 TrustZone System Design

一个名为Gadget2008 SOC安全设计方案介绍。

免责声明:文章转载自《ARM Security Technology》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL5.7(64位)windows下的安装【JAVA】将PDF转化成图片下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Windows Server 2008 R2服务器系统安全设置参考指南

重点比较重要的几部 1.更改默认administrator用户名,复杂密码2.开启防火墙3.安装杀毒软件 1)新做系统一定要先打上补丁(升级最新系统漏洞补丁,参考)2)安装必要的杀毒软件3)删除系统默认共享 4)修改本地策略——>安全选项 交互式登陆:不显示最后的用户名 启用网络访问:不允许SAM 帐户和共享的匿名枚举 启用网络访问: 不允许存储网络...

交叉编译工具链(详解)

交叉编译工具链  1、嵌入式开发模型-交叉开发     在嵌入式开发过程中有宿主机和目标机的角色之分:宿主机是执行编译、链接嵌入式软件的计算机;目标机是运行嵌入式软件的硬件平台。                在宿主机执行编译的流程如下:                   2、交叉编译工具链详解 参考: http://www.crifan.com/fi...

I2C调试

I2C调试:   包括SCL时钟线,SDA数据线。 I2C调试工具:i2c-tools ubuntu上安装使用命令 :sudo apt-get install i2c-tools 交叉编译的话需要先下载源码,下载地址如下。然后修改Makefile: 下载地址: https://mirrors.edge.kernel.org/pub/software/uti...

【转载】eclipse调试arm裸机程序

一、集成开发环境 软件部分:eclipse , GDB Server , Jlink软件 硬件部分:Jlink硬件 准备工作1:从SD/NOR Flash启动,格式化nand flash 准备工作2:硬件连接 1. Jlink连接 2. 串口连接 3. nand启动 二、安装GDB Server 解压:tar xvzf arm-linux-gdb-7.5...

linux命令,系统安全相关命令--改变文件属性与权限(chgrp,chwon,chmod)

chgrp 改变所属群组 chgrp命令可以变更文件或目录所属群组,当然,要被改变的组名必须要在/etc/group文件内存在才行。 chgrp基本参数: 1 root@ubuntu:~# chgrp --help 2 Usage: chgrp[OPTION]... GROUP FILE... 3 or: chgrp [OPTION]... --r...

ZYNQ:使用PetaLinux打包 BOOT.BIN、image.ub

说明 个人还是比较喜欢灵活去管理各个部分的源码。 有关文章:ZYNQ:PetaLinux提取Linux和UBoot配置、源码 编译Linux 取得Linux源代码和配置后,可以在其中执行make,编译Linux。 注意,编译前请导入PetaLinux环境变量: 设置和导出ARCH为arm或者arm64; 设置和导出CROSS_COMPILE,比如aar...