STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计

SMEC88ST SDK开发包下载

目前市场上很多嵌入式产品方案都是可以破解复制的,主要是因为方案主芯片不具备防破解的功能,这就导致开发者投入大量精力、财力开发的新产品一上市就被别人复制,到市场上的只能以价格竞争,最后工厂复制的产品反而价格更有优势,因为他们的开发投入几乎可以忽略不计。 所以针对这种主芯片可以被破解的产品方案,开发者需要在开发时在产品方案中使用加密芯片并设计合理的加密方案。开发者首先需要选定性价比高的加密芯片,然后再设计加密方案。

市面上加密芯片一般有两种:一种是传统的逻辑加密芯片,可配数据与主芯片做相互认证起到简单的加密功能;另一种是智能卡内核的可编程CPU加密芯片,除了具有逻辑加密芯片的功能外,还可以将主芯片部分核心的算法、功能代码以及核心数据放入加密芯片,开发者设计的加密方案更加灵活、安全、可靠。

本方案选用具有智能卡32位内核的加密芯片SMEC88ST来举例实现使用STM32作为主芯片的产品的加密方案。SMEC88ST提供5K Bytes SRAM、128K Bytes CODE,32K Bytes Data,用户可根据自己的需要来编程设计SEMC88ST与STM32配合的加密方案。下表为SEMC88ST与STM32配的的各种加密功能说明,具体可参见SMEC88ST SDK开发包。

注:

① STM32与SMEC88ST间的I2C协议指令接口规则开发者自定义。

② 上述加解密密钥均为对称DES或3DES密钥,每一对密钥开发者须在开发时分别在STM32和SMEC88ST上同时存储相同的值。

③ 上述随机数都是8字节随机数,加解密算法采用DES或3DES。客户也可以根据自身需要设计或使用其他加解密算法。

④ SMEC88ST随机数发生器产生的随机数是真随机数,这样可以保证关键数据在通讯时每次都是随机数参与的,每次通讯的数据密文都是不一样的,可有效防止破解者在I2C通道上的数据监听分析。

⑤ DES或3DES加解密数据块必须为8字节整数倍,加密原始数据不是8的整数倍的按开发者自己定义补足8的整数倍,对于密文读写数据建议按LV结构补,比如:

原始数据为1122334455,补数后的数据为0511223344558000;

原始数据为11223344556677,补数后的数据为0711223344556677

原始数据为1122334455667788,补数后的数据为08112233445566778880000000000000

STM32配合SMEC88ST加密方案编程时增加加密方案可靠度小技巧:

① 访问STM32 ID和随机数因子时,尽量不要使用常量直接访问目的地址,可以使用一个假地址再通过变量异或、加减或其他算法来得到目的地址,以防止破解者轻易找到这个地址来窜改、固定ID和随机数。程序里确保每次产生的随机数只能使用一次,使用后随机数失效,下次要使用随机数必须重新产生。程序对收到的外设发来的随机数做缓存,如果随机数有重复,做一些特殊处理,防反复跟踪解析。

② STM32程序秘钥值尽量不要连续存放在一个常量或变量数组里,尽量分开存放,使用前通过一些算法计算再组成正确的秘钥值。

③ 主MCU程序做完整性校验,完整性校验绑定UID,防止STM32程序被破解者破解得到后通过窜改来跟踪、分析、破解加密方案。

④ 设计加密方案时尽量不要使用判断正确就继续执行错误就报错这种简单的判断逻辑,可以设计成错误后继续执行,只是在后续执行过程中在不特定的地方出不特定的错误。

⑤ 加密方案里使用的一些校验算法、加解密算法等,尽量不是用标准算法,可以使用这些算法的变异算法。

⑥使用可编程的加密芯片,把主芯片的部分功能代码放入加密芯片里运行,这样才能达到最高安全级别的方案保护,千万不要低估黑客的反汇编能力! (可参考笔者另一篇文章 《浅谈加密芯片的一种破解方法和对应加密方案改进设计》

相关推荐
S,D5 小时前
MCU引脚的漏电流、灌电流、拉电流区别是什么
驱动开发·stm32·单片机·嵌入式硬件·mcu·物联网·硬件工程
从零开始学习人工智能6 小时前
深入解析 OPC UA:工业自动化与物联网的关键技术
运维·物联网·自动化
linweidong13 小时前
物联网MQTT协议与实践:从零到精通的硬核指南
物联网·mqtt·websocket·嵌入式·iot·tdengine·工业物联网
门思科技14 小时前
设计可靠 LoRaWAN 设备时需要考虑的关键能力
运维·服务器·网络·嵌入式硬件·物联网
MonkeyKing_sunyuhua15 小时前
微信小程序能不能获取物联网的上的设备数据
物联网·微信小程序·小程序
时序数据说17 小时前
Java类加载机制及关于时序数据库IoTDB排查
java·大数据·数据库·物联网·时序数据库·iotdb
技术支持者python,php10 天前
MQTT通讯:物联网
物联网·智能家居
安科瑞刘鸿鹏11 天前
ABAT100助力光储电站电池“可视化”管理
大数据·运维·网络·数据库·物联网·安全·架构
小智学长 | 嵌入式11 天前
桌面小屏幕实战课程:DesktopScreen 5 任务创建
单片机·物联网
TDengine (老段)11 天前
TDengine 3.3.5.0 新功能——服务端查询内存管控
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据