• 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

    1. 长按关注内核工匠微信
    2. Linux 内核黑科技 | 技术文章 | 精选教程
  • 相关阅读:
    Python基础语法
    网络卡顿怎么办?快来试试华为云CDN
    SpringBoot SpringBoot 原理篇 2 自定义starter 2.2 IP计数业务功能开发【自定义starter】
    Ansible之变量
    (十八)数据结构-图的应用-最短路径
    面向Ai设计的Mojo编程语言支持下载,当前只有Linux系统版本
    java中泛型(一)
    java 电动车销售管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
    pandas学习(六) STATS
    KubeVela可持续测试应用部署之Mock基础设施
  • 原文地址:https://blog.csdn.net/feelabclihu/article/details/126900008