单片机加密方法
在最近一个项目中,急急忙忙把功能完成就给了客户,完全没有安全意识,现在用烧录器把Flash里的程序一读,我就慌了,完全没有加密,随随便便就把程序读出来了,那我干了一个月的活,被人家花几秒钟读出来了,我这不是白干吗。因此,在这里普及一下安全意思,顺便介绍几种常见的加密方法。
一、打磨或更改芯片型号丝印
打磨或更改芯片型号丝印可以迷惑破解者,使破解者不知从何入手。当然,这是需要成本的,根据产品价格考虑是否需要打磨。
二、使用加密芯片
使用加密芯片的成本更加高,同时对于加密芯片可靠度无法掌握,风险很大。
三、开启单片机Flash保护
大部分有价值的单片机都有Flash保护功能,使能对应的标志位,烧录器就无法通过通讯脚读取Flash里的数据,唯有全部擦除数据。如图1-1新塘单片机图1-1
也有一些单片机通过程序直接把通讯线路物理意义上的断开,这种方法保护更有效,但从此不能再对单片机写入程序,对于售后服务来说是一种风险。如图1-2ST单片机
图1-2
三、使用唯一ID号
对于一些高端的单片机,在出厂的时候芯片内部就给予了一个唯一的ID号。我们可以添加一个存储器(有的单片机内部有),然后组织一种特殊的算法,利用这个唯一的ID号,产生一组数据,把这个数据预先烧录到存储器里。单片机上电初始化的时候,先读出存储器里的这个数据X,然后读出自身的ID号通过加密算法算出一个值Y,然后比较XY值是否一样,如果一样则继续工作,否则停止工作。这种方法是最实用的一种。如图1-3ST单片机的唯一ID号
图1-3
四、利用外部电路参数校正
对于一些非纯数字电路,电路自身存在有较大的参数偏差,这时候可以利用软件校正参数偏差,这使得每一块电路板的程序电路一样,但Flash数据不一样。破解者即使破解出程序和电路,如果无法理解电路的含义,则无法校正Flash数据,产品运行结果就会有偏差。