Cryptocell-712安全引擎概述

一、基于trustzone的SoC里有什么?

Trustzone是ARM架构的安全扩展,是一个系统级别的安全方案,包括硬件方案和软件方案。在一个支持Trustzone的SoC上,硬件IP包括:

CPU:

目前主要的Cortex-A系列CPU都实现TrustZone安全扩展。

Trustzone system IP:

SoC内部支持TrustZone扩展的MMU、Cache、Bus、GIC、TZASC、TZPC等。

Trustzone Security IP:

常见的Security IP包括CryptoIsland、CryptoCell等。

二、CryptoCell产生背景

累计多次Secure World和Non Secure World之间进行save/switch context,会导致系统性能问题。解决方案是提供额外的硬件,它可以接收Non Secure World指令并在硬件内部执行密码操作,整个过程不需要将安全数据暴露给CPU,且可以将操作结果存放在指定的非安全内存,CPU只需要休眠或轮训结果。

CryptoCell包括CryptoCell 700和CryptoCell 300两个系列:

  • CryptoCell 700主要针对高性能的安全产品,一般与Cortex-A CPU配合使用。

  • CryptoCell 300主要针对低功耗的产品,一般与Cortex-M CPU配合使用。

三、high level diagram

849b208513d8096298d47c921e5833b4.png

从CryptoCell high level diagram可以看出,CryptoCell硬件服务通过firmware,分别向Linux OS和TEE OS提供接口。在TEE侧提供的CRYS Cryptographic Library,在REE侧提供Crypto API Driver来操作硬件IP。

四、CryptoCell内部逻辑

8a5dc6e0f0c1b802ed134c7f04014c5b.png

CryptoCell内部功能单元可分为“Shard Hardware”和“TEE Hardware”和。与普通外设一样,CryptoCell提供input and output pins,与主机连接。

bf131e4eb9320deb88eff4640022c17e.png

五、Shard Hardware

Shard Hardware包括对称加密引擎和硬件密钥槽。

1.对称加密引擎

Symmetric Cryptography Engine。

对称加密引擎支持AES加密、AES消息认证、DES、MD5和HMAC等。

对称加密引擎支持DMA数据传输。

对称加密引擎为用户或平台密钥提供硬件隔离,且可以直接加载这些密钥,确保密钥不会出现在DDR或SRAM中,增强用户密钥的安全性。

2.硬件密钥槽

Hardware key Slots,硬件密钥槽是专用的硬件寄存器,它允许TEE安全的创建对称密钥以提供给REE侧。该模块提供一个TEE Sevice来设置密钥槽,REE侧可以在调用AES服务时通过索引来指定密钥槽。

CryptoCell包含4个硬件密钥槽,支持大小为128、192、256的单个密钥,也支持两个128位或2个256位的双密钥。

六、TEE Hardware

TEE Hardware包括非对称密码加速器、NVM管理器、OTP、真随机数发生器和状态接口。

1.非对称密码加速器

非对称密码加速器通过大整数算数运算单元,支持实现公钥所需的数学和逻辑操作、基于离散对数、整数分解或椭圆曲线离散对数等。

2.NVM管理器

NVM管理器通过点对点AIB接口(遵循Intel异步接口规范)来访问OTP存储器。

3.OTP

依赖于SoC的实现,OTP模块可以为用户提供eFuse等安全特性。

4.真随机数发生器

真随机数发生器直接从硬件电路采集噪声,为用户提供真随机数。

5.状态接口

状态接口包括产品生命周期LCS(Life Cycle State)、DCU寄存器实现Security Debug功能、安全定时器功能等。

七、运行库CRYS

CryptoCell硬件Security IP的运行库称作CRYS(Cryptographic Software Library)。系统运行过程中,

eac8f2bcff5f71d48fca0289d5252644.png

1.获取生命周期LCS

e1c6532dd9230fffe270a30ea2eb674d.png

2.生命周期定义

a5d8e1b647181ca63032edfe13c68ef5.png

3.Secureboot初始化

141c2a25c9d865abe5fbd4b486d5570d.png

4.Secureboot证书校验

426c09f223334ff6451ee42cc848047a.png

5.Secureboot错误码

57bcb0af0e7e1b24d65134d2be36821a.png

6.SecureDebug设置

86909ec15e373ec670f0649998e0222a.png

7.密钥派生

918d465fe72be117f5557276bf28c614.png

8.HASH计算

f713dd7800d0a760afe3951007f59849.png

八、CryptoCell在安全启动的应用

CryptoCell应用于安全启动,这是CryptoCell最重要的应用场景。

1.安全启动

在ARMv8架构下,系统开机启动,会经历软件定义的BL1/BL2/BL31/BL32/BL33等多个阶段,如何保证每个启动阶段镜像的安全性,是构建平台安全和系统安全的基础业务。

2.安全启动业务场景

整个安全启动业务包括镜像签名、镜像加密、镜像验签和镜像解密。

ac714ff8e747a7faa8ffc8540596f836.png

3.安全启动涵盖模块

整个安全启动业务涵盖多个模块,包括BootROM、OTP、Crypto Engine

  •  BootROM

所有支持SecureBoot的CPU都会有BootROM程序,CPU上电后执行的第一条指令就在BootROM的入口。BootROM拥有最高的执行权限EL3,它将初始化SecureBoot安全机制,加载SecureBoot Key等密钥、从EMMC/UFS加载并校验BL1,最后跳转到BL1。

  •  OTP

所有支持SecureBoot的CPU会有N个一次性编程存储模块,称之为OTP设备。eFuse是OTP的一种表现形式,且只有在Secure World才可以访问,主要作用包括:

1.在OTP内部烧写标识设备类型、运行模式等的属性。

2.在OTP内部烧写镜像加解密的对称密钥SecureBoot Key。

3.在OTP内部烧写镜像签名公钥SecureBoot Signing Key。

  • Crypto Engine

支持SecureBoot的SoC会有专门负责镜像加解密和验签的模块,称之为Security Engine。Security Engine只有在Secure World才可以访问。Secure Engine的选择:

  • 低端SoC支持纯软件算法(如MbedTLS)的SecureBoot。

  • 高端SoC支持硬件Security IP(如CryptoIsland、CryptoCell等)的SecureBoot。

4.安全启动证书链

515473f375044428ce2adce1bcf0a752.png

5.安全启动实现方式

74d32d0c379d212095a77cb6d70a7546.png

6.实现方式的对比

e9aaf3f36b4b3f3175b4d36a418a8450.png

九、CryptoCell其他应用场景

在ARMv8架构下,CryptoCell应用场景包括但不限于设备生命周期管理、密钥管理、数据的备份恢复和安全调试。

1.设备生命周期

芯片从回片到出厂,一般经过CM(Chip Manufacturing)、DM(Device Manufacturing)和Secure等三个阶段。其中,CM表示芯片回片阶段,未经过任何处理,通常用于单板的前期调试工作。DM阶段会写入部分密钥。Secure是最终出厂阶段,终端产生会烧写完整密钥或数据hash,以及提供完整的镜像刷机包。一般来说,SOC厂商在fastboot(或UEFI)提供设备生命周期的相关命令。

2.密钥管理

CryptoCell提供硬件密钥槽,可以管理或保存用户的密钥,且密钥使用硬件隔离技术,增强了用户密钥的安全性。

3.安全调试

CryptoCell提供DCU寄存器,以控制其他master的调试功能。

f0cf50cf97df8f0b118b9be3d46bc97f.png

4.数据的备份和恢复

CryptoCell提供数据备份和恢复服务,允许在主机睡眠和唤醒过程中,将用户数据加密保存在安全内存中。CryptoCell使用KBKDF密钥派生AES128对数据进行加解密,当主机睡眠时,用户数据加密存在在安全内存中。当主机唤醒时,将用户数据从安全内存中解密。

十、个人小结

综上所述,CryptoCell在基于Trustzone架构的ARM64系统中应用广泛,SOC厂商基于硬件实现差异化特性,特别是在安全启动领域,成为各个SOC厂商的宠儿。

参考文献:

1.https://developer.arm.com/documentation/102897/0119?lang=en

2.https://developer.arm.com/documentation/pjdoc1779577084-15920/1/?lang=en

17005bdc3c9075618478d38350b63423.gif

长按关注内核工匠微信


Linux 内核黑科技 | 技术文章 | 精选教程
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

内核工匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值