想找做海报的超清图片去哪个网站找,网站icp备案流程,网页设计与实现论文,网络营销知识网站搭建Airplay TA环境需要在IC的TrustZone中进行。TrustZone是一种安全技术#xff0c;用于隔离安全和非安全环境#xff0c;并保护敏感文件。在TrustZone中#xff0c;我们需要编写一个叫做TA#xff08;Trusted Application#xff09;的应用程序来控制这些私密文档。 用于隔离安全和非安全环境并保护敏感文件。在TrustZone中我们需要编写一个叫做TATrusted Application的应用程序来控制这些私密文档。 因此为了实现这个目标需要学习以下几个步骤 了解TrustZone技术深入了解TrustZone的原理和功能包括如何实现安全隔离、访问权限管理等。搭建TrustZone开发环境准备所需的开发工具和硬件设备例如ARM TrustZone开发板和相关软件开发工具链。编写TA应用程序在TrustZone开发环境中编写一个名为TA的应用程序用于控制私密文档。这可能涉及到文件系统的 访问、加密解密操作等。测试和调试在搭建好的环境中对编写的TA应用程序进行测试和调试确保其功能和性能达到要求。 通过以上学习和实践我将能够搭建并编写Airplay TA所需的TrustZone环境并实现对私密文档的控制。 1. TrustZone介绍
ARM TrustZone® 技术是一种系统级的安全方法专为高性能计算平台上的各种应用而设计包括安全支付、数字版权管理DRM、企业服务和基于Web的服务。该技术与Cortex™-A处理器紧密集成并通过AMBA® AXI总线和特定的TrustZone系统IP块在系统中进行扩展。
使用TrustZone技术可以实现以下优势 安全保护TrustZone技术允许对安全内存、加密模块、键盘和屏幕等外设进行保护以确保它们不受到恶意软件攻击。通过将系统分割为安全世界和非安全世界TrustZone提供了一个隔离环境使得敏感数据和关键功能可以在受保护的执行环境中运行。 完全可信执行环境TEE支持符合TrustZone Ready Program建议的设备可以提供完全可信的执行环境TEE其中运行的代码和应用程序具有更高的特权级别和安全性。这样的环境可用于保护敏感数据和执行关键任务提供更高级别的安全性。 支持安全感知应用程序和安全服务利用TrustZone技术开发和利用设备可以提供安全感知应用程序和安全服务。这些应用程序和服务可以利用TrustZone提供的安全环境实现更高级别的安全保护。
通过以上优势ARM TrustZone技术为高性能计算平台上的各种应用程序提供了强大的安全保护、完全可信执行环境TEE以及安全感知应用程序和安全服务的支持。 TrustZone介绍
1.1 安全背景
在介绍TrustZone前有必要简单回顾下目前的一些安全手段。
CPU通过内存映射手段为每个进程创建独的地址空间以隔离多个进程之间的代码和数据。同时通过内核空间和用户空间的不同特权级别实现操作系统和用户进程的代码和数据的隔离。然而由于内存中的代码和数据是明文存储的容易受到同一内存中其他应用程序的窥视。为了解决这个问题引入了扩展的安全模块。应用程序将加密数据发送到安全模块进行处理并将处理结果返回给相应的应用。
为确保数据安全许多消费电子设备都采用了扩展的安全模块。目前常见的方式包括 外部挂接硬件安全模块 数据的处理交由外部的安全模块实现这些模块能够保护自己的资源和密钥等数据的安全如SIM卡、各种智能卡或连接到外部的硬件加解密模块等但其同主芯片的通信线路暴露在外部容易被监听破解。另外通信的速率比较低。 内部集成硬件安全模块 将外部安全模块的功能集成到芯片内因此一个芯片上至少有两个核一个普通核和一个安全核。优点是核与核之间的通信在芯片内部实现不再暴露在外面。缺点是核之间的通信速度仍然较低而且单独的安全核性能有限还会会占用SoC面积成本较高。
1.2 TrustZone是个什么
TrustZone是ARM针对消费电子设备设计的一种硬件架构其目的是为消费电子产品构建一个安全框架来抵御各种可能的攻击。
TrustZone在概念上将SoC的硬件和软件资源划分为安全(Secure World)和非安全(Normal World)两个世界所有需要保密的操作在安全世界执行如指纹识别、密码处理、数据加解密、安全认证等其余操作在非安全世界执行如用户操作系统、各种应用程序等安全世界和非安全世界通过一个名为Monitor Mode的模式进行转换如图1 图1. ARM的安全世界和非安全世界
处理器架构上TrustZone将每个物理核虚拟为两个核一个非安全核Non-secure Core, NS Core运行非安全世界的代码和另一个安全核Secure Core运行安全世界的代码。
两个虚拟的核以基于时间片的方式运行根据需要实时占用物理核并通过Monitor Mode在安全世界和非安全世界之间切换类似同一CPU下的多应用程序环境不同的是多应用程序环境下操作系统实现的是进程间切换而Trustzone下的Monitor Mode实现了同一CPU上两个操作系统间的切换。
AMBA3 AXI(AMBA3 Advanced eXtensible Interface)系统总线作为TrustZone的基础架构设施提供了安全世界和非安全世界的隔离机制确保非安全核只能访问非安全世界的系统资源而安全核能访问所有资源因此安全世界的资源不会被非安全世界或普通世界所访问。
设计上TrustZone并不是采用一刀切的方式让每个芯片厂家都使用同样的实现。总体上以AMBA3 AXI总线为基础针对不同的应用场景设计了各种安全组件芯片厂商根据具体的安全需求选择不同的安全组件来构建他们的TrustZone实现。
其中主要的组件有 必选组件 AMBA3 AXI总线安全机制的基础设施 虚拟化的ARM Core虚拟安全和非安全核 TZPC (TrustZone Protection Controller)根据需要控制外设的安全特性 TZASC (TrustZone Address Space Controller)对内存进行安全和非安全区域划分和保护 可选组件 TZMA (TrustZone Memory Adapter)片上ROM或RAM安全区域和非安全区域的划分和保护 AXI-to-APB bridge桥接APB总线配合TZPC使APB总线外设支持TrustZone安全特性
除了以上列出的组件外还有诸如 Level 2 Cache Controller, DMA Controller, Generic Interrupt Controller等。
逻辑上安全世界中安全系统的OS提供统一的服务针对不同的安全需求加载不同的安全应用TA(Trusted Application)。 例如针对某具体DRM的TA针对DTCP-IP的TA针对HDCP 2.0验证的TA等。 图2. 基于TrustZone的应用示意图
图2是一个ARM官网对TrustZone介绍的应用示意图
基于TrustZone的应用
图中左边蓝色部分Rich OS Application Environment(REE)表示用户操作环境可以运行各种应用例如电视或手机的用户操作系统图中右边绿色部分Trusted Execution Envrionment(TEE)表示系统的安全环境运行Trusted OS在此基础上执行可信任应用包括身份验证、授权管理、DRM认证等这部分隐藏在用户界面背后独立于用户操作环境为用户操作环境提供安全服务。 可信执行环境TEE, Trusted Execution Environment是Global PlatformGP提出的概念。对应于TEE还有一个REE(Rich Execution Environment)概念分别对应于安全世界(Secure World)和非安全世界(Non-secure World, Normal World)。 GlobalPlatformGP是跨行业的国际标准组织致力于开发、制定并发布安全芯片的技术标准以促进多应用产业环境的管理 及其安全、可互操作的业务部署。目标是创建一个标准化的基础架构, 加快安全应用程序及其关联资源的部署如数据和密钥同时保护安全应用程序及其关联资源免受软件方面的攻击。
2. TrustZone原理和设计
以下主要从TrustZone的总线设计CPU设计(包括处理器模型、内存模型和中断模型)和安全隔离机制来介绍TrustZone的设计和工作原理。
2.1 总线设计
总线
设计上TrustZone 在系统总线上针对每一个信道的读写增加了一个额外的控制信号位这个控制位叫做Non-Secure或者NS位是AMBA3 AXI总线针对TrustZone作出的最重要、最核心的扩展设计。
这个控制信号针对读和写分别叫做ARPORT[1]和AWPORT[1]
寄存器功能位[1]描述ARPROT用于读操作的访问权限保护寄存器低位表示Secure高位表示Non-SecureAWPROT用于写操作的访问权限保护寄存器低位表示Secure高位表示Non-Secure
在这两个寄存器中位[1]用于表示访问操作的安全级别。低位表示Secure安全高位表示Non-Secure非安全。
总线上的所有主设备(master)在发起新的操作(transaction)时会设置这些信号总线或从设备(slave)上解析模块会对主设备发起的信号进行辨识来确保主设备发起的操作在安全上没有违规。
例如硬件设计上所有非安全世界的主设备Non-Secure masters在操作时必须将信号的NS位置高而NS位置高又使得其无法访问总线上安全世界的从设备Secure Slaves简单来说就是对非安全世界主设备发出的地址信号进行解码时在安全世界中找不到对应的从设备从而导致操作失败。
NS控制信号在AMBA3 AXI总线规范中定义。可以将其看作为原有地址的扩展位如果原有32为寻址增加NS可以看成是33位寻址其中一半的32位物理寻址位于安全世界另一半32位物理寻址位于非安全世界。
当然非安全世界的主设备尝试访问安全世界的从设备会引发访问错误可能是SLVERR(slave error)或者DECERR(decode error)具体的错误依赖于其访问外设的设计或系统总线的配置。
外设
在TrustZone出现前ARM的外设基于AMBA2 APB (Advanced Peripheral Bus)总线协议但是APB总线上不存在类似AXI总线上的NS控制位。为了兼容已经存在的APB总线设计AMBA3规范中包含了AXI-to-APB bridge组件这样就确保基于AMBA2 APB的外设同AMBA3 AXI的系统兼容。AXI-to-APB bridge负责管理APB总线设备的安全事宜其会拒绝不合理的安全请求保证这些请求不会被转发到相应的外设。
例如新一代的芯片可以通过增加AXI-to-APB bridge组件来沿用上一代芯片的设计来使其外围设备可以支持TrustZone。
2.2 处理器设计
2.2.1 处理器模型
TrustZone中每个物理处理器核被虚拟为一个安全核(Secure)和一个非安全核(Non-Secure)安全核运行安全世界的代码非安全核运行除安全世界外的其它代码。由于安全世界和非安全世界的代码采用时间片机制轮流运行在同一个物理核上相应的节省了一个物理处理器核。 多核处理器上也有建议说让将某一个或几个核指定为安全专用核只运行安全系统代码来构建安全世界其余核运行非安全代码暂不清楚目前有哪些平台采用这个实现。 图3. 多核处理器上的安全核和非安全核
如上图中系统中有4个物理核并且每个物理核都被划分为两个虚拟核即安全核和非安全核。这种情况下系统总共有8个虚拟核。
在多核处理器上每个物理核都是一个独立的处理单元具有自己的执行资源和寄存器。通过将每个物理核划分为安全核和非安全核可以实现对不同特权级别的隔离和管理。
安全核通常用于运行处于高特权级别的代码和应用程序例如TrustZone安全世界中的代码。它们具有更高的特权级别和访问权限可以直接访问系统资源和执行特权指令。
非安全核则用于运行一般用户应用程序和操作系统内核等低特权级别的代码。它们通常受到限制无法直接访问系统资源和执行特权指令以增加系统的安全性和稳定性。
通过将安全核和非安全核组合在一起系统可以同时运行安全世界和非安全世界的任务实现安全保护和并行处理的功能。
2.2.2 L1内存模型
MMU
MMU是一种硬件电路它包含两类部件一类是分段部件一类是分页部件对应于内存管理的分段机制和分页机制。分段机制把一个逻辑地址转换为线性地址接着分页机制把一个线性地址转换为物理地址。
当CPU访问一个虚拟地址时这个虚地址被送到MMU翻译硬件首先把它和TLB中的所有条目同时(并行地)进行比较如果它的虚页号在TLB中并且访问没有违反保护位它的页面会直接从TLB中取出而不去访问页表从而提高地址转换的效率。
安全世界和非安全世界都有自己的虚拟MMU各自管理物理地址的映射。实际上只是两个世界都有一份TTBR0、TTBR1、TTBCR寄存器因此就会对应两个MMU表。
尽管MMU有两套但TBL缓存硬件上只有一套因此TBL对于两个世界来说是共享的其通过NS位来标志其每一项具体属于哪一个世界。这样在两个世界间进行切换时不再需要重新刷新TLB提高执行效率。
对于TLB共享并不是硬性规定的部分芯片在两个世界间切换时可能通过硬件部分或全部刷新TLB。
Cache
同TLB类似硬件上两个世界共享一套Cache具体的Cache数据属于哪一个世界也由其NS位指定在世界间切换也不需要刷新Cache。
2.2.3 中断模型
基于TrustZone的处理器有三套异常向量表
一套用于非安全世界一套用于安全世界还有一套用于Monitor模式。
与之前非TrustZone的处理器不同的是这三套中断向量表的基地址在运行时可以通过CP15的寄存器VBAR(Vector Base Address Register)进行修改。
复位时安全世界的中断向量表由处理器的输入信号VINITHI决定没有设置时为0x00000000有设置时为0xFFFF0000非安全世界和Monitor模式的中断向量表默认没有设置需要通过软件设置后才能使用。
默认情况下IRQ和FIQ异常发生后系统直接进入Monitor模式由于IRQ是绝大多数环境下最常见的中断源因此ARM建议配置IRQ作为非安全世界的中断源FIQ作为安全世界的中断源。这样配置有两个优点
当处理器运行在非安全世界时IRQ直接进入非安全世界的处理函数如果处理器运行在安全世界当IRQ发生时会先进入到Monitor模式然后跳到非安全世界的IRQ处理函数执行 仅将FIQ配置为安全世界的中断源而IRQ保持不变现有代码仅需做少量修改就可以满足
将IRQ设置为非安全世界的中断源时系统IRQ的切换见图4 IRQ作为非安全世界的中断源
图4. IRQ作为非安全世界的中断源
2.2.4 系统模式切换
基于TrustZone的系统有三种状态安全世界、非安全世界和用于二者切换的Monitor Mode。
协处理器CP15的寄存器SCR(Secure Configuration Register)有一个NS位用于指示当前处理器位于哪一个世界该寄存器在非安全世界是不能访问的。当CPU处于Monitor Mode时无论NS位是0还是1处理器都是在安全世界运行代码。因此Monitor Mode下总是安全世界但如果此时NS为1访问CP15的其它寄存器获取到的是其在非安全世界的值。 非安全世界到Monitor模式的切换
处理器从非安全世界进入Monitor Mode的操作由系统严格控制而且所有这些操作在Monitor Mode看来都属于异常。 从非安全世界到Monitor Mode的操作可通过以下方式触发
软件执行SMC (Secure Monitor Call)指令
硬件异常机制的一个子集换而言之并非所有硬件异常都可以触发进入Monitor Mode包括IRQFIQexternal Data Abortexternal Prefetch AbortMonitor Mode
Monitor Mode内执行的代码依赖于具体的实现其功能类似于进程切换不同的是这里是不同模式间CPU状态切换。
软件在Monitor Mode下先保存当前世界的状态然后恢复下一个世界的状态。操作完成后以从异常返回的方式开始运行下一个世界的代码。 为什么安全模式和非安全模式不能直接切换
非安全世界无权访问CP15的SCR寄存器所以无法通过设置NS来直接切换到安全世界只能先转换到Monitor Mode再到安全世界。
如果软件运行在安全世界(非Monitor Mode)下通过将CP15的NS位置1安全世界可以直接跳转到非安全世界由于此时CPU的流水线和寄存器还遗留了安全世界的数据和设置非安全模式下的应用可以获取到这些数据会有极大的安全风险。因此只建议在Monitor Mode下通过设置NS位来切换到非安全模式。
综上安全世界和非安全世界不存在直接的切换所有切换操作都通过Monitor Mode来执行。
图5展现了安全世界和非安全世界之间的切换方式 安全世界和非安全世界之间的切换
图5. 安全世界和非安全世界之间的切换
2.3 隔离机制
除了CPU执行时实行安全世界和非安全世界的隔离外AMBA3 AXI总线提供了外设隔离的基础。
2.3.1 内存隔离机制
这里的内存指外部的DDR和片上的ROM以及SRAM其隔离和保护通过总线组件TZASC和TZMA的设置来实现。
下面是关于TZASC和TZMA的表格描述
组件功能适用设备TZASC (TrustZone Address Space Controller)将外部DDR划分为多个区域每个区域可以配置为安全或非安全区域只有非安全世界的代码和应用可以访问非安全区域。内存设备TZMA (TrustZone Memory Adapter)将片上ROM和SRAM划分为安全和非安全区域。最大可将低2MB的片上存储配置为安全区域其余部分为非安全区域。大小划分可以在芯片出厂前固定设置或者通过TZPC在运行时动态配置。片上存储
需要注意的是TZASC适用于内存设备而不适用于配置块设备如Nand Flash。而TZMA虽然可以配置一个安全区域但不适用于外部内存划分。
2.3.2 外设隔离机制
外设上基于APB总线的设备不支持AXI总线的NS控制信号所以AXI到APB总线需要AXI-to-APB bridge设备连接除此之外还需要TZPC (TrustZone Protection Controller) 来向APB总线上的设备提供类似AXI上的NS控制信号。
由于TZPC可以在运行时动态设置这就决定了外设的安全特性是动态变化的例如键盘平时可以作为非安全的输入设备在输入密码时可以配置为安全设备只允许安全世界访问。
2.3.3 隔离机制示意图
整个系统内存和外设隔离机制示意图见图6. 系统内存和外设隔离机制
图6. 系统内存和外设隔离机制示意图
此图来源于网上实际上TZPC还连接到片内的ROM/RAM设备上用于配置片上存储的安全区域。2.4 安全启动
AMBA3 AXI总线机制隔离出安全世界和非安全世界但这是系统启动之后的事情。如何确保系统本身是安全的呢这就涉及到系统启动的过程。
系统上电复位后先从安全世界开始执行。安全世界会对非安全世界的bootloader进行验证确保非安全世界执行的代码经过授权而没有被篡改过。然后非安全世界的bootloader会加载非安全世界的OS完成整个系统的启动。
在非安全系统的bootloader加载OS时仍然需要安全世界对OS的代码进行验证确保没有被篡改。
图7是典型的TrustZone芯片的启动流程 典型的TruestZone芯片启动流程
图7. 典型的TruestZone芯片启动流程
整个启动流程跟目前博通平台的安全启动原理基本一致上电后安全芯片先启动然后校验主芯片的bootloader接下来bootloader提交系统的OS和文件系统给BSP进行校验通过后加载主系统确保主系统是安全的。
从上电复位开始的整个启动过程中下一级的安全基于上一级的验证最终依赖于芯片内置的OTP和安全硬件逐级的验证构成了整个系统的信任链。信任链中的某一个环节被破坏都会导致整个系统不安全。
3. 各家TrustZone实现
基于安全考虑各家TrustZone都实行闭源关于其实现细节的介绍都较少。
网上能找到少许关于高通方案上TrustZone的介绍 安全世界Secure World是指在TrustZone技术中运行的受保护的环境。QSEE是高通公司为其处理器提供的安全执行环境用于运行敏感和受保护的代码。它提供了一种隔离的环境确保安全世界中的应用程序和数据不会被非安全世界访问或破坏。 非安全世界Non-Secure World是指在TrustZone技术中运行的普通操作系统环境。HLOS是通常在非安全世界中运行的高级操作系统例如Android、Linux等。非安全世界中的应用程序和数据可以与其他非安全世界的组件进行交互但无法直接访问或影响安全世界中的内容。
通过将安全和非安全世界分离TrustZone技术提供了一种有效的安全机制以保护敏感数据和应用程序免受恶意攻击或未经授权的访问。
整个系统的架构如图8 高通QSEE系统架构图
图8. 高通QSEE系统架构图
4. 其它
ARMv8-A架构定义了四个异常等级分别为EL0到EL3。每个等级代表一种特权级别数字越大表示特权越高。 EL0无特权模式也称为用户模式是最低特权级别。在EL0中运行的应用程序没有直接访问系统资源和特权指令的权限。 EL1操作系统内核模式也称为内核模式是操作系统内核运行的特权级别。在EL1中操作系统具有对系统资源和特权指令的完全访问权限。 EL2虚拟机监视器模式也称为虚拟化模式用于运行虚拟机监控器如Hypervisor。在EL2中虚拟机监控器可以管理和监控多个虚拟机实例。 EL3TrustZone监控模式也称为TrustZone监控模式用于运行TrustZone技术相关的监控程序。在EL3中可以进行安全世界Secure World和非安全世界Non-Secure World之间的切换和通信。
通过这些不同的异常等级ARMv8-A架构提供了灵活的特权管理并支持安全保护和虚拟化功能。 ARMv8-A Security Level
TrustZone设计的相关方 ARM公司定义TrustZone并实现硬件设计TEETZAPI等 芯片厂家在具体芯片上实现TrustZone设计包括三星、高通、MTK、RTK、TI、ST、华为等 应用提供方如DRM厂家和安全应用开发商实现DRM、Playready、DTCP-IP和一些其它安全应用开发和认证 Trust OS TEE环境下也要有一个操作系统各家都有自己的Trustzone的操作系统如Trustonic、高通的QSEE、国内的豆荚还有开源的OPTEE等。在操作系统之上自然要有应用程序在Trustzone里面我们一般叫TrustApp当然TEE里面每个TrustApp都在一个沙盒里互相之间是隔离的。比如说支付就可以做成一个App需要注意的是和Normal World里面的App是两个概念这个App简单来说就负责用私钥把网上发来的Challenge签个名而这个签名的动作是需要在Secure World里面做的避免恶意程序窃取到私钥来伪造签名。 例如支付宝其实支付宝也是只支持几个Trust OS的。同时支付宝还定义了一系列标准用来完成他的行为。 现在的Trust OS大都会遵循GlobalPlatform的规范这个组织致力于制定统一的Trust OS的API的接口规范这样一个TrustApp只要用GP API就可以方便移植到各个不同的TEE操作系统上了。 Intel 平台的 SGX 针对可信计算类似ARM的TrustZoneIntel也针对x86平台提出了自己的安全架构SGX Intel® Software Guard Extensions (Intel® SGX) https://software.intel.com/zh-cn/sgx-sdk SGX全称Intel Software Guard Extensions顾名思义其是对因特尔体系IA的一个扩展用于增强软件的安全性。这种方式并不是识别和隔离平台上的所有恶意软件而是将合法软件的安全操作封装在一个enclave中保护其不受恶意软件的攻击特权或者非特权的软件都无法访问enclave也就是说一旦软件和数据位于enclave中即便操作系统或者和VMMHypervisor也无法影响enclave里面的代码和数据。Enclave的安全边界只包含CPU和它自身。SGX创建的enclave也可以理解为一个可信执行环境TEETrusted Execution Environment。不过其与ARM TrustZoneTZ还是有一点小区别的TZ中通过CPU划分为两个隔离环境安全世界和正常世界两者之间通过SMC指令通信而SGX中一个CPU可以运行多个安全enclaves并发执行亦可。 简单来讲, Intel SGX最关键的优势在于将程序以外的software stack如OS和BIOS都排除在了TCBTrusted Computing Base以外。换句话说就是在容器enclave里的code只信任自己和intel的CPU。
网上有人是这样对比TrustZone和SGX的
Trustzone默认相信SecureOS安全世界。SGX仅相信CPU core通过SGX指令构建enclave容器。简单比喻TEE是个公用大保险柜什么东西都装进去有漏洞的app可能也进去了而且保险柜钥匙在管理员手上必须相信管理员。SGX每个app有自己的保险柜钥匙在自己手上SGX要进入工业界应用尚需时间一个重要的问题是现在在intel发行的服务器芯片上还没有SGX而SGX的重要应用就是在数据中心和云端的应用。
5. TrustZone开源项目
除了各家私有实现外ARM也有不少开源项目知名度较高的有 Arm Trusted Firmware 基于ARMv8-A应用处理器ARM官方提供了一个开源参考实现BL31。 https://github.com/ARM-software/arm-trusted-firmware Openvirtualization 带有一些商业属性的开源项目部分TEE实现只有商业版支持 http://www.openvirtualization.org/ Op-Tee Linaro 推出的开源TEE https://github.com/OP-TEE 有参考rocky的博文https://blog.csdn.net/guyongqiangx/article/details/78020257