打印

关于PIC MCU软件加密方法

[复制链接]
14060|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elecd|  楼主 | 2012-5-14 17:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   市面上的PIC MCU便宜的几百块就解密了。一些比较重要的项目,耗散了自己的心血,一直在琢磨一种软件加密方法。
   因PIC的MCU没有唯一ID号,这让软件加密很困难。但发现了PIC的内部振荡出厂是会校正,但这个校正寄存器地址没有公布,也不知道怎么读出来。如果能知道这个寄存器地址,对于软件加密就好办多了。
   可以通过锁定每片IC内部校准寄存器的方法,来锁定IC,让解密后的芯片,不能轻易应用。程序里可以预留一段加密算法,利用振荡校准寄存器来产生加密数据。如果仅仅解密出烧录档案,烧录到空片里面,是不能运行的。如果解密出来的烧录档,也同时读出振荡寄存器的值与烧录档案,那么他们一定要通过特殊工具烧录振荡寄存器,因每片振荡频率是有误差的,并且还比较大,如果解密后敢烧录到空片中去,一定会导致频率不准,甚至停振的后果,相信没有人敢冒这险去这么做。
   现在就是官方没有开放出厂的振荡校准寄存器,不知道谁有这方面的资料,共同研究软件加密方法。
沙发
lanyong| | 2012-5-15 09:50 | 只看该作者
振荡校准寄存器,有些型号的好像是公开的。最早出的那批。

这个方法以前有人提到过。可行。

使用特权

评论回复
板凳
yewuyi| | 2012-5-15 12:57 | 只看该作者
新的芯片把那个字节都固化了,APP程序无法操作,MCHP也没有开放操作的办法。

使用特权

评论回复
地板
lanyong| | 2012-5-15 14:27 | 只看该作者
看datasheet,老的芯片有osccal,这个校准字节。新的没看见有了。估计是藏起来了。藏在哪里,不知道。

使用特权

评论回复
5
yewuyi| | 2012-5-16 08:24 | 只看该作者
看datasheet,老的芯片有osccal,这个校准字节。新的没看见有了。估计是藏起来了。藏在哪里,不知道。
lanyong 发表于 2012-5-15 14:27


新型号中,这个校准字节已经不在程序区中,把它弄成了类似CONFIG的熔丝位,在芯片出厂时固化好了校验数。
在寄存器中有一个寄存器可以对振荡频率进行微调。

使用特权

评论回复
6
szyijitong| | 2012-5-18 09:57 | 只看该作者
用单片机就这样,容易被人抄,这个没有好的解决方法。
想避免被抄,只能做那些大系统的,上OS,多层板,一般人不敢抄,也不好抄。

使用特权

评论回复
7
elecd|  楼主 | 2012-5-23 10:26 | 只看该作者
上OS,多层板被抄的到处都是。国内多家做自动缝纫机,绣花机,锁扣机的,都是买日本兄弟公司的,然后解密DSP ,FPGA,ARM,好几片芯片。都是4层板。

振荡校准寄存器用熔丝?那样PIC的校准成本也太高了吧?IC生产工艺,据说flash里面嵌入OTP技术,会导致成本很高。所以市面上很多芯片所谓的全球唯一ID,是可以改写的,例如STC的MCU。

使用特权

评论回复
8
兰天白云| | 2012-5-23 11:33 | 只看该作者
关于加密我来出个叟主意

设计时用个EEPROM,如24C02等

在出厂前把24C02的某字节写坏(100万次,可能还要1000万次),买个质量差的24会更容易处理

在程序里写一个字节到24坏的单元,如写0x55,然后读出校验,如果读出数据=0x55则不执行任何指令
如果读出数据不等于0x55则正常执行,当不法分子**你的芯片,复制代码到他的单片机,然后用一个正常的24时,嘿嘿,你就等着看戏吧(谁都不会想到用坏的24做加密)

使用特权

评论回复
9
diweo| | 2012-5-23 21:11 | 只看该作者
可不可以利用自举程序来做点**?

使用特权

评论回复
10
lanyong| | 2012-5-24 07:25 | 只看该作者
我没研究过外部ee能否自加密?通行的方法我看是做算法,8位估计跑不过来吧

使用特权

评论回复
11
lanyong| | 2012-5-24 07:27 | 只看该作者
牛,这样解密要多少钱啊

使用特权

评论回复
12
yewuyi| | 2012-5-24 09:11 | 只看该作者
上OS,多层板被抄的到处都是。国内多家做自动缝纫机,绣花机,锁扣机的,都是买日本兄弟公司的,然后解密DSP ,FPGA,ARM,好几片芯片。都是4层板。

振荡校准寄存器用熔丝?那样PIC的校准成本也太高了吧?IC生产工 ...
elecd 发表于 2012-5-23 10:26


熔丝并不必须是OTP,PIC上FLASH芯片的熔丝都是可以擦除的,应该是EE或者FLASH做的,只不过操作的命令不开放而已

使用特权

评论回复
13
yewuyi| | 2012-5-24 10:01 | 只看该作者
关于加密我来出个叟主意

设计时用个EEPROM,如24C02等

在出厂前把24C02的某字节写坏(100万次,可能还要1000万次),买个质量差的24会更容易处理

在程序里写一个字节到24坏的单元,如写0x55,然后读出校验,如果 ...
兰天白云 发表于 2012-5-23 11:33


俺用MCU内部的EEPROM这么搞过,但不是这么简单的这么搞,对于大批量生产来说,还需要一些技巧才能比较好的处理这个问题。
1、设置一个自检程序,通过特殊操作(我有一个自制工装,可以把MCU的各个相关IO强行固定在某个逻辑电平上,软件判断逻辑组合,必须符合一个特定组合才能进入特殊操作启动代码,UART接受工装的通信数据,通信数据传入EEPROM要被擦写的次数和位置等)。
2、进入自检后,MCU疯狂的擦写EEPROM中设定的某个位置(适当提高一点VCC电压以加快失效),最多擦写200万次后停止操作,一般MCU自带的EEPROM擦写次数都不到100万次,EEPROM某个字节在0XAA和0X55之间不断的被循环擦写。
3、这个擦写的时间还是比较长的,一般要数十分钟以上,我一般放在产品通电老化阶段进行这个自检程序(产品一般要在老化房4~6个小时候通电老化时间,自检程序兼容这个时间执行,避免产生新的工时损失)
4、擦写过程中在RAM中记录EEPROM该字节失效时的操作次数,并存入到EEPROM其他字节中。
5、产品正常销售中,执行APP用户程序,继续不断的擦写那个失效字节,如果不能擦写,则说明加密成功,否则有另一个纠错程序就不讲了,各位可以自行想办法。

使用特权

评论回复
14
irico| | 2012-7-12 16:57 | 只看该作者
yewuyi老师这招,很高。学习了。

使用特权

评论回复
15
NE5532| | 2012-7-15 18:04 | 只看该作者
高是高,但是用了非常规状态,本身也有风险。

使用特权

评论回复
16
我是土匪| | 2012-9-18 16:20 | 只看该作者
俺用MCU内部的EEPROM这么搞过,但不是这么简单的这么搞,对于大批量生产来说,还需要一些技巧才能比较好的处理这个问题。
1、设置一个自检程序,通过特殊操作(我有一个自制工装,可以把MCU的各个相关IO强行固定在 ...
yewuyi 发表于 2012-5-24 10:01


这招高!!
不知道疯狂的写内部的eeprom是否存在风险?

使用特权

评论回复
17
yewuyi| | 2012-9-18 22:05 | 只看该作者
这招高!!
不知道疯狂的写内部的eeprom是否存在风险?
我是土匪 发表于 2012-9-18 16:20


只擦写某一个或者某几个字节,不要对整个EEPROM区域进行擦写

使用特权

评论回复
18
我是土匪| | 2012-9-19 13:37 | 只看该作者
这个项目就试试看。

使用特权

评论回复
19
qjh7758| | 2012-9-27 10:29 | 只看该作者
正在愁加密

使用特权

评论回复
20
lyy10308211| | 2014-1-28 22:48 | 只看该作者

使用特权

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

本版积分规则

4

主题

40

帖子

1

粉丝