新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机的MRC多重加密技术

单片机的MRC多重加密技术

作者:时间:2016-11-24来源:网络收藏
2008年,我的一个朋友因为他们的控制主板被盗抄了,损失相当巨大,他找到了我寻求加密措施,由于他们采用的是ATmega128单片机,尽管他们已经采取了加密,但还是被破解了,为此我搜索了网络上的大部分资料,都没有一个具体有效的方案。经过本人研究后,在这里介绍一种有效的MRC多重加密技术,已经用到了实际产品中,可以说这种加密技术是非常有效的。

本文引用地址://m.amcfsurvey.com/article/201611/320750.htm

1. 单片机程序的破解过程:

目前对于AVR单片机来讲,本身有加密熔丝位,一旦熔丝被烧写程序就不能读出了。但这种加密技术可以通过芯片揭盖侵入式破解,大多数破解公司都掌握了这种技术,破解费仅1000元左右。

对于这种情况已经不可避免,如果源码没有其他加密措施的话,把反汇编出来的程序编译一下,换到原电路板上即可运行了。

那么如何对源码做加密处理呢?

事实上,不管你怎么处理,都可以分析源码,找出你的关键所在,并修改汇编出来的程序来破解。

而我们要做的是,将加密部分尽可能隐藏,扰乱,使得破解者只能逐一分析来破解,这样他不但要全部了解产品的工作特点,功能,还要了解内部全部的硬件设计,以及芯片的工作原理。对于一些特殊算法他可能永远也搞不明白,这样使得破解的成本远远大于重新设计的成本。

凡是从事盗版生产的单位基本没有开发能力,而破解者只是一些二三流工程师,真正的一流工程师对破解都不屑一顾。

2. MRC加密技术:

为啥叫MRC机密技术,因为这是香港MRC公司采用的实用加密技术,这种技术不需要增加硬件成本,主要通过以下几个技术实现:

  • 利用AVR的校准值,做身份认证,100片里面最多10片的校准值相同。
    1)在头文件里定义:

#define OSCID 0XAF //校准数值,必须设置成与MCU一致

2)在特殊程序(中断程序,特殊算法)里

unsigned char *p;

p=(unsigned char *)0x68; //赋值,芯片为mega88,OSCID寄存器=0X66,不直接写0X66,知道为什么吗?

…... //赋值和恢复语句,中间有很多其他语句

p--;p--; //恢复,

if ((*p-8)==OSCID-8) //判断,为啥这里也不直接写为OSCID?

{

//放置正确的处理程序

}

else

{

//故意写错计算的程序

}

类似上述这样的程序可以放在中断处理程序,CRC算法,纠错程序,编解码程序,快速开方程序等关键程序里,另外长时间(几天,几个月)才运行一次的程序里也要放置来对付仿真器的单步跟踪。最好每个程序里的处理都不一样,不要写成子程序。

  • 利用随机数产生代码长度浮动。

#if (OSCID)%3==0 //这里利用校准值来扰动,也可利用编译时的时间来扰动。

a++; //也可能是个函数

#endif

#if (OSCID)%3==1

a++;

b++;

#endif

#if (OSCID)%3==2

a++;

b++;

c++;

#endif

把类似这样程序的条件编译语句放入关键程序,使程序代码浮动,避免解密者对比两样片的16进制代码来寻找不同的位置。

  • 利用随机数使静态变量浮动。

每个芯片的变量地址在RAM或EEPROM中都是浮动的。

unsigned int IR_buff[100+(OSCID)%7]; //不同的芯片缓冲区长度不同

…… //其他变量定义在下面

由于编译后,产生的代码差异很大,这个措施可以对付反汇编代码比对来寻找有差别的位置。

利用AVR的校准值与特殊器件内部的寄存器绑定。

这里用CC1101无线收发器来举例

rfSettings.PKTCTRL1= 0x27^ (OSCID^0X55); //

halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1^(OSCID^0X55)); //写到寄存器

……


#define CCxxx0_SRX 0x34-OSCID

halSpiStrobe(CCxxx0_SRX+OSCID); //进入接收状态

3. 安全性评估:

如果破解者能读出多个样片的汇编程序。他无法通过比对16进制或汇编后的代码来获得这些样片的差异。

他只有仔细阅读汇编代码来解除加密的代码,对于一些特殊算法,他要搞清楚原理才能修改,否则可能埋下极大故障隐患。对于单步追踪,由于长时间程序并没触发,因此不能保证都能追踪得到,有些程序需要特定的条件才能激活,因此也不能保证一一追踪得到,这样要彻底破解,解密者只能在全部弄清楚设备的功能后,一一解除,一一烧录,一一测试。这样的工作量可能相当的大。
对于类似CC1101这样的器件,寄存器既多又复杂,稍微错一个地方就可能引起莫名其妙的故障。

4. 结语:

本文提出的MRC加密技术不是不能破解,而是破解的代价很大,即使破解后用于产品中隐患也很大,有可能加密程序里含有自毁程序,在一定时间后才能发作,到时可能导致无法想象的损失,因此用户不要贪小便宜,应该购买具有自主知识产权的产品。
通过多重MRC加密,可以大大打击盗版者和破解者的信心,达到为自主创新产品保驾护航的目的。



评论


技术专区

关闭