ARM TrustZone技术简介 -- 1

有幸做过将近1年时间的TrustZone OS,这里对通用的TrustZone硬件技术做一点记录,来记录自己曾经工作过的领域。


TrustZone是ARM处理器特有的一个安全特性,其简介可以在ARM的官方网站上找到

https://www.arm.com/products/security-on-arm/trustzone


从最简单抽象的层面来一句话介绍TrustZone就是,将一个物理处理器分时复用为两个逻辑处理器,一半是Rich Execution Environment 另一半是Trusted Execution Environment。 所以其本质上的原理很简单,在安全界还有很多类似的想法,例如在一个虚拟化的环境中,一个虚拟机运行Rich System,另外一个虚拟机运行Trust System。这两种是同一个道理。


目前使用TrustZone技术的主要集中在机顶盒,车载设备还有最常见的只能手机,由于其硬件隔离的特性,从Rich Execution Environment很难直接操作Trust那边的代码和资源,所以能够极大的提高各种基于ARM的应用环境的安全性。  这里面有一个奇葩的例外 iOS虽然使用ARM处理器但不使用TrustZone技术,其硬件设计中有一个而外的处理器叫Secure Enclave来处理器安全相关的任务,详情请见

https://www.blackhat.com/docs/us-16/materials/us-16-Mandt-Demystifying-The-Secure-Enclave-Processor.pdf


而对于Android系统的设备,TrustZone是广泛使用的,例如高通家的qcomsee,三星家的trustonic,还有google目前的trusty 以及ARM Linaro自己家的op-tee都是TrustZone上运行的系统,其中trusty和op-tee是完全开源的,想深入学习trustzone的可以拿来学习和参考。


从这里来看实际上一个ARMv8的处理器上可以运行两个独立的操作系统,一个是运行在Rich Execution Environment上的Linux,另外一个就是运行在Trusted Execution Environment之上的小内核, 为什么是个小内核呢 :-), 小意味结构简单,结构简单意味着代码少,代码少意味着整体的bug少,攻击面小,从而安全性才有提高, TrustZone只是一个硬件隔离技术,如果愿意完全可以在上面另外再跑一个Linux内核,但是这样的话其打开了一个巨大无匹的攻击面,所以对安全所做的努力就付诸东流了。而TrustZone上的系统也是越小,越紧凑,目的越单纯越安全。


如下图所示


ARMv8处理器包括一共4个运行级别, 其中EL3运行级将一个物理处理器分割为两个逻辑处理器,在Rich侧,有EL0/EL1/EL2三个运行级别分别对应一个操作系统的用户态,内核态,虚拟化态。 而在Trusted侧,只有EL0/EL1两个运行级别,对应的操作系统的用户态和内核态,所以在ARM处理器的Trust侧并不支持硬件虚拟化。

而在Rich和Trust之间切换需要ARM处理器的硬件指令SMC触发硬件异常,其会使系统从 EL1切换到EL3运行级由运行在EL3中的optee开源Secure Monitor的代码保存当前侧的硬件上下文,然后切换另一侧的缓存上下文到硬件寄存器中从而完成Rich和Trust之间的切换,其逻辑就像一个单纯的内核线程上下文切换。

所以要使用一个完整的带TrustZone支持的Linux,你需要在Linux侧有驱动程序发出SMC指令从而切换到Trust侧的OS,而在Trust侧的OS处理完成之后同样需要通过SMC(驱动或者系统调用)指令切换回Rich侧的Linux。


而对Trust侧系统的实现,国际组织GP对其有一部分规范和要求,可以参考

https://github.com/OP-TEE/optee_os/blob/master/documentation/globalplatform_api.md

这里是op-tee对其的GP支持的一部分总结。





### PUF(物理不可克隆函数)的定义、特性及结构 #### 定义 PUF(Physical Unclonable Functions,物理不可克隆函数)是一种基于硬件固有的物理特性的安全机制。它通过利用制造过程中的微小变化来生成唯一的身份标识符或密钥[^1]。 #### 特性 1. **独特性**:由于制造工艺中的随机性和不确定性,每个PUF实例都具有独特的响应模式,无法被精确复制。 2. **不可预测性**:即使知道某些输入和输出的关系,也无法推断其他未知输入对应的输出。 3. **鲁棒性**:尽管存在噪声或其他干扰因素,PUF仍能保持较高的稳定性和可靠性。 4. **轻量级设计**:适合应用于资源受限的环境,如物联网设备、可穿戴设备等。 #### 结构 一种常见的PUF类型是SRAM PUF,其工作原理如下: - 利用SRAM单元在加电瞬间的状态分布作为基础数据源。 - 这种状态是由制造过程中不可避免的小型偏差决定的,从而形成了一种天然的随机性[^3]。 ### TrustZone 技术简介 ARM TrustZone 是一种系统级别的隔离技术,旨在创建一个独立的安全区域——可信执行环境 (TEE),用于保护敏感操作和数据免受恶意软件攻击的影响。TrustZone 将处理器分成两个域:“正常世界”(Normal World) 和 “安全世界”(Secure World)。 ### PUF 与 TrustZone 的区别 | 方面 | PUF | ARM TrustZone | |--------------|-----------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------| | **核心功能** | 提供唯一的硬件指纹,可用于身份验证、密钥生成等 | 创建分离的操作环境以增强安全性 | | **实现方式** | 基于硬件本身的物理属性 | 软硬结合的方式,在 CPU 层面上划分权限 | | **应用场景** | 主要集中在低功耗小型化设备上的密钥管理以及防伪等方面 | 更广泛适用于智能手机和平板电脑等领域,保障支付交易、生物识别等功能的安全运行 | ```python def puf_response(challenge): """ Simulate a simple challenge-response mechanism using an idealized model of a PUF. Args: challenge (int): Input value to the PUF. Returns: int: Response generated by the PUF based on its internal characteristics. """ # Hypothetical function representing unpredictable behavior due to manufacturing variations response = hash((challenge ^ random.randint(0, 2**32))) % 2**8 return response ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值