Itrustee

华为基于TrustZone开发了IturstTEE,一开始是在手机上使用,后来华为出了鲲鹏的服务器,在服务器端也支持了: https://www.hikunpeng.com/zh/developer/boostkit/confidential-computing。公司现有有一套泰山服务器搭建好了TEE环境,现记录一下TEE使用过程中遇到的问题。

环境部署

https://support.huawei.com/enterprise/zh/doc/EDOC1100231607/778dd7e

证书申请

https://support.huawei.com/enterprise/zh/doc/EDOC1100231607/65204c54

SDK开发

CA,TA交互流程: 008kbQFaly1h7zvzqjljcj31fk1bc7hq itrustee sdk在码云上进行了开源,项目test目录下有代码示例,以helloword为例: helloword项目直接编译CA,TA并将其放入对应目录(CA=>/vendor/bin/,TA=>/data/),运行发现返回open session failed(坑来了…),使用tlogcat命令查看日志,发现无相关日志输出… 一番踩坑后发现:下面的这段代码缺少context.ta_path = (uint8_t *)"*.sec";,导致CA根本没有连接到TA,所以根本没有日志…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
    operation.started = OPERATION_START_FLAG;
    operation.paramTypes = TEEC_PARAM_TYPES(
        TEEC_NONE,
        TEEC_NONE,
        TEEC_NONE,
        TEEC_NONE);
    result = TEEC_OpenSession(
        &context, &session, &g_demoTemplateUuid, TEEC_LOGIN_IDENTIFY, NULL, &operation, &origin);
    if (result != TEEC_SUCCESS) {
        printf("teec open session failed");
        goto cleanup_2;
    }

加入代码后可以正常运行了:

1
2
/vendor/bin/teec_hello
Succeed to load TA, TA's version: demo_20200601.

其它要注意的:

  • CA运行路径需是: /vendor/bin/app_name
  • TA:加载CA的路径:
1
addcaller_ca_exec(CA_PATH, "root") == TEE_SUCCESS
Licensed under CC BY-NC-SA 4.0
Built with Hugo
主题 StackJimmy 设计