世界上万物中的矛盾都是同时存在的,没有牢不可破的盾牌。ATMEL公司的AVR系列微控制器也是如此。随着AVR系列微控制器应用的普及化和在各行各业的大量应用,AVR系列微控制器也被一些专业从事破解的工作者(下文以“芯片黑客”称呼)进行了长期的研究,因此已经从过去“不可以破解”的神坛上走了下来,破解的费用也已经从过去的天价降到了今天“青菜和萝卜”的价格。其实对其它公司的微控制器也同样如此,应用面广了、客户群多了、研究的“芯片黑客”多了,终究有一天会被“芯片黑客”找到能有效攻击的“长矛”的。
在实际应用中我们还必须使用这些价廉物美的微控制器,不能因为哪一天会被“芯片黑客”破解而因噎废食。但是如果解决这个矛盾呢?我们一般可以采取哪些方法,以保护自己的知识产权和提高盗版者的破解成本。
最官方的说法当然是利用法律武器来对付盗版者,此种方法就需要进行软件版权注册,另外还需要在程序中植入一些可以有效标识版权的信息。此法理论上可行,但实际操作中颇为困难。比如说“芯片黑客”将你的相关标识版权的信息修改了,怎么办?另外,对于微控制器中“嵌入式软件”,相关的费用也是一个大问题。
因此除了我们要有法律保护意识之外,还有必要采取一些简便易行的技术手段来保护自已的嵌入式软件。
1、 对软件中标识版权的信息,采取一些加密算法进行保护,这样“芯片黑客”们在没有分析清楚相关的算法之前,是无法修改你的版权信息的。这种方法适用于有显示或特定途径输出信息的产品。
2、 利用芯片本身的一些物理特征,阻止盗版程序的运行。阻止盗版程序的运行,推荐不要在检测到盗版后立即起作用;而应当充分利用AVR EEPROM的功能,保存运行的次数或时间,在运行到足够的时间后才阻止程序运行。这样做,可以使盗版者可能面对比较大的返修和售后服务成本,从而提高破解成本。
3、 在程序中加入一些代码完整性校验,如算术累加和、CRC等。这样做既可以防止“芯片黑客”修改你的代码,同时又可以在自己的程序中检查代码是否完整,提高自己产品的可靠性。在校验数据量比较大时,一般推荐使用CRC16,用户可以根据ROM的富余情况和运算速度的要求,可以分别选择查表法或计算法来实现。
4、 在PCB上放置一些专用的加密IC(如ATMEL的AT88SC系列安全存储器),以保护自己的软件。AT88SC是使用银行卡的技术制造的安全存储器,可以自由定制唯一的序列号,可以分为多个存储块,而各存储块还可以设定不同的访问权限,AT88SC和MCU之间的数据交换,可以实现全密文通信,因此有很高的安全性。此种方法成本比前面的三种略高(其实对一个有正常利润的产品是可以忽略不计的),但安全性也高。因为AT88SC本身有很高的安全性,盗版者目前无法克隆;而且一旦克隆,你很快就可以发现是谁盗了你的版,因为你可以在相应的AT88SC中保存一些只有你自己才可以“读懂”的特殊信息。
在实际应用中,应该综合上面的一些方法才会取得比较好的效果,并且要多采取一些变化措施。另外其中一些方法是需要特殊的工具支持的,双龙公司愿意和您交流相关的方法和心得,并且在相关的特殊工具方面进行支持。 |