> 文档中心 > OpenHarmony源码分析(一):硬件安全

OpenHarmony源码分析(一):硬件安全


1、概要

​ 在设备启动流程中,逐级进行软件签名校验形成安全启动链,任何一个环节的签名校验不通过即终止设备启动;安全启动链中最初执行签名校验的软硬件实体,需确保自身的合法、未被篡改。该实体即为设备的启动可信根。

​ 启动可信根可为固化在ROM中的一段代码,这段代码在芯片制造环节固化到芯片中,芯片制造完成后软件不可更改,在设备上电初始化的过程中,最先执行这段ROM中的代码,并由这段ROM代码执行后续的软件签名校验。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0MxF8wWD-1667379817223)(PNG/13.png在这里插入图片描述
)]

不同的硬件安全隔离方案不同,比如arm芯片采用TrustZone技术,

  • 启动可信根为了确保自身的可信,一般是在设备生产时固化在ROM 中的一段代码,用于执行软硬件的签名校验
  • 密钥需要保证自身的合法性,一般采用eFuse/OTP等存储介质来存储根密钥。根密钥由华为TEE 签名服务器提供,私钥不会离开服务器,提供的是公钥。
  • 硬件密钥引擎提供简单的安全运算。密码运算、密钥的安全存储,真随机数等,可提高芯片整体性能、降低功耗。
  • 一般可信环境对外提供基本的服务包括,安全监控、密钥验证、数据保护、安全通信、密钥管理等。
  • 通过硬件隔离一般将系统分为TEE 可信环境和REE 正常运行环境。在REE环境下可运行丰富的app,TEE 环境下只能使用安全服务,REE 环境需要通过iTrustee lite 接口来访问TEE服务,作为一般程序员,这些都是不可见的。iTrustee lite 接口目前只是部分公开。

2、可信根

2.1 组件功能

  • 安全边界(security perimeter)

    安全边界定义了SoC上需要保护的内容。

  • 安全CPU

    信任根由一个运行安全软件、固件的安全CPU。

  • 运行时内存

    信任根需要保护运行时数据,具体的就是栈、堆、全局数据。

  • 防篡改

    在运行外来代码之前,需要对这些代码进行验证。

    这里涉及许多技术,包括只能由信任根访问的专用ROM

    硬件加密加速器:软件也可以实现,但是使用硬件加密加速器可以保持高性能,降低CPU 的频率。

    真随机数发生器(TRING):可提高协议的安全漏洞

    安全时钟:对于需要进行可靠时间测量的应用非常重要。只有当硬件信任根能够访问无法被篡改的时钟源时,使用安全时钟才会有效。这种类型的时钟的一个常见例子是安全实时时钟(RTC),它通常是电池供电,并以相对较低的时钟频率运行

  • 安全存储

3、 硬件加密引擎

​ 硬件密钥引擎指的是安全芯片SE(Secure Element),可进行密码运算、密钥的安全储存、物理真随机数发生等等,计算能力和功耗比较低,并且可以抵抗功耗、电磁辐射等侧信道攻击方式。安全芯片里一般也会有一个操作系统COS(Chip Operating System),也可以进行一些简单的安全运算。

4、 TEE(硬件隔离可信环境)

涉及仓库:

drivers/liteos/tzdriver 未完全开放。

security_itrustee_ree_lite

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MHtWwzOR-1667379817224)(PNG\zh-cn_image_0000001078211160.png在这里插入图片描述
)]

REE 环境与TEE 环境交互的一般方式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jKjklWe8-1667379817224)(PNG\10.png)]在这里插入图片描述

总结

硬件可信是一切安全的基础,其他的安全都是在在保证硬件可信的前提下。硬件安全主要涉及两个东西,固化代码和根密钥。将校验代码固化到芯片ROM 中,根密钥存放到芯片eFuse/OPT 区,确保不能被人为修改,且不会被攻击。