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

容器(虚拟机)内远程证明

TEE OS从1.4.0起,为支持容器(或虚拟机, 虚拟机使用方式和容器基本一样,以下以容器为例进行演示)内的远程证明,新增了QCA daemon、QCA lib-report、QTA-report,其中QCA lib-report和QTA-report可从iTrustee SDK仓中获取源码,qca_daemon可从kunpengsecl仓源码获取。相比于主机侧的远程证明,主要增加容器内组件的部署,和host侧新增配置。

host侧QCA lib和QTA修改

  1. 参见编译部署QCA lib和QTA编译演示Demo下载源码和配置编译环境。
  2. 将kunpengsecl里新增容器信息删除接口的Patch补丁打入QCA lib和QTA中。
    cd itrustee_sdk/
    git apply ../kunpengsecl/attestation/tee/tverlib/simulator/0001-libqca-qta-add-delete-interface.patch

  3. 编译host侧支持容器远程证明的QCA lib,并重新部署。
    cd itrustee_sdk/test/CA/libqca/
    make clean; make TARGET_HOST_QCA=y
    cp output/libqca.so /usr/lib64/
  4. 在QTA源码中给qcaserver赋权,修改如下文件。
    1. 打开文件。
      vim itrustee_sdk/test/TA/qta/src/tee_qta.c
    2. “i”键进入编辑模式,并增加如下内容。
      ret = addcaller_ca_exec("/vendor/bin/qcaserver", "root");
      if (ret != TEE_SUCCESS)
          return ret;

    3. “Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
  5. 编译host侧的QTA,将host侧QTA的config和私钥,放到itrustee_sdk/build/signtools/的signed_config和TA_cert目录下,并按申请QTA证书时配置的configs.xml资源文件修改manifest/manifest.txt。
    cd itrustee_sdk/test/TA/qta/
    make clean; make TARGET_HOST_QTA=true
    cp e08f7eca-e875-440e-9ab0-5f381136c600.sec /var/itrustee/ta/

容器内组件部署

容器内支持远程证明,除按机密容器支持部署启动容器外,需新增qca_daemon、QCA lib-report、QTA-report的部署。如果容器操作系统与主机侧有差异,建议在容器内重新编译三者;如果相同,可直接复用编译部署QCA lib和QTA编译演示Demo下载的源码和编译环境,使用如下命令重新编译后,将三个组件拷贝到容器。以下步骤在容器内操作,编译环境可参考前文host侧的步骤。

  1. 参见编译部署QCA lib和QTA下载源码和配置编译环境。
  2. 编译容器侧的QCA lib-report。
    cd itrustee_sdk/test/CA/libqca/
    make clean; make TARGET_CONTAINER_QCA=y
  3. 在qta源码中给qca_daemon赋权,修改如下文件。
    1. 打开文件。
      vim itrustee_sdk/test/TA/qta/src/tee_qta.c
    2. “i”键进入编辑模式,并增加如下内容。
      ret = addcaller_ca_exec("/vendor/bin/qca_daemon", "root");
      if (ret != TEE_SUCCESS)
          return ret;

    3. “Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
  4. 编译容器侧的QTA-report并部署。将QTA-report的config和私钥,放到“itrustee_sdk/build/signtools/的signed_config”“TA_cert”目录下,并按申请qta-report证书时配置的configs.xml资源文件修改“manifest/manifest-report.txt”
    cd itrustee_sdk/test/TA/qta/
    make clean; make TARGET_QTA_REPORT=true
    cp 4f84c0e0-4c3f-422f-97dc-14bfa2314ad1.sec /var/itrustee/ta/
    • QTA-report和QTA一样,作为远程证明的特权TA,限定QTA-report的uuid为4f84c0e0-4c3f-422f-97dc-14bfa2314ad1,service_name可予以替换。
    • 编译完毕后,在当前目录“hash_4f84c0e0-4c3f-422f-97dc-14bfa2314ad1.txt”中可以查看QTA-report的基准度量值,在后续RA client验证容器内TA度量报告时,需要验证QTA-report的基准度量。
  5. 编译qca_daemon并部署,请参见编译演示Demo完成编译后,会在“kunpengsecl/attestation/tee/demo/pkg”生成qca_daemon。
    cd kunpengsecl
    make clean && make build
    cp kunpengsecl/attestation/tee/demo/pkg/qca_daemon /vendor/bin/

    如果直接在host上编译然后拷贝到容器,上述三组件依赖的so也需拷贝到容器内。比如libteec_adaptor.so和libboundscheck.so等。

演示Demo

  1. 参见窗口1在host侧启动AS服务。
  2. 参见窗口2在host侧部署RA Service,为使RA Service能够侦听qca_daemon请求,并建立连接,RA Service需新增一个socket服务。
    1. 为使创建的socket服务对外不可见,只供本机容器使用,可将服务建立在私有IP地址上,可参考如下方法,如下方法重启服务器后将失效。
      # 创建私有IP地址
      ifconfig enp125s0f0:remote 10.10.10.10 netmask 255.255.255.0 up
      # 防火墙开放端口
      firewall-cmd --zone=public --add-port=9000/tcp
    2. 进入RA Service配置文件目录。
      cd kunpengsecl/attestation/tee/demo/qca_demo/cmd
    3. 增加socket服务的配置,打开文件。
      vim config.yaml
    4. “i”键进入编辑模式,并按需求修改如下内容。
      qcaconfig:
        ...
        virtual:
          server: 10.10.10.10:9000  # RA service增加的tcp服务端口,侦听容器里的qca_daemon连接请求
          healthcheck: 10           # 检查连接有效性的周期,单位minute, 范围0-7天。
    5. “Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
    6. 在RA Service启动时增加-V命令行参数,表示支持容器和虚拟机。
      /vendor/bin/qcaserver -V true -C 1

  3. 参见容器部署支持启动容器,并在容器内启动qca_daemon。启动后会在当前目录生成qca_daemon.log日志文件。
    /vendor/bin/qca_daemon -H 10.10.10.10:9000

  4. 在容器内启动待验证TA。
    /vendor/bin/rsa_demo
  5. 参见窗口4配置待验证TA信息和AS服务证书。然后增加待验证TA运行的容器信息,并在基准度量文件中增加qta-report的基准度量值。
    cd kunpengsecl/attestation/tee/demo/attester_demo/cmd
    1. 修改配置文件。
      vim config.yaml
    2. “i”键进入编辑模式,增加容器信息。
      attesterconfig:
        ...
        virtualguest:      # 待验证TA运行的容器信息
          id: xxxxx        # 如果是容器,为64位容器ID; 如果为虚拟机,为36位虚拟机uuid
          type: docker     # 目前只支持Docker和KVM
    3. “Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
    4. 在基准度量文件中增加QTA-report基准度量值。
      vim basevalue.txt
    5. “i”键进入编辑模式,增加QTA-report基准度量值。
      ....
      4f84c0e0-4c3f-422f-97dc-14bfa2314ad1 【img_hash】 【mem_hash】
    6. “Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
  6. RA client发起度量请求。
    go run main.go -M 1

    当前机密计算不支持mem-hash度量。

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

当前产品无相关内容

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