打印
[其他产品]

我一般使用的几个加密方法分享一下

[复制链接]
647|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
meiyaolei|  楼主 | 2025-5-26 14:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在MCU上进行加密通信,特别是在通信层UART、SPI、CAN实现数据加密,是一个既关键的操作。为了确保数据的安全传输,防止被窃听或篡改,我通常会采用软件AES-128加密算法结合动态密钥轮换机制,并且完全在MCU上实现这一方案。

一个是AES,是一种广泛使用的对称加密算法,高效、安全和灵活。在MCU上实现AES-128加密,我通常会选择那些经过优化、资源占用较小的算法库,TinyAES或者mbedTLS中的AES实现。这些库通常针对嵌入式系统进行了优化,能够在资源有限的MCU上高效运行。AES-128提供了足够的安全性,能够抵御大多数常见的加密攻击,所以说它的安全性算蛮高的。在MCU上实现AES-128加密,虽然会占用一定的CPU资源,但通常不会成为系统的瓶颈。AES算法结构清晰,易于在MCU上用软件实现。

另一个是动态密钥轮换机制,为了进一步提高加密通信的安全性,我采用了动态密钥轮换机制,这意味着每次通信会话都会使用不同的密钥进行加密和解密,从而大大增加了攻击者**密钥的难度。
在每次通信开始前,MCU会生成一个新的AES-128密钥。这个密钥可以通过硬件随机数生成器,如果MCU支持的话,可能会在某些随机因素时间戳、设备ID等的软件算法来生成。生成的密钥需要通过某种安全的方式交换给通信的另一方。在实际应用中,我通常会采用非对称加密算法,RSA或ECC来加密并传输这个AES密钥,确保密钥在传输过程中不被窃听。在通信过程中,双方都使用这个动态生成的密钥来加密和解密数据。为了进一步提高安全性,我还会设置一个密钥更新周期,定期更换密钥。

纯MCU实现的挑战与解决方案,在MCU上完全用软件实现AES-128加密和动态密钥轮换,虽然灵活且成本低,但也面临着一些问题,CPU资源占用,AES加密和解密操作会占用一定的CPU资源,特别是在处理大量数据时。为了减轻CPU的负担,我通常会优化算法实现,减少不必要的计算,并在可能的情况下使用DMA,直接内存访问来传输数据,释放CPU资源。在有些应用场景中,实时控制系统,对通信的实时性要求很高。为了确保加密通信不会影响系统的实时性,我会对加密算法进行性能评估,并根据实际需求调整加密强度或密钥轮换周期。MCU的内存通常有限,而AES加密算法需要一定的内存空间来存储中间结果和密钥。为了节省内存,我会选择那些内存占用较小的算法库,并优化数据结构,减少不必要的内存分配。



使用特权

评论回复
沙发
dongnanxibei| | 2025-5-26 17:49 | 只看该作者
有没有使用教程

使用特权

评论回复
板凳
trucyw| | 2025-5-26 18:47 | 只看该作者
有没有参考例程共享下,感谢

使用特权

评论回复
地板
zjsx8192| | 2025-5-27 08:14 | 只看该作者
有没有参考例程共享下,感谢

使用特权

评论回复
5
dffzh| | 2025-5-27 08:58 | 只看该作者
在什么MCU上实现的?有参考demo程序吗?欣赏一下

使用特权

评论回复
6
xionghaoyun| | 2025-5-27 10:08 | 只看该作者
真正有加密把代码放加密芯片了

使用特权

评论回复
7
xionghaoyun| | 2025-5-27 10:09 | 只看该作者
MCU加密没啥用(华强北是磨芯片导出程序的)

使用特权

评论回复
8
xiaofei558008| | 2025-5-27 13:25 | 只看该作者
aes mcu 带硬件外设,aes 密钥放哪里??

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:工程师
简介:超越自我,为设计激发灵感和想象。

233

主题

781

帖子

6

粉丝