!57 OpenTrsutee 指导文档优化

Merge pull request !57 from pete-lipeng/master
This commit is contained in:
pete-lipeng
2023-08-28 13:17:03 +00:00
committed by Gitee
57 changed files with 77 additions and 38 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
VERSION 1.0.0 (Jan 28, 2022)
VERSION 1.0.0 (Aug 28, 2023)
======
Features:
---------
+1
View File
@@ -0,0 +1 @@
1.0.0
+5 -5
View File
@@ -1,7 +1,7 @@
# OpenTrustee指南
- [OpenTrustee系统概述](overview-of-opentrustee.md)
- [OpenTrustee应用开发指](opentrustee-app-develop-guidelines.md)
- [OpenTrustee调试机制介绍](opentrustee-debug-mechanism-introduction.md)
- [OpenTrustee兼容性测试套件介绍](opentrustee-compatibility-test-suite-introduction.md)
- [OpenTrustee使能新平台适配指](opentrustee-enable-new-platform-adaptation-guidelines.md)
- [OpenTrustee概述](overview-of-opentrustee.md)
- [OpenTrustee CA/TA开发指](opentrustee-ca-ta-develop-guidelines.md)
- [OpenTrustee调试机制](opentrustee-debug-mechanism.md)
- [OpenTrustee兼容性测试](opentrustee-compatibility-test.md)
- [OpenTrustee新平台适配指](opentrustee-new-platform-adaptation-guidelines.md)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 26 KiB

@@ -1,5 +1,7 @@
# OpenTrustee CA/TA开发指南
## CA/TA访问机制
OpenTrustee应用分为CA(客户端应用)和TA(可信应用)。OpenTrustee支持CA访问TA,也支持TA访问TA。TA采用命令响应机制,交互流程如下:
@@ -90,10 +92,6 @@ TA安装包是以“.sec”为后缀名的包文件,文件格式如下:包
![](figures/storage-format-of-ta.png)
### TA签名机制
TA签名:由于TA安装包放在非安全侧文件系统中,需要对TA安装包做签名,确保加载到OpenTrutee中的TA安装包没有被篡改。OpenTrustee提供的SDK开发套件中,包含了TA的签名工具,支持对TA安装包一键签名。需要在OpenTrustee SDK开发套件中预置TA签名的私钥。
@@ -117,8 +115,9 @@ OpenTrustee提供了SDK开发套件支持独立开发TA,该开发套件集成
├── include
│ └── TA # 给TA提供的TEE头文件
├── src
│ └── TA # 放置TA源码
└── sample # TA示例代码
│ └── TA # 放置TA源码和示例
└── helloworld_demo # TA helloworld示例
└── secstorage_demo # 安全存储示例
├── thirdparty
│ └── open_source
│ └── import_open_source_header.sh # 导入TA编译依赖的musl头文件和安全函数库头文件
@@ -128,8 +127,9 @@ OpenTrustee提供了SDK开发套件支持独立开发TA,该开发套件集成
```
- 开发语言:C语言
- 开发环境:linux操作系统
- OpenTrustee SDK套件下载地址:https://gitee.com/openharmony-sig/tee_tee_dev_kit
- 代码编辑器:未提供特定编辑器,任意支持C语言开发的编辑器均可
- SDK执行环境:linux操作系统
- SDK套件下载地址:https://gitee.com/openharmony-sig/tee_tee_dev_kit
#### 开发套件准备
@@ -182,29 +182,59 @@ OpenTrustee SDK中预置了对TA文件进行签名的私钥,该预置私钥只
如果开发者替换了OpenTrustee SDK中的签名私钥,需要对应替换OpenTrustee操作系统中的验签公钥,验签公钥的路径:tee_os_framework/lib/syslib/libelf_verify_key/src/common/ta_verify_key.c。
##### 安装python工具
##### 工具安装
OpenTrustee SDK中用到了python脚本来完成TA的属性配置文件解析、对TA文件进行签名等操作,因此需要在开发环境上安装python工具
###### 安装python工具
1、安装python3及以上版本
OpenTrustee SDK中用到了python脚本来完成TA的属性配置文件解析、对TA文件进行签名等操作,因此需要在开发环境上安装python工具。以Ubuntu系统为例,安装命令如下:
1、安装python3
```
sudo apt-get update
sudo apt-get install python3 python3-pip
```
2、安装python相关的库,如:
```
pip install pycryptodome
pip install defusedxml
```
如果在编译过程中提示缺少其他python库,需要一并安装。
###### 安装openssl工具
OpenTrustee SDK使用openssl工具的签名算法来对TA文件进行签名,需要在开发环境上安装openssl工具。
```
sudo apt-get install openssl
```
###### 安装make工具
需要在开发环境上安装make工具来对TA源码进行编译。
```
sudo apt-get install make
```
### TA开发步骤
开发一个新的TA时,需要在tee_dev_kit/sdk/src/TA目录下创建新的TA源码目录,目录结构可以参考该目录下demo示例代码。以helloworld_demo为例,目录结构如下:
```
├── helloworld_demo
├── ta_demo.c # TA源码文件
├── configs.xml # TA属性配置文件
├── Makefile # TA编译Makefile
├── build_ta.sh # TA一键生成脚本
```
##### TA代码编写
开发一个新的TA时,需要在tee_dev_kit/sdk/src/TA目录下创建新的TA源码目录。
TA必须实现如下GP TEE标准规定的入口函数:
TA代码必须实现如下GP TEE标准规定的入口函数:
| TA入口函数名称 | 函数描述 |
| -------------------------- | ----------------------------------------------------- |
@@ -225,7 +255,7 @@ TA需要自行编写Makefile文件,可参考SDK中示例代码。有如下要
##### TA属性配置
TA源码目录下需要包含configs.xml,定义TA的属性信息。
每个TA源码目录下需要包含configs.xml,定义TA的属性信息。
| 属性名 | 数据类型 | 属性描述 | 系统默认值 |
| ------------------- | -------- | ------------------------------------------------------------ | ---------- |
@@ -257,7 +287,7 @@ TA源码目录下需要包含configs.xml,定义TA的属性信息。
##### TA编译和签名
OpenTrustee SDK中提供了TA一键编译和签名脚本,将tee_dev_kit/sdk/build/build_ta.sh拷贝到TA源码目录执行,即完成TA编译、属性配置文件解析、签名等操作,在当前目录生成uuid.sec命名的TA安装包文件。
OpenTrustee SDK中提供了TA一键生成脚本,将tee_dev_kit/sdk/build/build_ta.sh拷贝到TA源码目录执行,即完成TA编译、属性配置文件解析、签名等操作,在当前目录生成uuid.sec命名的TA安装包文件。
##### TA规格约束
@@ -1,4 +1,4 @@
## OpenTrustee的验证测试套件说明
# OpenTrustee兼容性测试
OpenTrustee提供了acts兼容性测试套件,CA的具体目录在`test/xts/acts/tee`下,TA以签名后的二进制存放在`https://gitee.com/openharmony-sig/compatibility/tree/master/test_suite/resource/tee`资源目录下。
| 测试CA | 测试TA | 说明 |
| ------------ | ------------------------------------------------------------ | --- |
@@ -1,4 +1,4 @@
# OpenTrustee调试机制介绍
# OpenTrustee调试机制
## TEE侧日志查看
@@ -1,4 +1,4 @@
# OpenTrustee 使能新平台指南
# OpenTrustee 新平台适配指南
本章节介绍如何针对一款芯片适配OpenTrustee,包含TEE CLient、TEE Tzdriver、TEE Loader、TEE ATF的适配。
## Tee Client的适配
@@ -120,7 +120,7 @@ tzdriver有一些特性或者选项,可以选择配置,控制这些选项的
CONFIG_TEELOG=y
CONFIG_PAGES_MEM=y
CONFIG_THIRDPARTY_COMPATIBLE=y
```
各选项其含义如下表所示:
@@ -2,7 +2,7 @@
## 概述
OpenTrustee是一个部署在可信执行环境(TEE中的安全操作系统。ARM架构中的TrustZone技术通过CPU层面的硬件设计,支持创建安全的可信执行环境。基于ARM TrustZone技术,我们可以在设备上同时运行OpenHarmonyOpenTrustee两个系统,这两个系统彼此隔离。基于这种系统隔离带来的安全性,OpenTrustee可以为设备的机密数据提供保护。
OpenTrustee提供了一个可信执行环境(TEE,运行在受硬件隔离的安全区域中,与常规操作系统如OpenHarmony同时运行但互相隔离,OpenTrustee比常规操作系统拥有更高的安全性,可以为设备的机密数据提供保护。
## **应用场景**
@@ -37,28 +37,28 @@ OpenTrustee是一套完整的TEE解决方案,包含多个部件,系统架构
- 部署在REE侧内核中的驱动,支持REE和TEE进行通信。
#### 操作系统框架
#### OpenTrustee 操作系统框架
- 为TA提供符合GP TEE标准的TEE Internal API
- 提供TA运行管理、驱动运行管理等框架基础服务;
- 提供安全存储、加解密等安全能力。
#### 操作系统内核
#### OpenTrustee 操作系统内核
- ChCore微内核,提供IPC/进程管理/内存管理/调度/中断管理/REE和TEE切换等基础内核功能。
#### 开发套件
#### OpenTrustee 开发套件
- 包括TA开发套件和驱动开发套件两部分,提供API头文件、编译框架、签名脚本、demo样例等,支持高效开发TA和驱动
- 提供了TA开发套件,包含TA API头文件、编译框架、签名脚本、demo样例等,支持高效开发TA。
#### Dispatcher
#### OpenTrustee Dispatcher
- 部署在ATF中,在REE和TEE之间交互时完成两个世界上下文的切换。
- 在REE和TEE之间交互时完成两个世界上下文的切换。
## 约束
- 支持的系统类型:支持OpenHarmony定义的标准系统,暂不支持轻量系统和小型系统;
- 对硬件的要求:CPU需要支持ARM TrustZone机制,安全内存至少需要28M;
- 对硬件的要求:目前只支持具备ARM TrustZone机制的CPU,安全内存至少需要28M
## 编码规范
@@ -73,3 +73,11 @@ OpenTrustee是一套完整的TEE解决方案,包含多个部件,系统架构
## license
遵循Mulan PSL V2协议;
## 版本号
OpenTrustee版本号管理规则遵循[Semantic Versioning 2.0.0](https://semver.org/)
OpenTrustee当前版本号记录在VERSION文件中
OpenTrustee版本号变更记录在CHANGELOG.md文件中
+1 -1
View File
@@ -15,7 +15,7 @@ set -e
export SOURCE_PATH=$(dirname $0)
export ABS_SOURCE_PATH=$(cd ${SOURCE_PATH};pwd)
export TEE_BUILD_PATH=${ABS_SOURCE_PATH}/../../../../
export TEE_BUILD_PATH=${ABS_SOURCE_PATH}/../../../
SIGNTOOL_DIR=${TEE_BUILD_PATH}/build/tools
CUR_DIR=$(pwd)
@@ -17,7 +17,7 @@ TARGET_IS_ARM64 = y
# If no API_LEVEL is specified, API of GP 1.1.1 will be taken
CFLAGS += -DAPI_LEVEL=2
include ../../../../build/mk/common.mk
include ../../../build/mk/common.mk
SRC += $(wildcard ./*.c)
+1
View File
@@ -0,0 +1 @@
../../../build/build_ta.sh
-1
View File
@@ -1 +0,0 @@
../../../../build/build_ta.sh