-
-
[原创]首先祝贺论坛新板块开通
-
发表于:
2009-8-30 12:45
4744
-
关于嵌入式系统的加密解密问题,有许多可以谈的内容
做单片机开发的工程技术人员,最头疼的莫过于如何保护自己的知识产权了,这里牵涉到代码在结构方面的扰乱,硬件防解密,代码运行中变形,利用单片机内部独特的ID号进行识别等等。
随着解密成本的降低(在杭州电子市场,最便宜的一款单片机解密成本只需要200人民币,时间非常短,而且保证100%成功),比它的研发成本节省了100倍还不止,因此导致很多嵌入式工程师对于代码防窃结束的担忧和对技术前景的忧虑,光从单片机本身的解密手段本身看,我们可以找到一些加密方法的,我们首先来看解密的手段:
手段一:罪简单的利用单片机厂家的算法漏洞,擦除单片机的加密位,直接读取单片机flash的数据,进行简单的复制,这时候读出来的代码跟编译出来的二进制代码是一模一样的,可以任意修改其内容(比如LOGO图片,版权信息等);这类方法的解密成本最低,价格也最便宜,速度最快,解密时,只需要控制好擦除指令的时间,几个微妙之内,单片机先擦除加密位后擦数据区,在擦除加密位之后,未擦除数据区之前,进行断电处理,就可以活得赤裸裸的芯片。
手段二:暴力破解熔丝位,原理与上面手段一一样,需要通过暴力手段将加密位接起来,重新让单片机处于非加密状态,这类单片机通常在进行擦除算法时先擦除数据,后擦加密位,如果利用手段一是无法完成破解的,因此方法只有通过厂家的算法漏洞进行暴力破解(有些厂家的芯片为了企业产品升级方便,留有IAP或者ISP接口,通过ISP或者IAP的非官方公布指令,可以达到使芯片进入工程模式状态,从而为所欲为),这是软破解方法;此外很多芯片不具备ISP,IAP这类软件攻击漏洞,那就只有打开单片机芯片的封装材料,裸露芯片,在高倍电子显微镜下面借助工具把已经处于失效状态的熔丝位"接通",从而可以读出芯片内容,这手段成本比较高,随着国内芯片封装工艺的提高,现在这种手段的效率可以达到80%以上,解出来的数据基本和编译出来的二进制一致。
手段三:完全暴力破解:考虑到前两种方法的不可靠性,很多芯片厂家就在加密这一块想了很多办法,改进了擦除算法,增强了ISP,IAP漏洞,改进了熔丝位在芯片的位置,比如,过去很多厂家的数据区和加密位被放置在芯片的最上层,一打开芯片封装材料,就赤裸裸的暴露,只要借助电子探针,哪怕不破解熔丝位,直接利用电子探针去暴力得到数据区的内容即可,这个成本较大,成功率也随着工艺的改进有所提高,最开始的成功率不到3成;随着芯片封装技术的发展,后来工艺上进行了更新,芯片的加密位或者数据位,不再放在芯片的最顶层,而是放在内层,或者分多层放置,这种技术破解难度最大,成功率更低,当然,成本也更高,是很多破解厂家所不希望也不敢去尝试的,只限于一些大规模的比如CPLD/FPGA这类高附加值,可以值得冒风险,而且破解出来的代码具有很强参考作用的情况下,才不得已这么做。
还会有一些其它更高级的破解方式,欢迎大家交流:接下来本人会写一些我们团队在开发过程中,有关嵌入式系统防解密的方法和技巧与大家交流,一方面支持看雪老大,一方面工程师也是需要交流和沟通的,有了这个平台就要利用好她。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课