快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈
目录
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f402f92925ba623bc55619f7ff73f58e.png)
1、Overview
(1) Trusted Services (TS)是一个新的属于trustedfirmware中的项目
(2) trustedfirmware的背景:
- 开放管理社区项目
- 为 Armv8-A 和 Armv8-M 提供安全世界固件的参考实现
- 为 SoC 开发人员和 OEM 提供符合 Arm 规范的参考代码库
(3) Trusted Services (TS)第一次released是在2020/11/26
(4) 起源于 Arm OSS firmware group在Cortex-A上提供的PSA Service
(5) Service有助于满足 PSA 认证要求
(6) 补充现有的 trustfirmware.org 项目
2、What are Trusted Services?
(1) 在客户端执行安全相关操作的固件服务的通用术语
(2) Clients could be
- User-space applications
- Kernel drivers
- Other trusted services
(3) trusted service provider在安全的处理环境中运行,以保护安全敏感资产免受在环境外运行的恶意软件的侵害
(4) 在 Arm Cortex-A SoC 上,可以使用一系列安全处理环境
- Secure partitions – managed by a Secure Partition Manager (SPM)
- Trusted applications – managed by a TEE
- Secure enclave – a secondary MCU
(5) Example service
- Crypto – provides cryptographic operations with a protected key store
- Protected storage – provides protected persistent storage
- fTPM – TPM 2.0 firmware, running as a trusted service
- UEFI Keystore – a protected persistent store for UEFI keys
3、Reference Deployment
4、Why have a separate Trusted Services project?
(1) Trusted Services 项目为服务相关组件提供了一个环境,这些组件可以集成和部署在不同的处理环境中
(2) 该项目独立于任何特定的安全处理环境项目
(3) 一个集中的项目创造了很多机会:
- 采用具有标准约定和解决方案的通用框架
- 组件和测试用例重用
- 发布标准公共接口
- 共享安全增强功能
- 拥有用于构建、测试和导出到客户项目的通用解决方案
(4) 为使用通用核心组件在任何设备上运行可信服务创造机会
5、Project Goals
- 采用易于复用组件的项目结构。
- 使服务接口易于客户端使用。
- 采用稳健的分层模型,允许替代层实现共存。
- 支持业务部署到不同的处理环境。
- 通过简化添加和运行测试用例来鼓励测试。
- 支持在原生PC 环境中进行测试和调试,以帮助应用程序开发人员。
- 重用外部项目中的组件,而无需维护分支。
- 使 SoC 和平台开发人员能够贡献硬件特定代码。
- 提供可扩展的构建系统,可与 Yocto 或 Buildroot 等 OS 构建系统集成
6、Project Structure
7、Building Trusted Services - deployments
(1) A build of a binary, elf file, library (or whatever) is referred to as a deployment.
(2) 所有部署构建文件都位于部署顶级目录下
(3) 具体部署名称由以下定义:
<descriptive-name>/<environment> + <platform> (if necessary)
(4) 所有的部署都使用CMake
(5) 源代码的重用单元称为组件。
(6) 一个 component.cmake 文件定义了一组可以作为一个单元重用的文件
(7) 部署的 CMakeLists.txt 文件结合了一组组件和一个环境,以定义可以构建和使用的可执行文件或库。
8、Using Trusted Services - protocols
(1) 公共接口定义称为协议
(2) 服务访问协议定义
- 形成服务接口的一组操作
- 每个操作的输入和输出参数
- 服务特定状态代码
(3) 一个RPC协议的作用:远程调用、返回结果
(4) Protocol definitions 通 code repo保持独立。这有助于简化外部客户端项目对 TS 项目的依赖。
(5) 项目结构允许替代协议定义和序列化方法。 目前支持:
- Protocol Buffers – 独立于语言的接口定义。 方便非 C 客户端。
- Packed-C – 扩展 SCMI 使用的现有约定以支持可变长度参数。
9、Common Layered Model
- 分层模型体现在项目结构中。
- 保持层依赖尽可能简单有助于重用和扩展新的服务和环境。
10、Test Strategy(测试策略)
(1) 从一开始就将测试纳入项目。
(2) 不同类别的测试:
- 单元测试——子组件级别的测试。
- 组件测试——测试单个组件和组件。
- 服务测试——使用标准访问协议的端到端服务测试。
- 环境测试——测试安全处理环境提供的低级服务
(3) TS 项目已采用 CppUtest 来运行 C/C++ 测试用例。
(4) 许多测试可能会在本地 PC 环境中运行:
- 快速方便的回归检查方法。
- 在 PC 环境中调试更直接
(5) 添加新测试并运行它们非常容易
11、Future steps
(1)添加对真实硬件平台的支持——目前仅支持 Arm FVP (2020/11/26)
(2)添加新服务——目前支持加密和安全存储。
(3)强化安全性——特别是客户端身份和访问控制。
(4)PSA 1 级和2 级认证硬件平台。
将使 SoC 开发人员和 OEM 能够在他们的平台上使用 TS 作为 PSA RoT
(5)扩展测试以更好地代表现实生活中的用例
![](http://assets.processon.com/chart_image/604719347d9c082c92e419de.png)