YoC安全组件在CH5631芯片上的移植

简介: CH5631 安全组件

image.png
简介
随着IoT设备爆发式的增长,IoT设备的安全性已经越来越得到广泛的重视,其应用场景包括敏感数据存储、云服务接入、网络安全通信、系统启动、系统固件升级、多媒体版权保护等。然而由于IoT设备能力、成本的碎片化,较难形成能够覆盖所有设备的普适方案,系统设计者必须提供高伸缩性、高可配置的系统方案。 CH5631芯片是用于智能语音交互类产品的AIOT平台,搭配RTOS系统软件和语音算法,在计算能力、存储性能、集成度、低功耗、安全做了深度优化,向产品开发者提供真正低成本、低功耗的完整解决方案。本文基于CH5631芯片平台介绍安全应用pangu_secure_demo的创建及安全组件的移植过程。

移植前准备
代码下载
YoC代码下载见YoC, 本文使用的YoC版本为7.4.

CH5631平台分析
CH5631平台主核为CK804T, 支持TEE安全机制的硬件安全保护,具有片上efuse资源,安全算法上支持AES/RSA/SHA/TRNG硬件安全引擎。

组件移植分析
移植mbedtls组件,支持系统云安全接入、网络安全通信。mbedtls安全算法通过调用sec_crypto组件间接调用CH5631平台硬件能力。

移植sec_crypto,提供安全算法接口。

移植key_mgr, 支持基于efuse的密钥存储。

pangu_secure_demo

基于pangu_demo模板快速创建新应用方案。

移植前请阅读了解yocbook相关内容 最小系统、安全机制及安全组件介绍、CSI设计驱动接口、阿里云(MQTT)传感数据上云例程。

CSI驱动移植。安全组件依赖AES、SHA、RSA、RNG、Efuse驱动。

安全组件移植
步骤1、创建pangu_secure_demo
YoC代码根目录下从模板创建目录
cd ./solutions
cp -r pangu_demo pangu_secure_demo
修改pangu_secure_demo/package.yaml 配置文件,修改后如下:
name: pangu_secure_demo
version: v7.4-dev # <必选项> 组件版本号
description: CH5631安全组件DEMO
type: solution
solution:
board_name: pangu_cpu0
cpu_id: cpu0

depends: # 该组件依赖其他的组件

  • csi: v7.4-dev
  • drivers: v7.4-dev
  • minilibc: v7.4-dev
  • aos: v7.4-dev
  • rhino: v7.4-dev
  • console: v7.4-dev
  • csi_pangu: v7.4-dev
  • pangu_cpu0: v7.4-dev # '>' | ‘>=' | ''
  • uservice: v7.4-dev
  • partition: v7.4-dev

编译参数

build_config:
include:

- app/include
-

internal_include:

- app/include
- app/src

libs:
libpath:
#cflag: "-g -O0"
ldflag: -nostartfiles -Wl,--gc-sections -lm -Wl,-ckmap="yoc.map" -Wl,-zmax-page-size=1024

源文件

source_file:

  • app/src/init/cli_cmd.c
  • app/src/init/init.c
  • app/src/*.c

def_config:
CONFIG_DEBUG: 1
CONFIG_ARCH_CSKY: 1
CONFIG_PARAM_NOT_CHECK: 1

CONFIG_CLI: 1

CONFIG_KV_SMART: 1
CONFIG_SOFTWDT: 1
CONFIG_AT: 1
CONFIG_NTP: 1
CONFIG_USING_TLS: 1

CONFIG_NON_ADDRESS_FLASH: 1

CONFIG_KERNEL_WORKQUEUE: 1
CONFIG_SYSTICK_HZ: 1000

CONFIG_CHIP_PANGU: 1
CONFIG_CHIP_PANGU_CPU0: 1
CONFIG_KERNEL_RHINO: 1
CONFIG_ARCH_INTERRUPTSTACK: 4096
CONFIG_CLI_TASK_STACK_SIZE: 8192

CONFIG_VENDOR_NAME: "thead"
CONFIG_CHIP_NAME: "pangu"
CONFIG_BOARD_NAME: "pangu_cpu0"
CONFIG_CPU: "ck804ef"
删除pangu_demo代码并添加pangu_secure_demo应用的代码。添加后目录如下:

├── app
│ ├── include
│ │ ├── app_config.h
│ │ ├── app_init.h
│ │ ├── csi_config.h
│ │ └── yoc_config.h
│ └── src
│ ├── app_main.c
│ ├── app_main.h
│ ├── demo_ecc_dsa.c
│ ├── demo_ecc_utils.c
│ ├── demo_ecc_utils.h
│ ├── demo_key_mgr.c
│ ├── demo_mbedtls.c
│ ├── demo_sec_crypto.c
│ ├── demo_sec_alimqtt.c
│ ├── demo_utils.h
│ ├── init
│ │ ├── cli_cmd.c
│ │ └── init.c
├── Makefile
├── package.yaml
├── README.md
└── SConstruct

步骤2、安全组件配置
package.yaml中添加安全组件依赖:

depends: # 该组件依赖其他的组件
...

  • mbedtls: v7.4-dev
  • sec_crypto: v7.4-dev
  • key_mgr: v7.4-dev
    package.yaml中添加配置项,设置平台安全机制为TEE:

CONFIG_TEE_CA: 1
package.yaml中添加配置项,使mbedtls 安全算法调用sec_crypto平台实现,进而间接调用平台TEE安全机制。

MBEDTLS_AES_ALT: 1
MBEDTLS_SHA256_ALT: 1
MBEDTLS_RSA_ALT: 1
package.yaml中添加配置项,支持密钥存储在efuse中:

CONFIG_TB_KP: 1
package.yaml 配置文件修改后如下:

name: pangu_secure_demo
version: v7.4-dev # <必选项> 组件版本号
description: CH5631安全组件DEMO

type: solution

solution:
board_name: pangu_cpu0
cpu_id: cpu0

depends: # 该组件依赖其他的组件

  • csi: v7.4-dev
  • drivers: v7.4-dev
  • minilibc: v7.4-dev
  • aos: v7.4-dev
  • rhino: v7.4-dev
  • console: v7.4-dev
  • csi_pangu: v7.4-dev
  • pangu_cpu0: v7.4-dev # '>' | ‘>=' | ''
  • uservice: v7.4-dev
  • partition: v7.4-dev
  • mbedtls: v7.4-dev
  • sec_crypto: v7.4-dev
  • key_mgr: v7.4-dev

编译参数

build_config:
include:

- app/include
-

internal_include:

- app/include
- app/src

libs:
libpath:
ldflag: -nostartfiles -Wl,--gc-sections -lm -Wl,-ckmap="yoc.map" -Wl,-zmax-page-size=1024

源文件

source_file:

  • app/src/init/*
  • app/src/*.c

def_config:
CONFIG_DEBUG: 1
CONFIG_ARCH_CSKY: 1
CONFIG_PARAM_NOT_CHECK: 1

CONFIG_CLI: 1

CONFIG_KV_SMART: 1
CONFIG_SOFTWDT: 1
CONFIG_AT: 1
CONFIG_NTP: 1
CONFIG_USING_TLS: 1

CONFIG_NON_ADDRESS_FLASH: 1

CONFIG_KERNEL_WORKQUEUE: 1
CONFIG_SYSTICK_HZ: 1000

CONFIG_CHIP_PANGU: 1
CONFIG_CHIP_PANGU_CPU0: 1
CONFIG_KERNEL_RHINO: 1
CONFIG_ARCH_INTERRUPTSTACK: 4096
CONFIG_CLI_TASK_STACK_SIZE: 8192

CONFIG_VENDOR_NAME: "thead"
CONFIG_CHIP_NAME: "pangu"
CONFIG_BOARD_NAME: "pangu_cpu0"
CONFIG_CPU: "ck804ef"

##secure config##
CONFIG_TEE_CA: 1

#mbedtls
MBEDTLS_AES_ALT: 1
MBEDTLS_SHA256_ALT: 1
MBEDTLS_RSA_ALT: 1

#key_mgr
CONFIG_TB_KP: 1

#pangu_secure_demo
MBEDTLS_SELF_TEST: 1
CONFIG_SECURITY_DEMO_MBEDTLS: 1
CONFIG_SECURITY_DEMO_SEC_CRYPTO: 1
CONFIG_SECURITY_DEMO_TEST: 1
CONFIG_SECURITY_DEMO_KEY_MGR: 1

步骤3、移植验证
该步骤验证以上的移植是否成功。
编译pangu_secure_demo 并烧写镜像。
重启单板,系统自动运行pangu_secure_demo程序。
重启后串口应该有如下打印,提示输入运行命令。

Welcome to CLI...

mbedtls基本验证命令

sdemo mbedtls
运行成功后串口有如下打印:

AES-ECB-128 (dec): passed
AES-ECB-128 (enc): passed
AES-ECB-192 (dec): passed
AES-ECB-192 (enc): passed
AES-ECB-256 (dec): passed
AES-ECB-256 (enc): passed

AES-CBC-128 (dec): passed
AES-CBC-128 (enc): passed
AES-CBC-192 (dec): passed
AES-CBC-192 (enc): passed
AES-CBC-256 (dec): passed
AES-CBC-256 (enc): passed

AES-CTR-128 (dec): passed
AES-CTR-128 (enc): passed
AES-CTR-128 (dec): passed
AES-CTR-128 (enc): passed
AES-CTR-128 (dec): passed
AES-CTR-128 (enc): passed

SHA-1 test #1: passed
SHA-1 test #2: passed
SHA-1 test #3: passed

SHA-224 test #1: passed
SHA-224 test #2: passed
SHA-224 test #3: passed
SHA-256 test #1: passed
SHA-256 test #2: passed
SHA-256 test #3: passed

CTR_DRBG : passed
CTR_DRBG : passed

RSA key validation: passed
PKCS#1 encryption : passed
PKCS#1 decryption : passed
PKCS#1 data sign : passed
PKCS#1 sig. verify: passed
key_mgr验证命令:
sdemo km
运行成功后串口有如下打印:

key_mgr_demo_main passed!
sec_crypto验证命令
sdemo sec_crypto
运行成功后串口有如下打印:

sec_crypto_sha1_demo passed!
sec_crypto_sha224_demo passed!
sec_crypto_sha256_demo passed!
sec_crypto_rng_demo passed!
sec_crypto_aes_demo passed!
sec_crypto_rsa_demo passed!
mbedtls组件联网验证
通过调用mbedtls实现已MQTT方式安全接入aliyun IoT,验证mbedtls正常工作。

package.yaml中配置MQTT需要的WIFI SSID、PSK、device name信息:

CONFIG_WIFI_SSID: "TESTXXX"
CONFIG_WIFI_PSK: "TESTXXX"
CONFIG_DEVICE_NAME: "e6d0ec6104400000b97baff21bebe40f"
通过串口 CLI命令配置从阿里云注册的联网三要素,如:

factory setali 222lg7ARENf e6d0ec1234400000b97baff21bebe40f 9aaa94b0bdfabdcab815b79ec51ae37e ab09
运行MQTT接入命令:

sdemo alimqtt
运行成功后串口有如下打印:

[ 22.594]tls LD CA root Cert
[ 22.599]tls SSL/TLS struct
[ 22.602]tls Conn /a18lg7ARENf.iot-as-mqtt.cn-shanghai.aliyuncs.com/1883
[ 22.684]tls Handshake
[ 22.938]tls Verify X.509
[ 22.941]tls certverify ret 0x00
[ 22.997]app_net CONNNECT SUCCESS
运行数据发布命令:

sdemo push
运行成功后串口有如下打印:

{"temp":20,"humi":20,"led":1,"deviceName":"e6d0ec6104400000b97baff21bebe40f"}
[ 28.877]app_net push action
[ 28.976]app_net PUSH_SUCCESS

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
9月前
|
人工智能 自然语言处理 搜索推荐
AI赋能教育与阿里云通义千问的结合
本简介介绍了AI技术如何赋能教育行业,结合阿里云“通义千问”大模型,助力海豚大数据及人工智能实验平台实现个性化教学、智能答疑与资源优化,推动高校与企业人才培养模式革新,构建终身学习生态体系。
669 1
|
存储 数据可视化 数据挖掘
想提升电商业务效率?这 6 款团队协作软件千万别错过!
在电商旺季,订单量激增,团队需高效协调运营、营销、客服、物流等环节。可视化协作办公软件成为必备工具,提升业务效率与客户满意度。本文推荐6款优秀软件:板栗看板(国产)、Trello、Asana、Wrike、Monday.com和Basecamp。这些软件具备简洁易用的操作界面、强大的可视化功能、定制化任务管理及便捷的跨团队协作,帮助电商团队应对商品上架、促销推广、订单处理等挑战。J人主导的电商公司可根据自身需求选择最适配的工具,实现高效运营与业务增长。
497 16
|
监控 算法 项目管理
闲聊项目经理和技术经理的区别
【10月更文挑战第24天】项目经理和技术经理在职责、技能要求、关注重点、管理对象等方面存在明显差异。项目经理负责项目整体规划、资源协调、风险管理及交付;技术经理则侧重技术研发、技术方案制定、团队建设和技术标准维护。项目经理需具备出色的沟通协调、项目管理和风险管理能力,而技术经理则需拥有深厚的技术专长、团队管理能力和持续学习的精神。两者虽有不同,但需紧密合作,共同推动项目成功。
722 4
|
存储 搜索推荐 C语言
C语言中的指针函数:深入探索与应用
C语言中的指针函数:深入探索与应用
630 1
|
JavaScript 前端开发
原生js实现走马灯效果
原生js实现走马灯效果
279 0
|
存储 监控 安全
警用装备管理系统框架图
警用装备管理系统采用多层架构,包括感知层实时采集装备信息,网络层安全传输数据,接入层支持设备互联,数据层存储管理装备详情,业务层处理核心操作如出入库、调拨等,应用层提供用户界面操作,展示层以图表等形式展现数据分析结果,辅助决策。
372 1
|
SQL 关系型数据库 BI
关于InnoDB行锁和4种锁是怎么实现的?
总的来说,InnoDB的行锁机制通过索引来实现对数据行的精确控制,并通过多种锁类型和兼容性规则来处理并发事务中的冲突。开发者需要注意合理使用索引和优化事务处理,以提高数据库的并发性能和稳定性。
301 1
|
SQL 开发框架 搜索推荐
lamp源码搭建详解及wordpress搭建
Linux下LAMP( Linux+ Apache+My SQL/ MariaDB+PerI /PHP/ Python)是一组用来搭建动态网站的开源软件架构,本身是各自独立的软件服务,放在一起使用,拥有了越来越兼容成大的Web应用程序平台。
565 0
lamp源码搭建详解及wordpress搭建
|
BI 容器 JavaScript
公开课03期 |基于宜搭的企业报表页面搭建
宜搭的应用搭建者一般针对于表单流程收集上来的数据有分析的需求,本文基于宜搭提供的报表页面服务提供制作心得,主要介绍报表页面组件的使用,数据的筛选联动以及各组件的高级设置功能。
13767 0
公开课03期 |基于宜搭的企业报表页面搭建
|
存储 设计模式 运维
案例酷丨中国体育彩票:一张彩票的上云之旅
经历了起步、探索到壮大,走向新的历史时期的体育彩票,正在经历着由快速到健康的转型发展,彩票因责任而生,更要与社会责任并行,作为国家公益彩票,中国体育彩票经过25年持续健康发展,累计筹集公益金超过5000亿元,担当起越来越多的社会责任,成为推动社会公益事业和体育事业发展的重要力量。
案例酷丨中国体育彩票:一张彩票的上云之旅

热门文章

最新文章

下一篇
开通oss服务