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

容器内远程证明

TEE OS从1.4.0起,为支持容器内的远程证明,新增了qca_daemon、libqca-report、QTA-report,其中libqca-report和QTA-report可从itrustee_sdk仓中获取源码,qca_daemon由用户根据自身业务进行相应开发。以下将对容器内的远程证明流程进行简要概述。

  1. 参见窗口1窗口2在host侧完成AK密钥和证书的生成及保存。
  2. 参见容器部署支持启动容器,并启动qca_daemon。
    此时qca_daemon可通过sock等方式与host上的RA Service建立连接。并获取容器id和容器的nsid,并传递给RA Service。
    • 容器id和nsid可由qca_daemon获取,传给RA Service;也可由RA Service在host侧获取,只要可以获取到容器id和nsid即可。
    • 容器内获取容器ID和NSID的简单命令如下。
      cat /proc/self/cgroup | head -1 |cut -d/ -f3 
      ls -l /proc/1/ns/ | grep "pid ->" | awk -F"[][]" '{print $2}'
  3. RA Service将容器信息json序列化后,调用QCA lib的RegisterContainer接口,完成容器信息的注册。
  4. 容器内启动待验证的TA。
  5. RA Client发起远程证明挑战。需要携带待证明TA所在的容器信息,如容器ID、容器类型等。
  6. RA Service接收到请求后,根据容器ID将请求转发到对应容器里的qca_daemon。
  7. qca_daemon调用容器里的libqca-report发起证明请求。

    证明过程中,容器里的QTA-report会自动向host上的QTA验证容器的nsid是否与注册时的一致。然后调用TEE OS接口获取度量报告,并将容器ID、容器类型、QTA-report的度量值写入到ta_attrs字段。

  8. qca_daemon将度量报告返回给RA Service,然后返回给RA Client。
  9. RA client对度量报告进行验签,确认报告的完整性。