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