LiteOS组件尝鲜-玩转TinyCryp

举报
Lionlace 发表于 2021/10/29 16:24:30 2021/10/29
【摘要】 阔别数日的LiteOS组件尝鲜系列再次回归!本期小编将为大家带来LiteOS开源版本TinyCrypt的使用指南,如果你对本期内容感兴趣的话,随小编一起进入探索之旅吧

基本介绍

Tinycrypt 是一种简单、快速、可配置的小型加密库,支持aes(对称加密)、sha256(哈希)等算法,广泛应用于物联网设备间通信以及文件安全等领域。

TinyCrypt具备占用内存小、安全性高和使用灵活等优点。TinyCrypt占用的内存比其他的后端加密库要小几个数量级;同时它具有较高的安全性,可使物联网设备之间的通信和连接始终保持加密状态。另外TinyCrypt减少了各个文件之间的依赖关系,可以按照用户所需进行选择性编译。

使用说明

接下来以TinycryptDemo为例介绍TinyCrypt的使用。

解析Tinycrypt Demo

在tinycrypt_demo.c中主要实现通过分组链接模式加密算法模式(CBC)对字符串g_demoPlainText进行加解密。

TinyCrypt Demo接口介绍:

  • 设置加密密钥

tc_aes128_set_encrypt_key(TCAesKeySched_t s, const uint8_t *k);

     s: 初始化结构tc_aes_key_sched_struct;

     k:密钥;

     功能:根据输入密钥初始化tc_aes_key_sched_struct结构体。

  • CBC模式加密

tc_cbc_mode_encrypt(uint8_t *out, unsigned int outlen, const uint8_t *in, unsigned int inlen, const uint8_t *iv, const TCAesKeySched_t sched);

     out:输出密文;

     outlen:输出密文长度;

     in:输入明文;

     inlen:输入明文长度;

     iv:初始化向量;

     sched:密钥;

     功能:根据输入明文,初始化向量和加密密钥加密生成密文。

  • 设置解密密钥

tc_aes128_set_decrypt_key(TCAesKeySched_t s, const uint8_t *k);

     s: 初始化结构tc_aes_key_sched_struct;

     K:密钥;

     功能:根据输入密钥初始化tc_aes_key_sched_struct结构体。

CBC模式解密

tc_cbc_mode_decrypt(uint8_t *out, unsigned int outlen, const uint8_t *in, unsigned int inlen, const uint8_t *iv, const TCAesKeySched_t sched);

    out:输出明文;

    outlen:输出明文长度;

    in:输入密文;

    inlen:输入密文长度;

    iv:初始化向量;

    sched:密钥;

    功能:根据输入密文,初始化向量和解密密钥加密生成明文。

使能Tinycrypt Demo

  • LiteOS源码根目录下根据实际使用的开发板,拷贝tools/build/config/目录下的默认配置文件${platform}.config到根目录,并重命名为.config
  • 继续在LiteOS源码根目录下执行make menuconfig命令,按如下菜单路径使能Tinycrypt组件和Tinycrypt Demo
Demos --->
Security Demo --->
[*] Enable Tinycrypt Demo

保存退出后,LiteOS会从github上自动下载Tinycrypt源代码,并从gitee上下载适配LiteOS系统的patch包,并针对源代码打入patch包。组件下载流程请参考三方开源组件下载脚本components/download.sh。

注意:下载需要Linux主机可以访问互联网,并安装git

编译运行Tinycrypt Demo

使能Tinycrypt Demo后,在LiteOS源码根目录下执行make clean; make -j命令编译LiteOS工程,编译成功后会在out/{platform}/lib路径下生成tinycrypt.a和tinycrypt_demo.a文件,系统镜像文件为Huawei_LiteOS.bin。

以Cloud_STM32F429IGTx_FIRE开发板为例来运行Tinycrypt Demo,其他开发板操作请参考快速入门:https://gitee.com/LiteOS/LiteOS/blob/master/doc/LiteOS_Quick_Start.md

LiteOS启动后会运行Tinycrypt Demo,执行分组链接模式加密算法(CBC)对g_demoPlainText进行加解密。执行结果如下:

********Hello Huawei LiteOS********
LiteOS Kernel Version : 5.0.0
build data : May 10 2021 17:38:10
**********************************
osAppInit
cpu 0 entering scheduler
app init!
Hello, welcome to liteos demo!
Tinycrypt demo task start to run.
encrypted = [0123456789abcdef9bcb4cdbc8e194e8fb3febf7f661098d45af9df1f468c5c83b9bacd9df449ba]
decrypted = [hello liteOS !]
Tinycrypt demo task finished.
Huawei LiteOS #

以上为TinyCrypt使用指南的全部内容,欢迎大家学习交流。

结语

未来我们还会持续新增更多组件、开发板、架构、特性等。

感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步:https://gitee.com/LiteOS/LiteOS/issues

为了更容易找到“LiteOS”代码仓,建议访问https://gitee.com/LiteOS/LiteOS,关注“ Watch”、点赞“Star”、并“Fork”到自己账号下,如下图。


- end –


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。