您尚未登录。

#1 2020-03-14 12:10:40

metro
会员
注册时间: 2019-03-09
累计积分: 300

求推荐单片机使用的加密算法

简单说一下背景,目前计划在CH558上实现一个bootloader,并且计划加上固件加密功能。
初步想法是实现一个简单的对称加密算法,密钥存储在单片机上,bootloader从USB接收加密后的程序,并在本地解密之后写入到Flash中(这一步可以添加校验以确保固件来源可靠)。只要在bootloader部分不提供密钥区的访问,这样应该是安全的。
那么问题来了,现在需要在单片机上实现一个简单的加密算法(准确说只包括解密部分),我的要求如下:

  • 最重要的是空间限制,由于bootloader区域只有2 KB,因此涉及到挂表的算法基本上不是很现实,但多轮加密只要不大复杂应该可行。空间复杂度不要超过O(n)的级别。

  • 时间方面比较宽松,只要不是很慢就可以了(非对称算法似乎不可行?),毕竟Flash的擦除和写入本身也不是很快。

  • 支持细粒度的加密,目测加密块大小在8到1024 Bytes之间,再大就会分成多个block分开加密了。

  • 安全性要足够(暂时不考虑侧信道攻击之类的话题),对密钥格式之类的没有多大要求,只要可以存在单片机上即可。对于bootloader应用,似乎对称加密就可以接受,不需要考虑网络传输的问题。

对于上述要求,我看了一下已有的算法,感觉TEA(以及变种XXTEA)似乎是个可行的选择,不过也有对特定条件下加密强度的担忧(见cryptanalysis - Is TEA considered secure? - Cryptography Stack Exchange)。
大家对这方面有没有什么想法?欢迎交流。

离线

#2 2020-03-14 23:38:10

Hemingway2003
会员
注册时间: 2020-03-10
累计积分: 1

Re: 求推荐单片机使用的加密算法

我做蓝牙这块的,目前基本都是aes--但是这个是基于蓝牙芯片的硬件aes,所以占用资源其实很小,这一块是用于空中升级检验的

离线

#3 2020-03-15 00:00:01

metro
会员
注册时间: 2019-03-09
累计积分: 300

Re: 求推荐单片机使用的加密算法

Hemingway2003 说:

我做蓝牙这块的,目前基本都是aes--但是这个是基于蓝牙芯片的硬件aes,所以占用资源其实很小,这一块是用于空中升级检验的

确实,对称加密用的比较多的还是DES/TDES/AES这些,而且AES的硬件加速效果也还可以。像STM32的一些单片机就可以对AES进行加解密。
不过AES有字节代换,使用时需要挂个表,操作的轮数也比较多,对于硬件资源有限的单片机来说还是太复杂了些。

离线

#4 2020-03-16 10:23:12

泡在妞里的Feel
会员
注册时间: 2019-09-09
累计积分: 49

Re: 求推荐单片机使用的加密算法

谷歌的 “chacha20加密算法” 符合你需求。

离线

#5 2020-03-16 10:50:53

metro
会员
注册时间: 2019-03-09
累计积分: 300

Re: 求推荐单片机使用的加密算法

泡在妞里的Feel 说:

谷歌的 “chacha20加密算法” 符合你需求。

感谢推荐。简单看了一下,对代码和内存的要求确实都不算大(当然还是要比XXTEA多一些),不过好不好用还是要编码试试看才知道。
贴个标准地址:ChaCha20 and Poly1305 for IETF Protocols

最近编辑记录 metro (2020-03-16 10:51:10)

离线

#6 2020-12-04 03:31:53

waku
会员
注册时间: 2020-02-29
累计积分: 12

Re: 求推荐单片机使用的加密算法

楼主项目进度怎么样了?我也想学习这方面的知识。

离线

#7 2020-12-04 08:29:19

le062
会员
注册时间: 2019-02-07
累计积分: 21

Re: 求推荐单片机使用的加密算法

xxtea
tinyaes
就上面两种可行易用,非数学专业的也不会去尝试破这两种加密,防其他程序员足够了。
代码去github上找,前者代码几十行,后者几百行吧。

离线

#8 2020-12-04 09:08:43

raspberryman
会员
注册时间: 2019-12-27
累计积分: 246

Re: 求推荐单片机使用的加密算法

可是怎么保管好密钥呢?比如用全志A33给单片机升级(兼加密芯片功能),如何保证密钥不泄露呢?因为全志的linux很容易把文件系统都抖出来。

离线

#9 2020-12-04 09:18:25

le062
会员
注册时间: 2019-02-07
累计积分: 21

Re: 求推荐单片机使用的加密算法

raspberryman 说:

可是怎么保管好密钥呢?比如用全志A33给单片机升级(兼加密芯片功能),如何保证密钥不泄露呢?因为全志的linux很容易把文件系统都抖出来。

那是硬件来负责的。找原厂,搞不定就换硬件呗。

离线

#10 2020-12-04 11:09:30

Blueskull
会员
注册时间: 2020-02-20
累计积分: 257

Re: 求推荐单片机使用的加密算法

raspberryman 说:

可是怎么保管好密钥呢?比如用全志A33给单片机升级(兼加密芯片功能),如何保证密钥不泄露呢?因为全志的linux很容易把文件系统都抖出来。

BL出厂烧录密钥,然后之后整个生命周期里面再也看不见密钥。固件在原厂用密钥加密,然后全套推送环节都是加密的,直到最后传到BL里面再现场解密。

离线

#11 2020-12-04 17:25:04

posystorage
会员
注册时间: 2018-05-06
累计积分: 100

Re: 求推荐单片机使用的加密算法

关注一下。
我现在的做法是做个256字节的乱序换码表,简单粗暴速度快 但是确实可能没密钥方法好

离线

#12 2020-12-05 01:00:40

微凉VeiLiang
会员
注册时间: 2018-10-28
累计积分: 437
个人网站

Re: 求推荐单片机使用的加密算法

直接循环异或好了,速度快

离线

#13 2020-12-17 03:34:40

iamseer
会员
注册时间: 2020-06-06
累计积分: 20

Re: 求推荐单片机使用的加密算法

最近看到 https://hackaday.com/2020/12/11/remoticon-video-breaking-encrypted-firmware-workshop/ 讲了替换密码的破解方式。讲解的挺清楚的。

离线

#14 2021-01-01 09:03:53

iamseer
会员
注册时间: 2020-06-06
累计积分: 20

Re: 求推荐单片机使用的加密算法

另外有人提到Speck比xxtea还能更省flash一些。
https://www.amobbs.com/thread-5715264-1-1.html

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn