From 3d5be50837952c117fa61a3bea8296c86fffa144 Mon Sep 17 00:00:00 2001 From: pete-lipeng Date: Thu, 17 Aug 2023 10:21:19 +0000 Subject: [PATCH 1/4] =?UTF-8?q?=E5=AE=8C=E5=96=84TA=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E6=8C=87=E5=AF=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: pete-lipeng --- .../develop-ca-and-ta-guidelines.md | 55 +++++++++++-------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md b/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md index 0a4ecf5..626e3fb 100644 --- a/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md +++ b/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md @@ -1,7 +1,3 @@ -## 开发CA - - - ## 开发TA ### TA安装包 @@ -34,9 +30,9 @@ TA安装包是以“.sec”为后缀名的包文件,文件格式如下:包 TA签名:由于TA安装包放在非安全侧文件系统中,需要对TA安装包做签名,确保加载到OpenTrutee中的TA安装包没有被篡改。OpenTrustee提供的SDK开发套件中,包含了TA的签名工具,支持对TA安装包一键签名。需要在OpenTrustee SDK开发套件中预置TA签名的私钥。 -TA验签:在TA安装包加载到OpenTrustee系统中时,由OpenTrustee TA管理框架对TA安装包做签名验证,验证通过之后才允许该TA加载运行。需要在OpenTrustee系统中预置TA验签的公钥。 +TA验签:在TA安装包加载到OpenTrustee操作系统中时,由OpenTrustee TA管理框架对TA安装包做签名验证,验证通过之后才允许该TA加载运行。需要在OpenTrustee操作系统中预置TA验签的公钥。 -**⚠**为了方便社区开发者调试,社区的OpenTrustee SDK开发套件已经预置了TA签名私钥,OpenTrustee系统中预置了验签的公钥。开发者在OpenTrustee商用版本中应自行替换该签名私钥和验签公钥。 +**⚠**为了方便社区开发者调试,社区的OpenTrustee SDK开发套件已经预置了TA签名私钥,OpenTrustee操作系统中预置了验签的公钥。开发者在OpenTrustee商用版本中应自行替换该签名私钥和验签公钥。 ### SDK开发套件 @@ -46,21 +42,21 @@ OpenTrustee提供了SDK开发套件支持独立开发TA,该开发套件集成 ``` ├── build -│ ├── config_tee_private_sample.ini # sec签名和perm_config签名的python脚本的ini配置文件,需要厂商进行配置 -│ ├── mk # make编译框架 -│ ├── pack-TA # 提供sec签名能力的shell脚本 -│ └── tools # 包含sec文件链接的ld文件(32位和64位)、sec文件二进制检查的shell脚本 +│ ├── ld # 生成TA ELF文件的链接脚本 +│ ├── mk # TA make编译框架 +│ ├── signkey # TA签名用的私钥 +│ └── tools # 生成TA安装包并对TA签名的脚本 ├── include │ └── TA # 给TA提供的TEE头文件 +├── src +│ └── TA # 放置TA源码 + └── sample # TA示例代码 ├── thirdparty │ └── open_source -│ ├── import_open_source_header.sh # 导入TA编译依赖的musl头文件和安全函数库头文件 -├── sample -│ ├── CA # CA示例代码 -│ └── TA # TA示例代码 +│ └── import_open_source_header.sh # 导入TA编译依赖的musl头文件和安全函数库头文件 └── CHANGELOG # SDK包版本发布记录 -├── README.md # SDK包的英文说明文件 -├── README_zh.md # SDK包的中文说明文件 +├── README.md +├── README_zh.md ``` - 开发语言:C语言 @@ -72,32 +68,43 @@ OpenTrustee提供了SDK开发套件支持独立开发TA,该开发套件集成 ##### 配置编译工具链 -编译工具链获取路径?也可以用OH docker镜像 - -export PATH=/home/peter/code/openharmony/prebuilts/clang/ohos/linux-x86_64/15.0.4/llvm/bin:$PATH +OpenTrustee使用的编译工具链为llvm,与OpenHarmony一致。开发者需要先下载OpenHarmony编译工具链,并声明该编译工具链的路径。 +可通过如下命令声明编译工具链路径: +export PATH=/home/code/openharmony/prebuilts/clang/ohos/linux-x86_64/15.0.4/llvm/bin:$PATH ##### 导入第三方头文件 -执行sdk/thirdparty/open_source/import_open_source_header.sh,将TA编译依赖的musl头文件和安全函数库头文件,从OpenHarmony的thirdparty +OpenTrustee集成了musl库和安全函数库,TA可以使用这些库。OpenTrustee SDK并没有默认包含musl库和安全函数库的头文件,但是提供了导入的脚本。 +开发者需要先下载musl库和安全函数库: +https://gitee.com/openharmony/third_party_musl -##### 替换签名密钥 +https://gitee.com/openharmony/third_party_bounds_checking_function +然后执行tee_dev_kit/sdk/thirdparty/open_source/import_open_source_header.sh,将musl头文件和安全函数库头文件从源码目录导入到OpenTrustee SDK中。 +##### 替换TA签名和验签密钥 +OpenTrustee SDK中预置了对TA文件进行签名的私钥,该预置私钥只能用来调试,在商用版本中,开发者需要自行替换该私钥。该私钥路径: +tee_dev_kit/sdk/build/signkey/ta_sign_priv_key.pem。同时提供了tee_dev_kit/sdk/build/signkey/ta_sign_algo_config.ini脚本,可以用来对签名算法 +进行配置。默认的签名算法是RSA,密钥长度4096bit。 + +如果开发者替换了OpenTrustee SDK中的签名私钥,需要对应替换OpenTrustee操作系统中的验签公钥,对应路径: ##### 安装python -SDK中用到了python脚本来完成TA的属性配置文件解析、对TA文件进行签名打包等操作,因此需要在开发环境上安装python相关的功能。可能需要root权限。 +OpenTrustee SDK中用到了python脚本来完成TA的属性配置文件解析、对TA文件进行签名等操作,因此需要在开发环境上安装python工具。 -1、安装python +1、安装python3及以上版本 -2、安装python相关的库, +2、安装python相关的库,如: pip install pycryptodome pip install defusedxml +如果在编译过程中提示缺少其他python库,需要一并安装 ### TA开发步骤 + ##### TA属性配置 ### TA API \ No newline at end of file From 5b90a9e412a274f10727fd254c13fca54414b7ed Mon Sep 17 00:00:00 2001 From: pete-lipeng Date: Thu, 17 Aug 2023 10:28:01 +0000 Subject: [PATCH 2/4] modify ta develop guide Signed-off-by: pete-lipeng --- docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md b/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md index 626e3fb..feb18b1 100644 --- a/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md +++ b/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md @@ -2,7 +2,7 @@ ### TA安装包 -TA安装包不需要跟OpenTrustee镜像打包到一起,可以把TA安装包文件放到到非安全侧文件系统下。在TA被访问时,由TEE Client将TA安装包发送到OpenTrustee系统中加载运行。 +TA安装包不需要跟OpenTrustee镜像打包到一起,可以把TA安装包文件放到非安全侧文件系统下。在TA被访问时,由TEE Client将TA安装包发送到OpenTrustee系统中加载运行。 由于TA安装包放在非安全侧文件系统中,需要对TA安装包做签名,保证安装包的完整性。 @@ -87,9 +87,9 @@ OpenTrustee SDK中预置了对TA文件进行签名的私钥,该预置私钥只 tee_dev_kit/sdk/build/signkey/ta_sign_priv_key.pem。同时提供了tee_dev_kit/sdk/build/signkey/ta_sign_algo_config.ini脚本,可以用来对签名算法 进行配置。默认的签名算法是RSA,密钥长度4096bit。 -如果开发者替换了OpenTrustee SDK中的签名私钥,需要对应替换OpenTrustee操作系统中的验签公钥,对应路径: +如果开发者替换了OpenTrustee SDK中的签名私钥,需要对应替换OpenTrustee操作系统中的验签公钥,验签公钥的路径:tee_os_framework/lib/syslib/libelf_verify_key/src/common/ta_verify_key.c -##### 安装python +##### 安装python工具 OpenTrustee SDK中用到了python脚本来完成TA的属性配置文件解析、对TA文件进行签名等操作,因此需要在开发环境上安装python工具。 From fb53c548e7e5d827483e1bb11599487d8aa0bda4 Mon Sep 17 00:00:00 2001 From: pete-lipeng Date: Fri, 18 Aug 2023 01:30:07 +0000 Subject: [PATCH 3/4] ta develop guide Signed-off-by: pete-lipeng --- docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md b/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md index feb18b1..defa754 100644 --- a/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md +++ b/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md @@ -87,7 +87,7 @@ OpenTrustee SDK中预置了对TA文件进行签名的私钥,该预置私钥只 tee_dev_kit/sdk/build/signkey/ta_sign_priv_key.pem。同时提供了tee_dev_kit/sdk/build/signkey/ta_sign_algo_config.ini脚本,可以用来对签名算法 进行配置。默认的签名算法是RSA,密钥长度4096bit。 -如果开发者替换了OpenTrustee SDK中的签名私钥,需要对应替换OpenTrustee操作系统中的验签公钥,验签公钥的路径:tee_os_framework/lib/syslib/libelf_verify_key/src/common/ta_verify_key.c +如果开发者替换了OpenTrustee SDK中的签名私钥,需要对应替换OpenTrustee操作系统中的验签公钥,验签公钥的路径:tee_os_framework/lib/syslib/libelf_verify_key/src/common/ta_verify_key.c。 ##### 安装python工具 From e55c26b63eab23f0f4f428ede45a080104b6bc29 Mon Sep 17 00:00:00 2001 From: pete-lipeng Date: Fri, 18 Aug 2023 02:27:49 +0000 Subject: [PATCH 4/4] ta develop guide Signed-off-by: pete-lipeng --- docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md b/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md index defa754..ad33c62 100644 --- a/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md +++ b/docs/opentrustee-guidelines/develop-ca-and-ta-guidelines.md @@ -61,6 +61,7 @@ OpenTrustee提供了SDK开发套件支持独立开发TA,该开发套件集成 - 开发语言:C语言 - 开发环境:linux操作系统 +OpenTrustee SDK套件的下载地址:https://gitee.com/openharmony-sig/tee_tee_dev_kit #### 开发套件准备 @@ -104,7 +105,7 @@ pip install defusedxml ### TA开发步骤 - +##### TA代码编写 ##### TA属性配置 ### TA API \ No newline at end of file