mirror of
https://github.com/openharmony/tee_tee_dev_kit.git
synced 2026-08-24 19:13:10 -04:00
@@ -1,4 +1,4 @@
|
||||
VERSION 1.0.0 (Jan 28, 2022)
|
||||
VERSION 1.0.0 (Aug 28, 2023)
|
||||
======
|
||||
Features:
|
||||
---------
|
||||
@@ -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 |
+47
-17
@@ -1,5 +1,7 @@
|
||||
|
||||
|
||||
# OpenTrustee CA/TA开发指南
|
||||
|
||||
## CA/TA访问机制
|
||||
|
||||
OpenTrustee应用分为CA(客户端应用)和TA(可信应用)。OpenTrustee支持CA访问TA,也支持TA访问TA。TA采用命令响应机制,交互流程如下:
|
||||
@@ -90,10 +92,6 @@ TA安装包是以“.sec”为后缀名的包文件,文件格式如下:包
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### 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
-1
@@ -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
-1
@@ -1,4 +1,4 @@
|
||||
# OpenTrustee调试机制介绍
|
||||
# OpenTrustee调试机制
|
||||
|
||||
## TEE侧日志查看
|
||||
|
||||
+2
-2
@@ -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技术,我们可以在设备上同时运行OpenHarmony和OpenTrustee两个系统,这两个系统彼此隔离。基于这种系统隔离带来的安全性,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文件中
|
||||
|
||||
@@ -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
@@ -0,0 +1 @@
|
||||
../../../build/build_ta.sh
|
||||
@@ -1 +0,0 @@
|
||||
../../../../build/build_ta.sh
|
||||
Reference in New Issue
Block a user