TEE OS从1.4.0起,为支持容器(或虚拟机, 虚拟机使用方式和容器基本一样,以下以容器为例进行演示)内的远程证明,新增了QCA daemon、QCA lib-report、QTA-report,其中QCA lib-report和QTA-report可从iTrustee SDK仓中获取源码,qca_daemon可从kunpengsecl仓源码获取。相比于主机侧的远程证明,主要增加容器内组件的部署,和host侧新增配置。
cd kunpengsecl git checkout -b container_support origin/feature/container_support
cd itrustee_sdk/ git apply ../kunpengsecl/attestation/tee/tverlib/simulator/0001-libqca-qta-add-delete-interface.patch
cd itrustee_sdk/test/CA/libqca/ make clean; make TARGET_HOST_QCA=y cp output/libqca.so /usr/lib64/
vim itrustee_sdk/test/TA/qta/src/tee_qta.c
ret = addcaller_ca_exec("/vendor/bin/qcaserver", "root"); if (ret != TEE_SUCCESS) return ret;
cd itrustee_sdk/test/TA/qta/ make clean; make TARGET_HOST_QTA=true cp e08f7eca-e875-440e-9ab0-5f381136c600.sec /var/itrustee/ta/
cd kunpengsecl make clean && make build cp attestation/tee/demo/pkg/qcaserver /vendor/bin/
容器内支持远程证明,除按机密容器支持部署启动容器外,需新增qca_daemon、QCA lib-report、QTA-report的部署。如果容器操作系统与主机侧有差异,建议在容器内重新编译三者;如果相同,可直接复用编译部署QCA lib和QTA和编译演示Demo下载的源码和编译环境,使用如下命令重新编译后,将三个组件拷贝到容器。以下步骤在容器内操作,编译环境可参考前文host侧的步骤。
cd itrustee_sdk/test/CA/libqca/ make clean; make TARGET_CONTAINER_QCA=y
vim itrustee_sdk/test/TA/qta/src/tee_qta.c
ret = addcaller_ca_exec("/vendor/bin/qca_daemon", "root"); if (ret != TEE_SUCCESS) return ret;
cd itrustee_sdk/test/TA/qta/ make clean; make TARGET_QTA_REPORT=true cp 4f84c0e0-4c3f-422f-97dc-14bfa2314ad1.sec /var/itrustee/ta/
cd kunpengsecl make clean && make build cp kunpengsecl/attestation/tee/demo/pkg/qca_daemon /vendor/bin/
如果直接在host上编译然后拷贝到容器,上述三组件依赖的so也需拷贝到容器内。比如libteec_adaptor.so和libboundscheck.so等。
# 创建私有IP地址 ifconfig enp125s0f0:remote 10.10.10.10 netmask 255.255.255.0 up # 防火墙开放端口 firewall-cmd --zone=public --add-port=9000/tcp
cd kunpengsecl/attestation/tee/demo/qca_demo/cmd
vim config.yaml
qcaconfig: ... virtual: server: 10.10.10.10:9000 # RA service增加的tcp服务端口,侦听容器里的qca_daemon连接请求 healthcheck: 10 # 检查连接有效性的周期,单位minute, 范围0-7天。
/vendor/bin/qcaserver -V true -C 1
/vendor/bin/qca_daemon -H 10.10.10.10:9000
/vendor/bin/rsa_demo
cd kunpengsecl/attestation/tee/demo/attester_demo/cmd
vim config.yaml
attesterconfig: ... virtualguest: # 待验证TA运行的容器信息 id: xxxxx # 如果是容器,为64位容器ID; 如果为虚拟机,为36位虚拟机uuid type: docker # 目前只支持Docker和KVM
vim basevalue.txt
.... 4f84c0e0-4c3f-422f-97dc-14bfa2314ad1 【img_hash】 【mem_hash】
go run main.go -M 1
当前机密计算不支持mem-hash度量。