中文
注册

特性使用

固件要求:

表1 固件版本要求

固件

版本要求

TEE OS

>= 1.2.0

软件包获取:

表2 软件包获取途径

软件名称

说明

获取途径

verify lib

鲲鹏安全库,提供远程证明报告校验API。

https://gitee.com/openeuler/kunpengsecl/tree/feature/tee-phase1

QCA lib

提供证明密钥注册、远程证明API。

https://gitee.com/openeuler/itrustee_sdk.git

QTA

运行在TEE侧特权TA应用,可对目标TA发起证明挑战,配合QCA实现证明报告获取传递。

https://gitee.com/openeuler/itrustee_sdk.git

iTrustee SDK

iTrustee配套的开发者工具,要求版本不低于 6.1.1,支持编译TA自动生成TA基线度量值,用于TA远程/本地证明。

https://gitee.com/openeuler/itrustee_sdk.git

libboundscheck

安全函数库

https://gitee.com/openeuler/libboundscheck.git

当前版本,远程证明中verify lib、QCA lib、QTA均开源至openEuler社区,并提供Demo示例展示如何使用远程证明相关API,开发者可参考Demo示例开发远程证明服务应用。远程证明Demo获取、编译使用可参考如下步骤。

  1. 编译、部署libteec.so。

    可参考获取iTrustee patch包 获取、编译itrustee_client,并将libteec.so部署在“/usr/lib64”目录,并确认路径“/usr/lib64”已添加至系统动态库默认搜索路径。

  2. 下载配套iTrustee SDK,已包含QCA lib、QTA源码。

    下载地址:https://gitee.com/openeuler/itrustee_sdk.git

    代码分支:master

    iTrustee SDK已包含QCA lib、QTA源码,代码路径如下:

    QCA lib:itrustee_sdk/test/CA/libqca

    QTA:itrustee_sdk/test/TA/qta

  3. 下载并集成安全函数库。

    下载地址:https://gitee.com/openeuler/libboundscheck.git

    代码分支:master

    iTrustee SDK集成安全函数库

    cp -rf libboundscheck/ itrustee_sdk/thirdparty/open_source/  #请根据实际路径予以替换
  4. QCA lib、QTA编译部署。
    1. 编译、部署QCA lib。
      cd itrustee_sdk/test/CA/libqca   #请根据实际路径予以替换
      make
      cp output/libqca.so /usr/lib64 && ldconfig

      编译成功后, 会生成output/libqca.so动态库,需将libqca.so部署到系统动态库默认搜素路径中,例如“/usr/lib64”

    1. 编译、部署QTA。

      QTA同普通TA一样,需先获取华为颁发的TA开发者证书,请参考调测环境TA应用开发者证书申请

      获取QTA的TA开发者证书、签发的config二进制后,需将QTA的TA私钥、config二进制部署到以下路径:

      “itrustee_sdk/build/signtools/signed_config/config”

      “itrustee_sdk/build/signtools/TA_cert/private_key.pem”
      pip3 install pycryptodomex           #安装iTrustee SDK TA签名工具依赖
      cd itrustee_sdk/test/TA/qta    #根据实际路径予以替换
      make
      cp e08f7eca-e875-440e-9ab0-5f381136c600.sec /vendor/bin

      QTA编译成功后,会生成e08f7eca-e875-440e-9ab0-5f381136c600.sec,需部署到“/vendor/bin”目录下。该目录由QCA lib代码指定,可根据实际情况予以修改。

    QTA作为远程证明的特权TA,限定QTA的uuid为e08f7eca-e875-440e-9ab0-5f381136c600,QTA的service_name可予以替换。

  5. 下载鲲鹏安全库,获取远程证明Demo。

    下载地址:https://gitee.com/openeuler/kunpengsecl/tree/feature/tee-phase1

    代码分支:feature/tee-phase1

  6. 设置RA Service的QCA lib引用路径。
    vim kunpengsecl/attestation/tee/demo/qca_demo/qcatools/qcatools.go  #根据实际路径予以替换

    需指定以下三个关键路径:

    • libqca对外API头文件搜索路径
    • itrustee sdk中CA应用头文件搜索路径
    • 链接libqca.so、libteec.so动态库

    截图中文件修改点仅供参考,具体修改后路径需根据实际情况予以替换。

    RA Service Demo需通过“#include <ra_client_api.h>”引用libqca对外API头文件,并额外新增"#include <stdbool.h>"和“#include <stdlib.h>”头文件。

  7. 编译远程证明Demo。
    1. 编译环境准备。
      yum install golang
      cd kunpengsecl/attestation/quick-scripts  #根据实际路径予以替换
      bash prepare-build-env.sh
    2. 编译libteeverifier动态库。
      cd kunpengsecl/attestation/tee/tverlib/verifier #根据实际路径予以替换
      make
      cp -rf libteeverifier.so /usr/lib64
      ldconfig
    3. 编译Demo。
      cd kunpengsecl/attestation/tee/demo     #根据实际路径予以替换
      make
      cp pkg/qcaserver /vendor/bin/ra_client_test

      编译成功后会产生pkg目录,其中pkg/qcaserver即RA Service,需部署在“/vendor/bin”目录下并命名为ra_client_test。RA Service的部署路径和可执行文件名取决于QTA代码指定路径,QTA会检查远程证明请求发起CA(e.g RA Service)的加载路径,开发者可根据实际需要予以调整。

  8. 运行远程证明Demo。
    1. 启动RA Service。
      cd /vendor/bin
      vim config.yaml   #参考如下config.yaml示例,根据实际需要予以内容替换
      /vendor/bin/ra_client_test

      RA Service默认会从当前命令执行路径加载config.yaml配置文件,config.yaml指定了RA Service远程证明侦听的IP地址和端口信息、以及远程证明场景,当前版本仅支持无AS服务的远程证明,即scenario等于0。

      config.yaml示例如下:
      qcaconfig:
        server: 127.0.0.1:40007
        scenario: 0

      RA Service服务正常启动后截图如下:

      提示RA Service成功加载配置文件,完成侦听IP、端口绑定,并主动通过QCA Lib api接口完成远程证明密钥注册。

    2. 启动attester,发起远程证明。
      cd kunpengsecl/attestation/tee/demo/pkg/  #根据上述步骤6中产生的attester二进制实际路径予以替换
      vim config.yaml      #参考如下config.yaml示例,根据实际需要予以内容替换
      vim basevalue.txt    #指定TA应用远程基线度量值
      ./attester

      远程证明client attester通过RPC(Remote Procedure Call)实现与RA Service通信,需通过config.yaml指定RA Service服务IP和端口信息,并指定远程证明待度量目标TA uuid信息等信息。

      config.yaml示例如下:
      attesterconfig:
        server: 127.0.0.1:40007
        basevalue: "./basevalue.txt"
        mspolicy: 1
        uuid: f68fd704-6eb1-4d14-b218-722850eb3ef0

      server:指定RA Service IP地址和端口。

      basevalue:TA基线度量值存储文件。

      mspolicy:远程度量策略,1为仅对比img-hash值,2为仅对比mem-hash值,3为同时对比img-hash和mem-hash两个值。

      uuid:待度量目标TA uuid信息,请根据实际情况予以替换。

      basevalue.txt示例如下:
      f68fd704-6eb1-4d14-b218-722850eb3ef0 bda93201babc6ee96b60edd6b4104c0a5b2ab66f22b3e82a0fbe121c955755b2 319964db5bfad8ffd1b32abe7148f7681b1ef15f4bab8a20d377d9623feb3758

      basevalue文件以十六进制字符串的形式存储TA应用的基准值记录,每一条basevalue记录分为三项:uuid、image-hash、mem-hash,项与项之间用空格间隔,记录之间用换行间隔。

      启动远程证明client attester运行截图如下:

      其中RA Service提示获取TA远程证明报告失败:

      使用tlogcat可观察到QTA异常日志:

      这是由于待度量TA未加载运行,获取TA度量报告失败。加载待度量TA后, 重新运行atterster,运行结果截图如下:

      成功获取目标TA度量报告,报告有效性检查通过后, 提取报告中的TA实时度量值,并于basevalue中的基线度量值匹配成功。

      目标TA的基线度量值在用iTrustee sdk构建目标TA过程中会自动通过执行itrustee_sdk/build/signtools/get_ta_elf_hash.py计算出TA镜像和运行时内存(代码段、只读数据段)的度量值,结果记录在itrustee_sdk/build/signtools/hash_{TA-UUID}.txt文件中。 例如,hash_f68fd704-6eb1-4d14-b218-722850eb3ef0.txt内容如下:

      • 为确认AK(Attestation Key)的可信,鲲鹏安全库在校验端将使用华为的AIK二级公钥证书
      • 以上介绍了鲲鹏安全库无AS场景下远程Demo使用,AS场景下的远程证明Demo可参考鲲鹏安全库远程证明Demo介绍
搜索结果
找到“0”个结果

当前产品无相关内容

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