如今共享大戰(zhàn)愈演愈烈,摩拜之后,,小黃,、小藍(lán)更是層出不窮,。“共享”給大家?guī)?lái)方便的同時(shí),,也在經(jīng)歷著嚴(yán)峻的考驗(yàn),。為了防止單車被破解,必須采取嚴(yán)格可靠的保密措施,,為產(chǎn)品保駕護(hù)航,。
看到那些被刮去號(hào)碼牌,據(jù)為己有的共享單車,,作為工程師的我,,不禁想到自己加班開(kāi)發(fā)的代碼可能會(huì)被別人分分鐘讀出來(lái)破解,頗有些擔(dān)心,,眼前這些就是實(shí)實(shí)在在的前“車”之鑒,。
面對(duì)日益重要知識(shí)產(chǎn)權(quán)保護(hù),大部分芯片廠商為芯片設(shè)計(jì)完善了安全的代碼保護(hù)方案——芯片加密,。各個(gè)廠商的加密手段不同,,主要分為幾類:
一級(jí)加密(可擦除);
二級(jí)加密(密碼加密),;
三級(jí)加密(加“死密”),。
不同的芯片可能提供了一種或多種級(jí)別的加密方式,根據(jù)不同的需求靈活使用加密方案才可以做到游刃有余,。
一級(jí)加密
如果你的產(chǎn)品可能需要升級(jí)固件,,建議使用這種加密方式。
一級(jí)加密又分為多種形式,,最常見(jiàn)的一種形式經(jīng)常在芯片手冊(cè)中叫做“Protect”,。加密后如果試圖讀出芯片中的代碼,則會(huì)讀出全0x00,,或者是全0xFF,,甚至是隨機(jī)數(shù)據(jù),但是通過(guò)某些特殊的方法,,比如擦除或是解保護(hù),,就可以將芯片重置為默認(rèn)狀態(tài)。
另外一種常見(jiàn)于ARM芯片,,我們知道ARM芯片采用統(tǒng)一的編程接口SWD接口,某些ARM芯片會(huì)提供兩個(gè)AP(Access Port),,通過(guò)關(guān)閉訪問(wèn)內(nèi)部空間的AP可以達(dá)到加密的目的,。而如果想解鎖,,就要訪問(wèn)另一條AP,這條AP只可以訪問(wèn)一個(gè)寄存器,,通過(guò)寫入該寄存器特定的數(shù)據(jù)就可以將芯片重置為默認(rèn)狀態(tài),。
還有一種加密方式和上面類似,只不過(guò)采用了兩個(gè)編程接口,,而不是同一編程接口的兩條AP,。
總之,一級(jí)加密就是讓你無(wú)法讀取芯片數(shù)據(jù),,而又可以通過(guò)擦除再次升級(jí)固件,。
二級(jí)加密
如果你的產(chǎn)品需要升級(jí)固件,但是你又不想別人也隨意升級(jí)你的固件,,可以使用這種加密方式,。
二級(jí)加密與一級(jí)加密的不同之處在于,二級(jí)加密在加密時(shí)需要提供一段密碼,,該密碼會(huì)保存到芯片內(nèi)部,,而如果你想重置芯片,則需要提供這段密碼,。這就防止了沒(méi)有權(quán)限(不知道密碼)的一方升級(jí)代碼,。
二級(jí)加密為密碼保護(hù)的加密,不過(guò)部分廠商的芯片可能并沒(méi)有提供這種加密方案,。
三級(jí)加密
如果你的產(chǎn)品要批量生產(chǎn)了,,也不用考慮升級(jí)固件,可以使用這種加密方式,。
三級(jí)加密通過(guò)向芯片特定位置寫入特定數(shù)據(jù),,或者是直接熔斷熔絲達(dá)到加密目的,這是個(gè)不可逆的過(guò)程,,一旦加密之后,,芯片就無(wú)法再擦除,讀取或者燒錄,,甚至仿真器也無(wú)法再連接芯片,。
三級(jí)加密是一條不歸路,一旦加密,,芯片的固件就再也無(wú)法更改,,因此需要慎重再慎重。
這三種加密方式對(duì)產(chǎn)品的保護(hù)一級(jí)比一級(jí)嚴(yán)密,,在不同的產(chǎn)品上靈活的使用不同加密方式才可以保護(hù)好自己的勞動(dòng)成果而又不被這種保護(hù)所束縛,。
加密方式盡管多種多樣,但最終都是對(duì)芯片進(jìn)行一些特定的操作,以達(dá)到保護(hù)代碼的目的,。