一、基于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

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

四、CryptoCell内部逻辑

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

五、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)。系统运行过程中,

1.获取生命周期LCS

2.生命周期定义

3.Secureboot初始化

4.Secureboot证书校验

5.Secureboot错误码

6.SecureDebug设置

7.密钥派生

8.HASH计算

八、CryptoCell在安全启动的应用

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

1.安全启动

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

2.安全启动业务场景

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

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.安全启动证书链

5.安全启动实现方式

6.实现方式的对比

九、CryptoCell其他应用场景

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

1.设备生命周期

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

2.密钥管理

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

3.安全调试

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

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

Cryptocell-712安全引擎概述相关推荐

  1. 存储引擎——概述|| 各种存储引擎的特性(InnoDB||MyISAM||MEMORY||MERGE) ||存储引擎的选择

    存储引擎概述 和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎. 存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式. 存储引擎是基于表 ...

  2. 05_ClickHouse、MergeTree系列引擎概述与存储结构、建表模板、建表语句、MergeTree设置、建表示例、数据存储、数据片段(data part)

    2.MergeTree系列引擎概述与存储结构 2.1.建表模板 2.2.建表语句 2.3.MergeTree设置 2.4.建表示例 2.5.数据存储 2.6.数据片段(data part) 2.Mer ...

  3. 04_ClickHouse表引擎概述、MergeTree系列引擎、Log系列引擎、集成引擎、特定功能的引擎(学习笔记)

    1.表引擎概述 1.1.MergeTree系列引擎 1.2.Log系列引擎 1.3.集成引擎 1.4.特定功能的引擎 1.表引擎概述 ClickHouse在建表时必须指定表引擎. 表引擎主要分为四大类 ...

  4. MySQL高级 - 存储引擎 - 概述

    存储引擎概述 ​ 和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎. ​ 存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 .存储引擎 ...

  5. 第 11 章 一 执行引擎概述、解释器、JIT编译器-热点代码优化

    第 11 章 执行引擎 Java到底是编译型语言还是解释型语言? 编译程序基本原理 首先Java通过源码编译器 Javac命令将源代码编译为字节码文件(.class文件), 字节码这种二进制流的文件不 ...

  6. TesseractOCR(光学字符识别)引擎概述(一)

    目录 一.TesseractOCR引擎简介 二.TesseractOCR架构 三.文本行和单词的查找(Text-line and Word Finding) 原文参见<Adapting the ...

  7. federated 存储引擎概述

    1. federated存储引擎概述 1.1 概念说明 federated存储引擎是可以访问远程的数据库而不使用cluster或replication技术,类似于oracle的dblink,使用fed ...

  8. Essential MSBuild: .NET 工具生成引擎概述

    过去几年大家一直都在使用 .NET Core(有这么久吗?)并且都知道"生成系统"经历了重大改变,不论是终止对 Gulp 的内置支持,还是放弃 Project.json.对于我这个 ...

  9. .NET 工具生成引擎概述

    Mark Michaelis 微软中国MSDN 过去几年大家一直都在使用 .NET Core(有这么久吗?)并且都知道"生成系统"经历了重大改变,不论是终止对 Gulp 的内置支持 ...

最新文章

  1. Jürgen Schmidhuber回顾30年前旧作,称其启发了现今流行的很多概念
  2. ruby Encoding
  3. 机器学习笔记 (聚类) 层次聚类 Agglomerative Clutsering(Single-linkage、Complete-linkage,Group average)
  4. BigData:根据最新2018人工智能行业创新企业Top100名单,绘制AI地区热点图,一目了然,看清哪个是AI最热门城市,以及VC最AI的热门领域
  5. 一步一步搭建客服系统 (7) 多人共享的电子白板、画板
  6. docker-1 初识docker
  7. Tik Tok与抖音的不同有哪些
  8. windows 安全删除硬件并弹出媒体 选项灰色、无法弹出
  9. CodeFroces GYM 2016-2017 ACM-ICPC, Egyptian Collegiate Programming Contest (ECPC 16) B.street(最短路)
  10. python 正则表达式 ,看这篇就够了
  11. Flink 1.12.2 源码浅析 : Transformation 浅析
  12. 哪里有纯免费的PPT模板下载网站?
  13. REARGUARD Secure Keyword SearchUsing Trusted Hardware 论文详读
  14. 视频教程-Project-规划项目(基本操作)-Office/WPS
  15. 罚单不断,长文揭秘第三方支付!
  16. AR行业报告:甩掉VR,5年内AR将迎来大爆发 | 报告
  17. Linux命令uname -a和uname -r的详解 2022_11_30
  18. 燕十八PHP高性能架构班教学视频教程
  19. 安装spconv踩的坑
  20. git + 码云 使用详解(入门)(mac+windows教程)

热门文章

  1. I/O 设备模型-3
  2. Win11硬盘怎么分区?Win11固态硬盘分区教程
  3. 深信服C++ 一面(技术面、70min、offer)
  4. 云计算基础概念——Iaas、PaaS、SaaS
  5. html显示hdf5文件,图片转换成HDF5文件(加载,保存)
  6. ipad html文件,ipad HTML文件怎么打开
  7. 运维工程师到底都在做些什么?
  8. 移动安全规范 — 1 -WIFI连接安全规范
  9. HTML5+WebGL 3D机房开发实例
  10. C++面试题总结,一篇就够了