打印

stm32l加密

[复制链接]
6553|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jxmzzr|  楼主 | 2012-3-19 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有人说,没有解不了密的IC,的确,解密是一项技术,只要有人类在不断的研究,它就有**的一天;但是加密后的IC会增加**的难度与**成本,当**的成本大于收益时,自然就会使**者望而却步。

STM32芯片这两年销量很好,它的性能和价格都很不错,但如何对STM32进行加密呢,本人结合自已使用STM32 MCU一年多的经验,总结一下我对它加密的理解与方法。

加密,最基本的方法是置读保护,这样可以防止外部工具非法访问,在STM32官网发布的 串口ISP软件中有置读保护和加密选项,选择一个就可以了,这样外部工具就无法对FLASH进行读写操作,但我要重新烧写FLASH怎么办?只能清读保护,而清读保护后,芯片内部会自动擦除FLASH全部内容。

还有人说,置读保护还不够安全,说要采用芯片内的唯一ID来加密,在程序里识别芯片的ID,如果ID不对,则程序不运行,当然,这样安全性又要更高一些,但每个芯片的ID不一样,因此对应的程序也应该不一样,那如何处理呢?有网友说:采购的时候,产品同批生产的ID号应该是连续的,可以通过判别ID的范围;还有网友说,在烧录工具里做一个算法,读取芯片ID,再修改相应的二进制文件。当然还会有很多种方法,这里不展开讨论。

以上介绍的只是一种情况,在实际的应用中还会发生第二种情况。

我们知道,STM32的内部FLASH是用户可编程的,也就是说它支持IAP,而IAP中的APP代码一般是需要开放的,那么只有保证BOOT的代码安全,才能确保不被**。

前面提到,当IC置读保护后,外部工具不能访问内部FLASH,但CPU可以访问,**者完全可以自已编写一段代码通过BOOT下载到IC 运行,然后在程序中读出你的BOOT代码。

只能加以限制,使别人的代码运行不了,才能保证BOOT不被读出。

常用的方法是采用加密算法,如AES;流程如下:

APP代码加密,下载时,在BOOT中解密,这样,只有通过正确加密的APP代码才能正常的运行,因此加密的算法就成了你的密钥,而这个是你独有的。
沙发
logokfu| | 2012-3-19 12:33 | 只看该作者
学习下

使用特权

评论回复
板凳
laserpic| | 2012-3-21 20:54 | 只看该作者
有意思. 还可以把ID验证放到boot里面.

使用特权

评论回复
地板
张文XXX| | 2012-3-21 23:21 | 只看该作者
学习了

使用特权

评论回复
5
weiweiyixiao| | 2012-3-22 08:54 | 只看该作者
学习一下

使用特权

评论回复
6
cy757| | 2012-3-22 09:21 | 只看该作者
我采用的方法是:在产品里面预留串口。串口有读IC的全球唯一ID的指令和写加密数据的指令。
把程序写入STM32后通过串口读取STM32的全球唯一ID,将这个ID通过一个算法加密后得到一串数据,将这段数据通过串口写入STM32的flash中。

程序启动的时候先读flash的数据然后解密,看看是否和自己的ID号一致,如果是一致就让软件正常运行。

使用特权

评论回复
7
airwill| | 2012-3-22 10:33 | 只看该作者
stm32 有优先级别很高, 无法屏蔽的系统 boot, 这个boot 没有使用加密手段的. 所以楼主的 IAP 防止不了非法代码的进入.
to: 6楼. 通过系统 BOOT 就可以读取 IC的全球唯一ID.
其实, 还有一个更加重要的问题. 人家非法获得您的代码后, 总会验证. 如果验证功能失败.
那么人家可以借助 32位处理器强大的运算功能和调试能力, 跟踪和分析您的代码. 或者在 PC 上软件仿真跟踪调试您的代码. 从而修改您的代码, 比如跳过你的 ID 号检查. 或者给你虚假的 ID 号让你的代码通过验证.
如之奈何?

使用特权

评论回复
8
xwj| | 2012-3-22 11:16 | 只看该作者
代码是死的,只要别人能读到,肯花时间精力的话迟早总能**。
但是,“迟早总能**”只是理想的猜测,我们至少也得搞点手段不让别人直接能够直接COPY走吧?至少也得给**者设置些障碍啊~
就算“人家可以借助 32位处理器强大的运算功能和调试能力, 跟踪和分析您的代码. 或者在 PC 上软件仿真跟踪调试您的代码. 从而修改您的代码, 比如跳过你的 ID 号检查. 或者给你虚假的 ID 号让你的代码通过验证.”,那我让你的这个周期搞得尽量长种没错吧?伤透你的脑筋,耗尽你的耐心,或者至少要很精通的汇编高手才能搞懂,那被**的几率总要少的多了吧?

人类的DNA也能被读取、分析、**,但是能搞这个的有几个人?
而且倾尽全人类的力量好像至今也未全部**吧?
所以提高加解密的强度和难度还是必要的。

使用特权

评论回复
评分
参与人数 1威望 +4 收起 理由
香水城 + 4 没有攻不破的城,但城墙的厚度和守城者坚持 ...
9
acgean| | 2012-3-22 12:17 | 只看该作者
嗯,单凭芯片自身的保护远远不够,得进一步加强加密手段, 这是肯定的。

使用特权

评论回复
10
香水城| | 2012-3-22 21:44 | 只看该作者
没有攻不破的城,但城墙的厚度和守城者的**,决定了攻城者的代价。当攻城者的代价太高时,他也许就会知难而退,除非他不考虑成本。

使用特权

评论回复
11
奔牛滚滚| | 2012-3-23 01:15 | 只看该作者
水平不够,稍做加密,还没用到全球ID,隔2个月公布一次升级ROM,半年一年出一个新版......反正量不大,有盗版了再说.

使用特权

评论回复
12
xblei| | 2012-3-23 08:14 | 只看该作者
领教了。

使用特权

评论回复
13
yinyangdianzi| | 2012-3-23 14:06 | 只看该作者
BS抄板,支持原创

使用特权

评论回复
14
拿起书本| | 2012-3-23 14:38 | 只看该作者
互相学习,共同进步。分享了:loveliness:

使用特权

评论回复
15
abcsmile| | 2012-3-23 15:09 | 只看该作者
学习了

使用特权

评论回复
16
huangxz| | 2012-3-23 15:24 | 只看该作者
请问一下,在写app的时候要不要清读保护?

使用特权

评论回复
17
kanprin| | 2012-3-23 16:04 | 只看该作者
不错,如果加密到位,解密的成本接近甚至高于自己开发,那就很好了。

使用特权

评论回复
18
MicroMMU| | 2012-3-25 00:09 | 只看该作者
当唯一ID码都可以复制时一切都是浮云

使用特权

评论回复
19
linqing171| | 2012-3-25 08:02 | 只看该作者
现在带SN的芯片好多,Silabs等几家新出来的8位机都有了。

使用特权

评论回复
20
evahu| | 2012-8-10 11:29 | 只看该作者
找高手**一款单片机,价格1W-2W,觉得有把握才来,我不能浪费IC了,呵呵,请理解,诚心请联系手机13632508280,QQ905038666 李先生

使用特权

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

本版积分规则

460

主题

2188

帖子

12

粉丝