技(ji)術交(jiao)流
如今(jin)共享(xiang)大戰(zhan)愈演(yan)愈烈(lie),摩拜(bai)之後(hou),小黃(huang)、小藍(lan)更是(shi)層出(chu)不窮(qiong)。“共享(xiang)”給大(da)家帶(dai)來方(fang)便的(de)同時(shi),也在(zai)經曆(li)着嚴(yan)峻的(de)🙂↔️考驗(yan)。爲了(le)防止(zhi)單車(che)被破(po)解,必(bi)須采(cai)取嚴(yan)格可(ke)靠的(de)保密(mi)措施(shi),爲産(chan)品保(bao)駕護(hu)航。
看(kan)到那(na)些被(bei)刮去(qu)号碼(ma)牌,據(ju)爲己(ji)有的(de)共享(xiang)單車(che),作爲(wei)工程(cheng)師的(de)我,不(bu)禁想(xiang)到自(zi)己加(jia)班開(kai)發的(de)代碼(ma)可😵💫能(neng)會被(bei)别🧑🏾🎄人(ren)分分(fen)鍾讀(du)出來(lai)破解(jie),頗有(you)些擔(dan)心,眼(yan)前這(zhe)些就(jiu)💘是實(shi)實在(zai)在的(de)前“車(che)”之鑒(jian)。
面對(dui)日益(yi)重要(yao)知識(shi)産權(quan)保護(hu),大部(bu)分芯(xin)片廠(chang)商爲(wei)芯😌片(pian)設計(ji)完善(shan)了安(an)全的(de)代碼(ma)保護(hu)方案(an)——芯片(pian)加密(mi)👹。各個(ge)廠商(shang)的加(jia)👾密手(shou)段不(bu)👩🏽🐰👩🏿同,主(zhu)要分(fen)爲幾(ji)類:
不(bu)同的(de)芯片(pian)可能(neng)提供(gong)了一(yi)種或(huo)多種(zhong)級别(bie)的加(jia)密方(fang)式,根(gen)據不(bu)同的(de)需求(qiu)靈活(huo)使用(yong)加密(mi)方案(an)才可(ke)以做(zuo)到遊(you)刃有(you)餘。
一(yi)級加(jia)密
如(ru)果你(ni)的産(chan)品可(ke)能需(xu)要升(sheng)級固(gu)件,建(jian)議使(shi)用這(zhe)種加(jia)✋密方(fang)式🧑🏽🎄。
一(yi)級加(jia)密又(you)分爲(wei)多種(zhong)形式(shi),最常(chang)見的(de)一種(zhong)形式(shi)經☠️常(chang)在芯(xin)片手(shou)冊中(zhong)叫做(zuo)“Protect”。加密(mi)後如(ru)果試(shi)圖讀(du)出芯(xin)片中(zhong)的代(dai)碼,則(ze)會讀(du)出全(quan)0x00,或者(zhe)是全(quan)0xFF,甚至(zhi)是随(sui)機數(shu)據🙂↕️,但(dan)是通(tong)過某(mou)些🤑特(te)殊的(de)方法(fa),比如(ru)擦除(chu)或是(shi)解保(bao)護,就(jiu)可以(yi)将芯(xin)片重(zhong)置爲(wei)默認(ren)狀态(tai)。
另外(wai)一種(zhong)常見(jian)于ARM芯(xin)片,我(wo)們知(zhi)道ARM芯(xin)片采(cai)用統(tong)一的(de)🧑🏽❤️💋🧑🏻編程(cheng)接👋口(kou)SWD接口(kou),某些(xie)ARM芯片(pian)會提(ti)供兩(liang)個AP(Access Port),通(tong)過關(guan)閉訪(fang)⛹🏻♂️問内(nei)部空(kong)😝間的(de)♌️AP可以(yi)達到(dao)加密(mi)的目(mu)的。而(er)如果(guo)想解(jie)😵💫鎖,就(jiu)要訪(fang)問另(ling)一條(tiao)AP,這條(tiao)AP隻可(ke)以訪(fang)問一(yi)個寄(ji)存器(qi),通過(guo)寫入(ru)該寄(ji)存器(qi)特定(ding)的數(shu)😌據就(jiu)可以(yi)将芯(xin)片重(zhong)置爲(wei)默認(ren)狀态(tai)。
還有(you)一種(zhong)加密(mi)方式(shi)和上(shang)面類(lei)似,隻(zhi)不過(guo)采用(yong)了兩(liang)個^編(bian)程接(jie)口,而(er)不是(shi)同一(yi)編程(cheng)接口(kou)的兩(liang)條AP。
總(zong)之,一(yi)級加(jia)密就(jiu)是讓(rang)你無(wu)法讀(du)取芯(xin)片數(shu)據,而(er)又✡️可(ke)以通(tong)過擦(ca)除再(zai)次升(sheng)級固(gu)件。
二(er)級加(jia)密
如(ru)果你(ni)的産(chan)品需(xu)要升(sheng)級固(gu)件,但(dan)是你(ni)又不(bu)想别(bie)人也(ye)随意(yi)升級(ji)你的(de)固件(jian),可以(yi)使用(yong)這種(zhong)加密(mi)方式(shi)。
二級(ji)加密(mi)與一(yi)級加(jia)密的(de)不同(tong)之處(chu)在于(yu),二級(ji)加密(mi)在加(jia)密時(shi)☠️需👨🏻🏭要(yao)提供(gong)一段(duan)密碼(ma),該密(mi)碼會(hui)保存(cun)到芯(xin)片内(nei)☠️部,而(er)如果(guo)你想(xiang)重置(zhi)芯片(pian),則需(xu)要提(ti)供這(zhe)段密(mi)碼。這(zhe)就防(fang)止了(le)沒有(you)權限(xian)(不知(zhi)道密(mi)碼)的(de)一方(fang)升級(ji)代碼(ma)。
二級(ji)加密(mi)爲密(mi)碼保(bao)護的(de)加密(mi),不過(guo)部分(fen)廠商(shang)的芯(xin)片👯🏾♂️可(ke)👾能并(bing)沒有(you)提供(gong)這種(zhong)加密(mi)方案(an)。
三級(ji)加密(mi)
如果(guo)你的(de)産品(pin)要批(pi)量生(sheng)産了(le),也不(bu)用考(kao)慮升(sheng)級固(gu)件,可(ke)以使(shi)用這(zhe)種加(jia)密方(fang)式。
三(san)級加(jia)密通(tong)過向(xiang)芯片(pian)特定(ding)位置(zhi)寫入(ru)特定(ding)數據(ju),或者(zhe)是直(zhi)接熔(rong)斷熔(rong)絲達(da)到加(jia)密目(mu)的,這(zhe)是個(ge)不可(ke)逆的(de)過程(cheng),一旦(dan)加🙆🏿密(mi)之後(hou),芯🎅🏿片(pian)就無(wu)法再(zai)擦除(chu),讀取(qu)或者(zhe)燒錄(lu),甚至(zhi)仿真(zhen)器也(ye)無法(fa)再連(lian)接芯(xin)片。
三(san)級加(jia)密是(shi)一條(tiao)不歸(gui)路,一(yi)旦加(jia)密,芯(xin)片的(de)固件(jian)就👹再(zai)也無(wu)法更(geng)改,因(yin)此需(xu)要慎(shen)重再(zai)慎重(zhong)。
這三(san)種加(jia)密方(fang)式對(dui)産品(pin)的保(bao)護一(yi)級比(bi)一級(ji)嚴密(mi),在不(bu)同的(de)産品(pin)上靈(ling)活的(de)使用(yong)不同(tong)加密(mi)方式(shi)才可(ke)以保(bao)🙆🏿護好(hao)自己(ji)的勞(lao)動成(cheng)果而(er)又不(bu)被這(zhe)種保(bao)護所(suo)束縛(fu)。
加密(mi)方式(shi)盡管(guan)多種(zhong)多樣(yang),但最(zui)終都(dou)是對(dui)芯片(pian)進行(hang)💘一🚶🏾♀️➡️些(xie)特🙈定(ding)的操(cao)作,以(yi)達到(dao)保護(hu)代碼(ma)的目(mu)的。緻(zhi)遠電(dian)子結(jie)合十(shi)🏊🏿♀️餘年(nian)年的(de)燒錄(lu)器研(yan)發經(jing)驗,自(zi)主獨(du)立研(yan)發的(de)P800系列(lie)編程(cheng)器能(neng)根據(ju)不同(tong)的芯(xin)片靈(ling)活的(de)設置(zhi)其加(jia)密方(fang)式,并(bing)且通(tong)過内(nei)部嚴(yan)格的(de)流程(cheng)控制(zhi),有效(xiao)☠️的防(fang)止芯(xin)片的(de)誤加(jia)密,可(ke)爲各(ge)大方(fang)案公(gong)司提(ti)供安(an)💑🏾全、可(ke)靠的(de)編程(cheng)ˇ解決(jue)方案(an)。