原创 STM32加密之我见

2010-1-31 01:15 6773 7 12 分类: MCU/ 嵌入式

STM32加密之我见


软件工程师很辛苦。每天加班熬夜,为了一个有创意的算法茶饭不思。面对当前强盗横行的世道,如何尽最大努力将你的劳动成果保住? 基本上锁有单片机都具备了读保护功能。但是还是很多很多的被解案例。所以单有读保护看来是不够的。STM32也难逃这个厄运。曾经看过一篇深圳大学出的文章(作者记不起来了)文章就讲到这个。能不能做点手脚,让被解出来的Flash文件不能直接在其他片上运行。所幸的是STM32具备了96为的芯片身份号码.可惜STM8105以后的产品都没有了。 


就此谈谈我的思路。其中借鉴了网友关于将Option 设置嵌入芯片的思路。既然可以将Option 设置嵌入一段程序到芯片中,那么我们就再多做一点。将读出芯片ID和写芯片ID也做进去。这样的话我们就可以在程序初次运行时让程序自动去读芯片ID之后再写入你指定的位置。再做读写保护设置。这个程序只运行一次后将永远不再运行了。在你的应用程序中每次复位后再运行都做ID确认,不对则进入一个空操作的死循环。这样的话即使程序被人读出来也不能治接应用了。如果他再做大量的反汇编这样就是间很困难的事了。这样做基本没人愿意做了。肯定还有更聪明的破解者会想到将你的Flash保存后再去读出目标芯片的ID,通过查找的方式从Flash文件中找出那段字符来的.这样你的程序也能被盗用到.谁说他要每个IC手工前进目标IC的ID有点麻烦,但终究还是可以用的.这样都不行,那还有什么办法?把ID拆散成不同组合写到不同且不连续的地址去.或者再带上你自己的标识.这样他还能查找得到吗?我觉得这基本不可能了.由于我目前还没有实际应用STM32做项目,所以也没有做这个实践.感情属纸上谈兵.我不是警察更不是流氓.我很讨厌,没有能力抓流氓,但我总是想尽力制止流氓行为.下面是我思路中的步骤.


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


1 在主程序的起始位置做程序是否为初次运行检查,是就进入第2步的程序中。不是初次运行是就做ID校验,通过开始运行程序,不能通过进入空操作死循环。


 


2写一段程序包含ID读写功能函数、Option字设置函数、当然Flash 读写函数也是要的。在这个函数中安插一个初次运行标志。运行完后擦除掉。应用程序以此判断是否需要执行这段程序。这段程序不要放在别人容易猜测到的位置。


 


3在应用程序中事先做几个数组,用于保存从芯片中都出的ID。这个数组里事先放一组自定义的字符。在做写ID时先看看这里面是不是你安排的字符。不是就不写ID


 


4将你读出的ID打乱后分成几组写入预定好的数组中。


 


5Option字的读写保护及其它相关位。


 


到此结束,希望对能用得着的朋友有点帮助。


 


呵呵,第一次写博客。希望不会是闹个笑话。

PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

用户377235 2013-9-4 12:25

太好了,谢谢

zpwang69_817469318 2010-10-2 21:55

在网上看到有两位朋友“发表了”同样的文章,可却没有注明出处,或转载。虽说写得不好。我一样欢迎大家转载文章,以能使更多的朋友能得到启发或借鉴,或得到高人的指点。但像这样不注明出处对我来说也是很受伤的。也希望同仁们能尊重别人的辛勤劳动。这也是我能在这里写下自己想法和烂点子的动力。这里特别要提醒的有: http://longer.spaces.eepw.com.cn/articles/article/item/71813的0750long朋友;及http://hi.baidu.com/292571236/blog/calendar/201005的292571236朋友。

用户218635 2010-3-16 11:29

受教了,非常好的一个想法!

zpwang69_817469318 2010-2-5 22:47

谢谢kkeen的鼓励,曾加了我写博客的信心.

用户227169 2010-2-3 14:45

顶!! 之前看过很多人提及用ID做加密,但都没有讲具体怎么实现。本人也一直在思考这个问题,今日难得一见阁下的高见,佩服!这是一篇不错的博客,希望以后能继续看到更精彩的内容!
相关推荐阅读
Zpwang69 2012-09-30 22:36
评论:@pa2792's Blog 博客中提到的“【博客大赛】基于UC3843 断续反激开关电源变压器设计AP法”
保留以备复习...
EE直播间
更多
我要评论
5
7
关闭 站长推荐上一条 /3 下一条