
arm-trustzone
文章平均质量分 78
arm-trustzone
kunkliu
good good study
展开
-
ARM Trusted Firmware分析——编译选项
参考文档:《Build Options》1. 通用部分BL2/BL31/BL31:指定生成fip文件的BL2/BL31/BL32镜像路径,指定后则不需要编译BL2镜像。BL2_AT_EL3:使能后BL2镜像会运行在EL3异常等级。BL2_IN_XIP_MEM:使能后BL2会运行在XIP存储设备上。只需要在RAM上初始化读写段,RO代码段不需要拷贝。BL32_EXTRA1/BL32_EXTRA2:生成fip的TOS Extra1/Extra2镜像路径。DISABLE_BIN_GEN.转载 2022-04-12 11:04:28 · 1608 阅读 · 0 评论 -
[ATF]文档编译docutils
在ATF根目录make help可以看到编译文档的选项 ```cmake help...doc Build html based documentation using Sphinx tool...```执行make doc如果报错缺少xx软件,需要先安装一下依赖 先安装编译文档所需要的依赖 pip install -r docs/requirements.txt 也可以cd doc下直接make cd docmake...转载 2022-04-12 10:43:24 · 299 阅读 · 0 评论 -
ATF(Arm Trusted Firmware)/TF-A Chapter 05 BL2
写在最前 二级boot的实现方案有很多,比如bl2,u-boot、uboot-spl, uefi。 bl2的主要职责就是将后续固件如u-boot。kernel,SCP或者其他异构核的固件,加载到ram中。 对于一个ARMv8架构的Core,比如A35,A53,A7x来说,大部分SoC设计厂商会使用ARM推荐的启动方式:ARMv8 AARCH64,Single Core Boot。 这样,Cold boot是,EL3,ARMv8 Aarch64,加载bl2,可...转载 2022-04-12 09:03:52 · 1930 阅读 · 0 评论 -
ATF(Arm Trusted Firmware)/TF-A Chapter 04 Authentication Framework
4.1. 代码分析 首先,重新分析之前忽略掉的 TRUSTED_BOARD_BOOT =1 的情况,bl1_platform_setup->arm_bl1_platform_setup->arm_load_tb_fw_config. 看138行,load_auth_image会调用load_auth_image_internal: 此时会执行236行宏控制的代码。243行,首先找到这个id的父id,递归调用认...转载 2022-04-12 09:03:28 · 766 阅读 · 1 评论 -
ATF(Arm Trusted Firmware)/TF-A Chapter 02 BL1-ROMCode - Continued(2)
第二章目录: Chapter 02.TF-A(Arm Trusted Firmware, ATF ) BL1-ROMCode Chapter 02.TF-A(Arm Trusted Firmware, ATF ) BL1-ROMCode - Continued(1) Chapter 02.TF-A(Arm Trusted Firmware, ATF ) BL1-ROMCode - Conti...转载 2022-04-12 09:02:57 · 478 阅读 · 0 评论 -
ATF(Arm Trusted Firmware)/TF-A Chapter 02 BL1-ROMCode - Continued(1)
第二章目录: Chapter 02.TF-A(Arm Trusted Firmware, ATF ) BL1-ROMCode Chapter 02.TF-A(Arm Trusted Firmware, ATF ) BL1-ROMCode - Continued(1) (本文) Chapter 02.TF-A(Arm Trusted Firmware, ATF ) BL1-ROMCode - Continued(2) 下一章: Chapter 03.TF-...转载 2022-04-11 19:32:28 · 759 阅读 · 0 评论 -
ATF(Arm Trusted Firmware)/TF-A Chapter 02 BL1-ROMCode
第二章目录: Chapter 02.TF-A(Arm Trusted Firmware, ATF ) BL1-ROMCode(本文) Chapter 02.TF-A(Arm Trusted Firmware, ATF ) BL1-ROMCode - Continued(1) Chapter 02.TF-A(Arm Trusted Firmware, ATF ) BL1-ROMCode - C...转载 2022-04-11 19:31:23 · 1021 阅读 · 0 评论 -
ATF(Arm Trusted Firmware)/TF-A Chapter 01. 介绍
1.TF-A 介绍 TF-A是一套通用的软件架构+特定于平台的实现代码。 TF-A满足大多数SoC厂商的CPU设计:单核启动,多核启动,自定义reset vector,可裁剪的启动阶段,bootrom多平台支持,SCP-AP通讯,COT,FW update, all in one package,factory test等等。 SoC厂商需要理解ARM的firmware design,并根据ARM提供的porting guide,同时熟悉ARM的PSCI,TB...转载 2022-04-11 19:29:19 · 1942 阅读 · 0 评论 -
ATF之BL1跳转到BL2的过程
0x00 Intro ATF(ARM Trusted Firmware)作为一个bootload,其本身最终要的作用就是load各阶段的镜像到执行地址,然后跳转过去继续执行。 根据以往经验,ARM处理器跳转到不同的镜像可以通过直接修改PC寄存器来实现。当然除了修改PC寄存器可能还需要在跳转之前初始化相关的环境、以及后续堆栈等。 这篇文章就是记录ATF从BL1跳转到BL2的过程。 0x01 总体时序 先放整体时序图,图中仅保留和跳转相关的函数。入口是BL1的en...转载 2022-04-11 09:18:28 · 942 阅读 · 0 评论 -
6. ATF(ARM Trusted firmware)启动---bl32(OP-TEE)
在bl31中的runtime_svc_init函数会初始化OP-TEE对应的service,通过调用该service的init函数来完成OP-TEE的启动。 1. opteed_setup OP-TEE的service通过DECLARE_RT_SVC宏在编译的时候被存放到了rt_svc_des段中。启动该段中的init成员会被初始化成opteed_setup函数,该函数的内容如下: int32_t opteed_setup(void){ entry_point_info_t *op转载 2022-04-11 09:18:12 · 1082 阅读 · 0 评论 -
5. ATF(ARM Trusted firmware)启动---bl31
在bl2中通过调用smc指令后会跳转到bl31中进行执行,bl31最终主要的作用是建立EL3 runtime software,在该阶段会建立各种类型的smc调用注册并完成对应的cortex状态切换。该阶段主要执行在monitor中。 1. bl31_entrypoint 通过bl31.ld.S文件可知, bl31的入口函数是:bl31_entrypoint函数,该函数的内容如下: func bl31_entrypoint#if !RESET_TO_BL31 /* --------转载 2022-04-11 09:17:53 · 1304 阅读 · 0 评论 -
4. ATF(ARM Trusted firmware)启动---bl2到bl31的跳转
在bl2_main函数中的最后一句是: smc(BL1_SMC_RUN_IMAGE, (unsigned long)next_bl_ep_info, 0, 0, 0, 0, 0, 0); 该函数将触发smc操作,而smc的handle在bl1阶段的时候被指定,调用该函数的时候带入command ID是BL1_SMC_RUN_IMAGE,故执行该函数之后,系统将跳转到中断处理函数:smc_handler64继续执行。该函数定义在bl1/aarch64/bl1_exception.S文件中,内容如下:转载 2022-04-08 15:05:22 · 752 阅读 · 0 评论 -
3. ATF(ARM Trusted firmware)启动---bl2
BL2 image将会为后续image的加载执行相关的初始化操作。主要是内存,MMU,串口以及EL3软件运行环境的设置,并且加载bl3x的image到RAM中。通过查看bl2.ld.S文件就可以发现,bl2 image的入口函数是bl2_entrypoint。该函数定义在bl2/aarch64/bl2_entrypoint.S文件中。 1.bl2_entrypoint 该函数的内容如下,该函数最终会出发smc操作,从bl1中将CPU的控制权转交给bl31: func bl2_entry转载 2022-04-08 14:56:23 · 895 阅读 · 0 评论 -
2. ATF(ARM Trusted firmware)启动---bl1
ATF(ARM Trusted Firmware)是一针对ARM芯片给出的底层的开源固件代码。固件将整个系统分成四种运行等级,分别为:EL0,EL1,EL2,EL3,并规定了每个安全等级中运行的Image名字。本文以ARCH64为示例,介绍冷启动时,ATF的运行过程。ATF的源代码可以从github上获取,具体地址如下: 系统上电之后首先会运行SCP boot ROM。之后会跳转到ATF的bl1中继续执行。bl1主要初始化CPU,设定异常向量,将bl2的image加载到安全RAM中,然后跳转到bl转载 2022-04-08 14:36:02 · 2463 阅读 · 1 评论 -
1. ATF(ARM Trusted firmware)完成启动流程
ATF将系统启动从最底层进行了完整的统一划分,将secure monitor的功能放到了bl31中进行,这样当系统完全启动之后,在CA或者TEE OS中触发了smc或者是其他的中断之后,首先是遍历注册到bl31中的对应的service来判定具体的handle,这样可以对系统所有的关键smc或者是中断操作做统一的管理和分配。ATF的code boot整个启动过程框图如下: 在上述启动过程中,每个Image跳转到写一个image的方式各不相同,下面将列出启动过程中每个image跳转到下一个image的转载 2022-04-08 13:48:29 · 2984 阅读 · 0 评论 -
ARM TrustZone技术简介 -- 4 (TrustOS)
TrustZone技术在物理上可以把一个ARM处理器核分时复用为两个不同的处理器,在处理器的非安全部分运行的是标准的Linux系统,而在另外一侧运行的是安全强相关的功能。而由于ARM TrustZone的硬件隔离作用,其相互之间的交互只能通过机器指令SMC来使能切换,而实际的切换过程由ARM提供的TrustFirmware BL31 来提供 。在硬件外部设备划分的过程中,一般情况下IRQ交由非安全侧处理,而ARM特有的FIQ则交由安全侧去处理,其具体哪些硬件和内存能够被安全侧和非安全侧访问可以转载 2022-04-08 11:10:24 · 897 阅读 · 0 评论 -
ARM TrustZone技术简介 -- 3 (BL31 Secure Monitor简介)
在使用TrustZone技术的嵌入式设备当中,无法避免的需要解决从非安全侧切换到安全侧的问题,而为了完成这个切换,需要一个专用的进行非安全上下文和安全上下文切换的固件,这个固件一般我们称为arm trust firmware,在ARM官方维护的github中我们能够下载到其完整的代码https://github.com/ARM-software/arm-trusted-firmware 在其github工程的介绍里,有完整的arm trusted firmware的移植和适配的方法,所以可以很方便的将转载 2022-04-08 10:58:25 · 1316 阅读 · 0 评论 -
ARM TrustZone技术简介 -- 2
对具有TrustZone的ARM处理器来说,为了保证运行其在EL3,安全侧和非安全侧的不同软件系统,其一般分为多个部分被bootloader分别进行加载运行,其流程在Linaro的Trust Firmware中有介绍,其基本流程如下图所示 当系统复位之后,先通过第一级的Bootloader 这里叫做 BL1进行启动其会加载BL2的系统加载器,而BL2 会将BL31 Trust Firmware, BL32 安全OS, BL33 Linux加载到内存的位置中,然后切换到BL32执行,BL32执行完初始化转载 2022-04-08 10:35:32 · 510 阅读 · 0 评论 -
ARM TrustZone技术简介 -- 1
有幸做过将近1年时间的TrustZone OS,这里对通用的TrustZone硬件技术做一点记录,来记录自己曾经工作过的领域。 TrustZone是ARM处理器特有的一个安全特性,其简介可以在ARM的官方网站上找到 https://www.arm.com/products/security-on-arm/trustzone 从最简单抽象的层面来一句话介绍TrustZone就是,将一个物理处理器分时复用为两个逻辑处理器,一半是Rich Execution Environment 另一半是Tr转载 2022-04-08 09:39:57 · 748 阅读 · 0 评论 -
简述ARM TrustZone
ARM TrustZone是ARM公司推出的SoC及CPU系统范围的安全解决方案,目前已在一些采用ARM指令集的应用处理器上广泛使用。本篇文章旨在对ARM TrustZone技术的体系架构、面临的安全隐患和应用进行简单的概述。目录1 TrustZone体系架构2 基于TrustZone的TEE系统3 TrustZone安全隐患4 TrustZone的应用1 TrustZone体系架构ARM TrustZone是基于硬件的安全功能,它通过对原有硬件架构进行修改,在处理器层次引入了两个不同权限的保护域——安全世转载 2022-04-08 09:29:43 · 5492 阅读 · 0 评论 -
ARM Trusted Firmware分析——启动、PSCI、OP-TEE接口
关键词:等等。 下图划分成不同EL,分别描述BL1、BL2、BL31、BL32、BL33启动流程,以及PSCI、SP处理流程。1. 冷启动(Cold boot)流程及阶段划分ATF冷启动实现分为5个步骤:BL1 - AP Trusted ROM,一般为BootRom。BL2 - Trusted Boot Firmware,一般为Trusted Bootloader。BL31 - EL3 Runtime Firmware,一般为SML,管理SMC执行处理和中断,运行在se.转载 2022-04-07 20:52:01 · 5357 阅读 · 3 评论 -
ARM Trustzone 技术 (三)ARMv7-A Exceptions & Interrupts Handling 的安全扩展
了解 Processor modes 和 registers 相关的 security extensions 之后,很自然就到了 exceptions (异常)和 interrupts (中断) 的处理。首先简单介绍一下异常和中断。一般来说,会打断 CPU 当前程序执行的事件,都可以称之为一个异常,异常的来源可以是 cpu 内部,也可以是其他外部硬件。例如 cpu 在程序执行过程中,数据和指令发生了错误,导致程序无法正常执行,这就是一种异常;外部硬件向 cpu 发送中断请求,cpu 挂起当前执行程序,优先转载 2022-04-02 17:35:46 · 741 阅读 · 2 评论 -
ARM Trustzone 技术(二) ARMv7-A Processor modes & registers 的安全扩展
ARM 引入 Trustzone 技术,最重要的改动就是 CPU 架构的调整。ARM trustzone security whitepaper 中对 Processor 的介绍是基于 ARMv7,我做的第一个 Trustzone 的软件方案也是基于 ARMv7 架构的 Cortex-A7,所以就从 ARMv7-A 开始介绍吧。为了支持 Trustzone,CPU 架构的调整包括了很多部分,翻开 Cortex-A7 Technical Reference Manual 关于 Security Extensi转载 2022-04-02 17:26:15 · 728 阅读 · 0 评论 -
ARM Trustzone 技术(一) 综述
从 2008 年 12月 ARM 公司第一次 release Trustzone 技术白皮书,已经过去了十年。2013 年 Apple 推出了第一款搭载指纹解锁的 iPhone:iPhone 5s,用以保证指纹信息安全的 Secure Enclave 技术据分析深度定制了 ARM trustzone 架构,印象中这大概是 Trustzone 技术第一次走进大众视线。到如今 Trustzone 技术已经成为移动安全领域的重要基础技术,你也许不了解它的技术原理,但它一直默默为你守护你的指纹信息,账户密码等各种敏转载 2022-04-02 17:15:00 · 2432 阅读 · 1 评论