拒绝破解:从共享单车谈如何防止代码失窃
扫描二维码
随时随地手机看文章
如今共享大战愈演愈烈,摩拜之后,小黄、小蓝更是层出不穷。“共享”给大家带来方便的同时,也在经历着严峻的考验。为了防止单车被破解,必须采取严格可靠的保密措施,为产品保驾护航。
看到那些被刮去号码牌,据为己有的共享单车,作为工程师的我,不禁想到自己加班开发的代码可能会被别人分分钟读出来破解,颇有些担心,眼前这些就是实实在在的前“车”之鉴。
面对日益重要知识产权保护,大部分芯片厂商为芯片设计完善了安全的代码保护方案——芯片加密。各个厂商的加密手段不同,主要分为几类:
l 一级加密(可擦除);
l 二级加密(密码加密);
l 三级加密(加“死密”)。
不同的芯片可能提供了一种或多种级别的加密方式,根据不同的需求灵活使用加密方案才可以做到游刃有余。
一级加密
如果你的产品可能需要升级固件,建议使用这种加密方式。
一级加密又分为多种形式,最常见的一种形式经常在芯片手册中叫做“Protect”。加密后如果试图读出芯片中的代码,则会读出全0x00,或者是全0xFF,甚至是随机数据,但是通过某些特殊的方法,比如擦除或是解保护,就可以将芯片重置为默认状态。
另外一种常见于ARM芯片,我们知道ARM芯片采用统一的编程接口SWD接口,某些ARM芯片会提供两个AP(Access Port),通过关闭访问内部空间的AP可以达到加密的目的。而如果想解锁,就要访问另一条AP,这条AP只可以访问一个寄存器,通过写入该寄存器特定的数据就可以将芯片重置为默认状态。
还有一种加密方式和上面类似,只不过采用了两个编程接口,而不是同一编程接口的两条AP。
总之,一级加密就是让你无法读取芯片数据,而又可以通过擦除再次升级固件。
二级加密
如果你的产品需要升级固件,但是你又不想别人也随意升级你的固件,可以使用这种加密方式。
二级加密与一级加密的不同之处在于,二级加密在加密时需要提供一段密码,该密码会保存到芯片内部,而如果你想重置芯片,则需要提供这段密码。这就防止了没有权限(不知道密码)的一方升级代码。
二级加密为密码保护的加密,不过部分厂商的芯片可能并没有提供这种加密方案。
三级加密
如果你的产品要批量生产了,也不用考虑升级固件,可以使用这种加密方式。
三级加密通过向芯片特定位置写入特定数据,或者是直接熔断熔丝达到加密目的,这是个不可逆的过程,一旦加密之后,芯片就无法再擦除,读取或者烧录,甚至仿真器也无法再连接芯片。
三级加密是一条不归路,一旦加密,芯片的固件就再也无法更改,因此需要慎重再慎重。
这三种加密方式对产品的保护一级比一级严密,在不同的产品上灵活的使用不同加密方式才可以保护好自己的劳动成果而又不被这种保护所束缚。
加密方式尽管多种多样,但最终都是对芯片进行一些特定的操作,以达到保护代码的目的。