怎样对STM32加密,防止被读出复制?

[复制链接]
28730|18
 楼主| sohowork 发表于 2010-1-5 16:01 | 显示全部楼层 |阅读模式
现有一产品,用STM32来实现,功能基本实现,请教怎样进行一些加密,最大程度防止被读出、复制?谢谢
sinadz 发表于 2010-1-5 16:14 | 显示全部楼层
芯片里面的程序能被读出吗,很有兴趣,呵呵
vigia 发表于 2010-1-5 16:49 | 显示全部楼层
1, 使能芯片的读保护功能

2, 灵活使用STM32的唯一ID,上电运行时,如果读ID不对,则程序不能正常运行。

3, 如果需要做IAP,则要对读出或写入的数据进行加密。

暂时想到这些,等待大侠补充。
 楼主| sohowork 发表于 2010-1-5 19:56 | 显示全部楼层
补充一下,是需要IAP的。我也想到用芯片本身的ID,但这样的话,每一个芯片的程序都不尽相同,是IAP前上位机就处理好,还是到了具体的芯片上再处理?望各位大虾指导!
junsi 发表于 2010-1-6 00:32 | 显示全部楼层
楼上:程序是可以做成相同的。 加密算法,通讯协议要设计好;不能让别人通过升级文件或窃取IAP通讯信息而暴露二进制源码。
dfsa 发表于 2010-1-6 13:59 | 显示全部楼层
做成产品,加密肯定是需要的
 楼主| sohowork 发表于 2010-1-7 13:18 | 显示全部楼层
麻烦5楼能说的详细点吗?
vigia 发表于 2010-1-7 14:05 | 显示全部楼层
提供一个思路

芯片内部先保存一个用唯一ID加密以后生成的数据

做IAP的时候,先把这个数据读出来,解密,再和芯片的ID比较,如果是一致的,说明芯片的来源可靠。


然后IAP应用程序根据芯片ID,对要烧录到芯片的BIN文件进行加密,再把加密过的数据传给芯片,芯片内部的BOOTLOADER代码根据自身ID,对加密以后的数据解密,并烧写入FLASH。这样在通信端口进行传输的数据就都是加密过的数据,保证了通信通道上的安全性。
ST_ARM 发表于 2010-1-7 15:14 | 显示全部楼层
只要使能STM32的读保护,就可以保护你的程序被读出。
pkat 发表于 2010-1-7 21:26 | 显示全部楼层
使能了读保护,就一定保证不能被读出吗
gfkdliling 发表于 2010-1-16 14:30 | 显示全部楼层
学习了!
ch_worm 发表于 2010-1-16 20:00 | 显示全部楼层
学习了 谢谢····
txcy 发表于 2010-1-16 21:38 | 显示全部楼层
主要思路就是利用好那个唯一的ID
mcuisp 发表于 2010-1-16 22:04 | 显示全部楼层
请参考mcuisp.exe的反拷贝功能
LIU_XF 发表于 2010-1-16 23:44 | 显示全部楼层
加密确实是一个问题

特别是带IAP的

值得关注
zwll 发表于 2010-1-16 23:58 | 显示全部楼层
现在都瞄着加密……
OneMillion 发表于 2010-1-17 22:06 | 显示全部楼层
关注一下。
pdh168 发表于 2014-4-29 17:57 | 显示全部楼层
解密有什么方法?
meijc119 发表于 2020-12-19 09:54 | 显示全部楼层
三、利用id做软件加密

1,如果板子上有外部存储器,可以先编写一个程序,利用算法把id计算得到一些值存入外部存储器,然后再烧写真正的程序,真正的程序去校验外部存储器的数据是否合法即可



2,利用板子上按键组合,或是上电按住某些键,程序在这个时候利用算法把id计算得到一些值存入程序区(stm8为EE区),程序运行时去验证程序区数据是否正确



3,轩微编程器有软件加密的功能,编程器会读芯片id,根据算法直接改写缓冲区,达到软件加密的作用



4,读出的id通过一定算法,例如异或加上一个数,得到的数据存入flash(只运行一次,运行后标志位也存入flash),下次读到这个标志位,就不运行这个程序。



四、做软件加密时注意

1,不要在程序中直接出现id地址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0   STM8: 0x4865~0x4870

2, 利用校验和或是crc对程序区进行校验,防止改程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

141

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部