中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

搭建步骤

CA应用需要REE侧patch才能实现与TEE侧的TA应用通信,REE侧patch与TEE OS固件包存在版本配套关系,请参考表1。本文以openEuler 20.03 LTS SP1 和最新的TEE OS 1.3.0为例介绍REE侧patch的编译、部署。

表1 TEE OS和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许可证。获取许可证后,请参考以下步骤完成服务器许可证安装。

  1. 登录iBMC,依次单击iBMC管理->许可证管理

  2. 单击“安装”,上传申请的TrustZone许可证。

    安装完毕后,iBMC显示“SEC特性”处于开启状态。

BIOS设置

重启服务器,进入BIOS打开TrustZone特性开关,并配置TEE侧安全内存大小。

  1. 重启服务器,进入BIOS。

  2. 依次单击Advanced->TEE Config

  3. 打开TEE开关,根据需要配置TEE侧安全内存大小。

    • 安全内存大小选取不合理,可能会导致BIOS启动TEE OS失败,服务器无法使能TrustZone功能。
    • 安全内存大小选取请参考安全内存规格说明章节。
  4. 保存BIOS配置,重启服务器,进入REE侧普通系统。

获取iTrustee patch包

  1. 获取itrustee_client源码。

    下载地址:https://gitee.com/openeuler/itrustee_client

    代码分支:master

  2. 获取itrustee_tzdriver源码。

    下载地址:https://gitee.com/openeuler/itrustee_tzdriver

    代码分支:master

  3. 获取libboundscheck源码。

    下载地址:https://gitee.com/openeuler/libboundscheck

    代码分支:master

  4. 将下载、解压缩后libboundscheck源码分别放置在“itrustee_client/”目录和“itrustee_tzdriver/”目录下,并修改文件夹名称为libboundscheck,层级目录如下所示。

  5. 安装编译依赖。
    1
    yum install openssl-devel zlib-devel
    

    若使用其他操作系统,须将YUM改为对应的包管理工具,同时由于不同包管理工具对软件命名的差异,依赖名字也要进行相应的修改。例如,Ubuntu操作系统通过apt-get命令安装依赖:

    apt-get -y install zlib1g-dev libssl-dev
  6. 编译itrustee_tzdriver。
    1
    cd itrustee_tzdriver && make
    
    1. 编译tzdriver.ko内核模块依赖内核头文件,itrustee_tzdriver/Makefile指定了内核头文件路径:

      客户需要根据实际情况,将KDIR修改为实际使用的内核头文件路径。请注意,编译使用的内核头文件版本必须与tzdriver.ko最终运行环境的内核版本保持一致,否则可能会出现因内核版本差异导致tzdriver.ko加载失败的情况。可使用uname -r指令查看当前运行环境的内核版本。

    1. tzdriver.ko运行依赖安全函数符号,itrustee_tzdriver/Makefile中根据当前内核情况决定tzdriver.ko编译是否自包含安全函数符号。不同的REE OS,tzdriver编译过程可能会有差异。

      编译完成后,会生成tzdriver.ko内核模块。

  7. 编译itrustee_client。
    1
    cd itrustee_client && make
    

    编译完成后,会生成dist目录,存放生成的可执行二进制和动态库。

  8. 部署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驱动

  1. 获取TEE OS固件包并上传至服务器。

    华为企业网网站下载地址:BoostKit-teeos_1.3.1.SPC1.zip

  2. 解压固件包,并确认解压后文件中包含SEC驱动kunpeng_sec_drv.sec。
    unzip BoostKit-teeos_1.3.1.SPC1.zip
  3. 部署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侧驱动

  1. 加载tzdriver.ko内核模块。
    1
    2
    cd itrustee_tzdriver/
    insmod tzdriver.ko && lsmod | grep tzdriver
    

  2. 加载teecd守护进程。
    1
    2
    /usr/bin/teecd &
    ps aux | grep teecd
    

    teecd必须以绝对路径运行,即“/usr/bin/teecd”。“&”符号表示后台执行。

  3. 查看TEE侧日志输出,确认REE侧已具备与TEE侧通信能力。
    1
    tlogcat
    

    查看当前TEE OS具体版本信息。

    tlogcat -v

    查看TEE日志存储路径为/var/log/tee

    tlogcat -f

    • tlogcat需要tzdriver.ko内核模块加载后才能正确执行。
    • 上述tlogcat -v的截图信息为最新TEE OS版本信息,实际查看结果可能有差异。如有需要,可通过表2获取最新TEE OS固件包,并参考固件升级完成固件升级。