Skip to content

Latest commit

 

History

History
122 lines (82 loc) · 5.85 KB

README_zh-cn.md

File metadata and controls

122 lines (82 loc) · 5.85 KB

Security

[English | 中文]

项目概览

当前项目当中主要包含了 openvela 当中的 TACA 以及 set_model 工具的实现。

其中 CA/TA 是基于标准的 GP API 来实现的,如果我们当前的设备支持 TEE 的话,那么我们把运行在 TEE 当中的 openvela 称为 openvela TEE,运行在普通环境当中的 openvela 称为 openvela AP

其中 CA 是运行在 openvela AP 当中, TA 是运行在 openvela TEE当中的。 在 openvela 当中 CATA 之间的整体通信过程如下所示:

+-------------+               +---------------+
|[openvela AP]|               |[openvela TEE] |
|             |               |               |
|    CA       |               |     TA        |
|    |        |               |     /|\       |
|   \|/       |               |      |        |
| LIB_TEEC    |               |  TA MANAGER   |
|    |        |               |     /|\       |
|   \|/       | rpmsg socket  |      |        |
|  /dev/tee0 <----------------> opteed server |
|_____________|               |_______________|

项目描述

1 CA

  1. comsst CA

    comsst CA 是用于同 comsst TA 之间通信的 CA 程序,里面包含了 comsst 的录入读取验证删除操作。 comsst CA 本身是一个完整的 CA 程序,但是用户也可以选择基于 comsst CA 对外提供的 API 来定义自己的逻辑, 进行二次开发。

  2. pin CA

    pin CA 是用于同 pin TA 之间通信的 CA 程序,里面包含了 pin 的获取存储删除验证操作。 pin CA 本身是一个完整的 CA 程序,但是用户也可以选择基于 pin CA 对外提供的 API 来自定义自己的逻辑, 进行二次开发。

  3. triad CA

    triad CA 是用于同 triad TA 之间通信的 CA 程序,里面包含了设备 keydid 以及 did hmac 的获取删除和更新操作。 triad CA 本身是一个完整的 CA 程序,但是用户也可以基于 triad CA对外提供的 API 来定义自己的逻辑, 进行二次开发。

2 TA

  1. comsst TA

    comsst TA 内部主要是用于调用底层的 TEE API 来实现 comsst 的录入读取验证删除操作。

  2. pin TA

    pin TA 内部主要是用于调用底层的 TEE API 来实现 pin 的录入读取更新删除验证操作。

  3. triad TA

    triad TA 内部主要是用于调用底层的 TEE API 来实现系统 keydid 的读取删除和写入操作。

3 tools

tools 当中主要包含了一个 set_model 工具。

set_model 工具主要是用于存储设备的一些关键信息,例如设备的 sn 码, wifi mac 地址, bluetooth mac 地址,以及设备的唯一标识 did 等信息。

set_model 的内部实现原理是通过 kvdb 来保存这些关键信息的。 这些数据保存的具体位置可以通过给 set_model 工具传输指定的参数来指定具体的存储路径。

使用指南

1 CA

  1. comsst CA

    首先在 openvela AP 当中打开 CONFIG_CA_COMSST_API 选项。 然后在当前工程当中,提供了完整使用 comsst CA API 的测试程序 comsst api demo

  2. pin CA

    首先在 openvela AP 当中打开 CONFIG_CA_PIN_API 选项。 然后在当前工程当中,提供了完整使用 pin CA API 的测试程序 pin api demo

  3. triad CA

    首先在 openvela AP 当中打开 CONFIG_CA_TRIAD_API 选项。 然后在当前工程当中,提供了完整使用 triad CA API 的测试程序 triad api demo

2 TA

如果我们需要在 openvela 当中使用 TA 程序的话,需要在 openvela TEE 当中打开下面的配置选项:

CONFIG_INTERPRETERS_WAMR=y
CONFIG_INTERPRETERS_WAMR_AOT=y
CONFIG_INTERPRETERS_WAMR_BUILD_MODULES_FOR_NUTTX=y
CONFIG_INTERPRETERS_WAMR_LIBC_BUILTIN=y
CONFIG_TA_TRIAD=y # 如果是使用triad TA的话,需要打开这个选项
CONFIG_TA_COMSST=y # 如果是使用comsst TA的话,需要打开这个选项
CONFIG_TA_PIN=y # 如果是使用pin TA的话,需要打开这个选项

3 set_model

在使用 set_model 工具时,我们首先需要打开 CONFIG_SC_SET_MODEL 选项。

由于 set_model 工具本身具有很多的子功能,因此在使用相对应的功能时,我们需要打开相应的选项。 set_model 工具是直接基于命令行的工具,可以直接在 nsh 当中运行。

下面是在 nsh 当中运行 set_model 工具的命令,参数,以及对应的配置选项:

命令 预期结果 对应的配置选项
set_model set sn 55119/F3YN00102 [ INFO] [ap] Set sn=55119/F3YN00102 success SC_SET_MODEL_PRODUCT_ID
set_model set mac_wifi CC:D8:43:20:C4:22 [ INFO] [ap] Set mac_wifi=CC:D8:43:20:C4:22 success SC_SET_MODEL_PRODUCT_HARDWARE
set_model set mac_bt CC:D8:43:20:C4:22 [ INFO] [ap] Set mac_bt=CC:D8:43:20:C4:22 success SC_SET_MODEL_PRODUCT_HARDWARE
set_model set miio_did 771897593 [ INFO] [ap] Set miio_did=771897593 success SC_SET_MODEL_PRODUCT_APP_ID
set_model set miio_key 0000000000000001 [ INFO] [ap] Set miio_key=0000000000000001 success SC_SET_MODEL_PRODUCT_ID
set_model set color_id 0 [ INFO] [ap] Set color_id=0 success SC_SET_MODEL_PRIORITY
set_model set color_desc 000000000000000 [ INFO] [ap] Set color_desc=000000000000000 success SC_SET_MODEL_PRIORITY
set_model get [ INFO] [ap] get /data/etc/device.info success SC_SET_MODEL_PRIORITY
set_model setpsm [ INFO] [ap] Writing psm path and set property success SC_SET_MODEL_MIIO_PSM_PATH
set_model reset [ INFO] [ap] Reset /data/etc/device.info success CONFIG_SC_SET_MODEL