中文
注册

搭建步骤

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

表1 TEE OS和REE patch版本配套关系

TEE OS hpm固件版本

itrustee_tzdriver配套代码tag

itrustee_client配套代码tag

libboundscheck配套代码分支

1.1.0 ≤ version < 1.2.0

v1.0.0

v1.0.0

master

1.2.0

v1.2.0

v1.2.0

master

1.3.0 ≤ version < 1.4.0

v1.3.0

v1.3.0

master

1.4.0

v1.5.0

v1.5.0

master

1.5.0

v1.5.0-r1

v1.5.0-r1

master

1.6.0 ≤ version ≤ 1.6.2

master

master

master

itrustee_tzdriver和itrustee_client代码仓的master分支始终匹配最新TEE OS版本,上述表格可能因延迟未能及时更新,若仓中有TEE OS对应版本的tag标签,则建议使用对应tag标签的源码。

(可选)安装TrustZone License

如果服务器iBMC中“许可证管理”显示“Kunpeng accelerator SEC Function”已处于开启状态且未过期,可跳过本部分操作;否则请参考以下步骤完成TrustZone许可证导入使能“SEC特性”。

请联系华为业务负责人申请TrustZone许可证。获取许可证后,请参考以下步骤完成服务器许可证安装。

  1. 登录iBMC,依次选择iBMC管理->许可证管理

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

    安装完毕后,iBMC显示“Kunpeng accelerator SEC Function”处于开启状态。

配置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源码。
    git clone https://gitee.com/openeuler/itrustee_client.git
  2. 获取itrustee_tzdriver源码。
    git clone https://gitee.com/openeuler/itrustee_tzdriver.git
  3. 获取libboundscheck源码。
    git clone https://gitee.com/openeuler/libboundscheck.git
  4. 将libboundscheck源码分别放置在“itrustee_client/”目录和“itrustee_tzdriver/”目录下,并修改文件夹名称为libboundscheck,层级目录如下所示。
    cp -rf libboundscheck itrustee_client
    cp -rf libboundscheck itrustee_tzdriver

  5. 安装编译依赖。
    1
    yum install openssl-devel zlib-devel kernel-devel
    
  6. 编译itrustee_tzdriver。
    1
    cd itrustee_tzdriver && make
    
    1. 编译tzdriver.ko内核模块依赖内核头文件,itrustee_tzdriver/Makefile指定了内核头文件路径。

      一般情况下内核头文件位于“/usr/src/kernels/<内核版本>”下,若编译脚本未匹配到正确路径,则需要根据实际情况予以替换。请注意,编译使用的内核头文件版本必须与tzdriver.ko最终运行环境的内核版本保持一致,否则可能会出现因内核版本差异导致tzdriver.ko加载失败的情况。可使用uname -r命令查看当前运行环境的内核版本。

    2. itrustee_tzdriver/Makefile指定了mailbox池大小配置。其中单个mailbox池大小为4MB,例如需要mailbox池总大小为128MB,则修改Makefile中“MAILBOX_POOL_COUNT”宏定义为32。

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

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

      麒麟V10 SP3、UOS v20 Server操作系统上编译时,需要删掉Makefile中的-fstack-protector-strong栈保护,否则将报如下栈保护错误:

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

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

  8. 部署itrustee_client。
    1
    make install
    
    • libboundscheck.so和libteec.so为Patch驱动依赖库,需放在“/usr/lib64”目录。针对一些默认不带“/usr/lib64”目录的操作系统,需要新建“/usr/lib64”目录,并加入到系统动态库默认搜索路径中。
    • tlogcat提供REE侧查看TEE侧日志输出的能力,teecd为REE侧用户态守护进程,tlogcat、teecd需要放在“/usr/bin”目录。
    • agentd提供容器内可信应用安全存储和日志存储功能,需部署在容器内“/usr/bin”目录下。非容器使用场景可不部署。
    • mailbox用于CA/TA通信参数传递,影响全局CA/TA并发上限,可根据实际业务需要配置mailbox池大小。当前版本mailbox池大小配置上限为128MB,即“MAILBOX_POOL_COUNT”宏定义最大为32。

(可选)部署SEC驱动

TEE OS 1.3.0版本起,SEC驱动需独立加载。低版本TEE OS可跳过此部分操作。

  1. 获取SEC驱动。在发布的TEE OS固件包里会包含与本版本匹配的SEC驱动,若部署不匹配的SEC驱动,可能影响TEE OS功能。

    下载固件包提取SEC驱动文件“kunpeng_sec_drv.sec”

  2. 部署SEC驱动文件。
    mkdir -p /var/itrustee/tee_dynamic_drv/crypto/
    cp kunpeng_sec_drv.sec /var/itrustee/tee_dynamic_drv/crypto/
    • SEC驱动部署路径由itrustee_client的Makefile文件中的DYNAMIC_CRYPTO_DRV_DIR宏指定,如果需要更换部署路径,需重新编译部署teecd。
    • 启动teecd时会默认加载DYNAMIC_CRYPTO_DRV_DIR指定目录下的所有文件,因此尽量不要将其他任何文件放到该目录下。
    • 启动teecd进程时,会自动加载SEC驱动,SEC驱动未成功加载将影响TEE OS功能。因此需要在启动teecd前部署SEC驱动,若先启动了teecd,可关闭teecd,重新部署SEC启动后,再启动teecd。

加载REE侧模块

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

    tzdriver.ko加载后不支持卸载,仅支持服务器下电再启动的方式将其恢复为未加载状态。

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

    • teecd必须以绝对路径运行,即“/usr/bin/teecd”,“&”符号表示后台执行。
    • 建议添加nohup命令,防止会话关闭导致teecd退出,影响其他会话里的CA/TA运行。
  3. 查看TEE侧日志输出,确认REE侧已具备与TEE侧通信能力。
    1. 查看当前日志信息。
      1
      tlogcat
      

    2. 查看当前TEE OS具体版本信息。若为天池机型,将显示为CCOS。
      tlogcat -v

    3. 查看TEE日志存储路径为“/var/log/tee”
      tlogcat -f &

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

检查TrustZone环境

为了方便客户确认TrustZone环境搭建是否正确,华为提供了TEE状态检查工具对于环境进行检查。

  1. 获取TEE状态检测工具。

    表2获取的固件压缩包里包含了TEE状态检测工具。在里面的tee_check目录下有如下文件。

  2. 将文件拷贝到如下目录,完成tee-check工具的部署。
    mkdir -p /vendor/bin/ /data/tee-check
    cp -rf tee-check /vendor/bin/
    cp -rf 35397f0d-26ef-476c-b955-4806f2c6454a.sec /data/tee-check
    cp -rf teeos.txt /var/itrustee/version/
  3. 运行插件工具。
    /vendor/bin/tee-check
    • 若TrustZone环境正常,则日志结果如下:

    • 若TrustZone环境不正常,则会给出对应提示。例如teecd未启动的错误提示如下:

      根据错误提示可知环境中的teecd未启动,可通过“/usr/bin/teecd &”启动。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词