搭建步骤
CA应用需要REE侧patch才能实现与TEE侧的TA应用通信,REE侧patch与TEE OS固件包存在版本配套关系,请参考表1。本文以openEuler 20.03 LTS SP1 和最新的TEE OS 1.3.0为例介绍REE侧patch的编译、部署。
TEE OS hpm固件版本 |
itrustee_tzdriver配套代码分支(标签) |
itrustee_client配套代码分支(标签) |
libboundscheck配套代码分支 |
---|---|---|---|
1.1.0 |
v1.0.0(tag点) |
v1.0.0(tag点) |
master |
1.2.0 |
v1.2.0(tag点) |
v1.2.0(tag点) |
master |
1.3.0 |
master |
master |
master |
itrustee_tzdriver和itrustee_client代码仓的master分支始终表示最新版本,历史版本以标签的方式标识。
TrustZone License安装
如果服务器iBMC中“许可证管理”已经显示“SEC特性”已处于开启状态,可跳过本章节;否则请参考以下步骤完成TrustZone许可证导入使能“SEC特性”。
请联系华为一线业务负责人申请TrustZone许可证。获取许可证后,请参考以下步骤完成服务器许可证安装。
- 登录iBMC,依次单击 。
- 单击“安装”,上传申请的TrustZone许可证。
安装完毕后,iBMC显示“SEC特性”处于开启状态。
BIOS设置
重启服务器,进入BIOS打开TrustZone特性开关,并配置TEE侧安全内存大小。
- 重启服务器,进入BIOS。
- 依次单击 。
- 打开TEE开关,根据需要配置TEE侧安全内存大小。
- 安全内存大小选取不合理,可能会导致BIOS启动TEE OS失败,服务器无法使能TrustZone功能。
- 安全内存大小选取请参考安全内存规格说明章节。
- 保存BIOS配置,重启服务器,进入REE侧普通系统。
获取iTrustee patch包
- 获取itrustee_client源码。
下载地址:https://gitee.com/openeuler/itrustee_client
代码分支:master
- 获取itrustee_tzdriver源码。
下载地址:https://gitee.com/openeuler/itrustee_tzdriver
代码分支:master
- 获取libboundscheck源码。
下载地址:https://gitee.com/openeuler/libboundscheck
代码分支:master
- 将下载、解压缩后libboundscheck源码分别放置在“itrustee_client/”目录和“itrustee_tzdriver/”目录下,并修改文件夹名称为libboundscheck,层级目录如下所示。
- 安装编译依赖。
1
yum install openssl-devel zlib-devel
若使用其他操作系统,须将YUM改为对应的包管理工具,同时由于不同包管理工具对软件命名的差异,依赖名字也要进行相应的修改。例如,Ubuntu操作系统通过apt-get命令安装依赖:
apt-get -y install zlib1g-dev libssl-dev
- 编译itrustee_tzdriver。
1
cd itrustee_tzdriver && make
- 编译tzdriver.ko内核模块依赖内核头文件,itrustee_tzdriver/Makefile指定了内核头文件路径:
客户需要根据实际情况,将KDIR修改为实际使用的内核头文件路径。请注意,编译使用的内核头文件版本必须与tzdriver.ko最终运行环境的内核版本保持一致,否则可能会出现因内核版本差异导致tzdriver.ko加载失败的情况。可使用uname -r指令查看当前运行环境的内核版本。
- 编译tzdriver.ko内核模块依赖内核头文件,itrustee_tzdriver/Makefile指定了内核头文件路径:
- 编译itrustee_client。
1
cd itrustee_client && make
编译完成后,会生成dist目录,存放生成的可执行二进制和动态库。
- 部署itrustee_client。
1 2 3
cp -rf dist/*.so /usr/lib64 && ldconfig cp -rf dist/teecd /usr/bin cp -rf dist/tlogcat /usr/bin
- libboundscheck.so和libteec.so为patch驱动依赖库,需放在“/usr/lib64”目录。针对一些默认不带“/usr/lib64”目录的操作系统,需要新建“/usr/lib64”目录,并加入到系统动态库默认搜索路径中。
- tlogcat提供REE侧查看TEE侧日志输出的能力,teecd为REE侧用户态守护进程,tlogcat、teecd需要放在“/usr/bin”目录。
部署SEC驱动
- 获取TEE OS固件包并上传至服务器。
- 解压固件包,并确认解压后文件中包含SEC驱动kunpeng_sec_drv.sec。
unzip BoostKit-teeos_1.3.1.SPC1.zip
- 部署SEC驱动文件。
mkdir -p /var/itrustee/tee_dynamic_drv/crypto/ cp kunpeng_sec_drv.sec /var/itrustee/tee_dynamic_drv/crypto/
- 自TEE OS 1.3.0 版本起,SEC驱动需独立加载。低版本TEE OS可忽略“部署SEC驱动”步骤。
- SEC驱动部署路径由itrustee_client的Makefile文件中的DYNAMIC_CRYPTO_DRV_DIR宏指定,如果需要更换部署路径,需重新编译itrustee_client。
加载REE侧驱动
- 加载tzdriver.ko内核模块。
1 2
cd itrustee_tzdriver/ insmod tzdriver.ko && lsmod | grep tzdriver
- 加载teecd守护进程。
1 2
/usr/bin/teecd & ps aux | grep teecd
teecd必须以绝对路径运行,即“/usr/bin/teecd”。“&”符号表示后台执行。
- 查看TEE侧日志输出,确认REE侧已具备与TEE侧通信能力。
1
tlogcat
查看当前TEE OS具体版本信息。
tlogcat -v
查看TEE日志存储路径为/var/log/tee
tlogcat -f