摘要:產(chǎn)品就像工程師的“孩子”,,是辛苦數(shù)月,、甚至數(shù)年的結(jié)晶,!為了“孩子”的安全,,為了辛苦付出的成果不被別人抄襲,我們需要采取強有力的措施,!
產(chǎn)品就像工程師的“孩子”,!需要付出數(shù)月,、甚至數(shù)年的精力和心血去設(shè)計每個細(xì)節(jié),。它既需要細(xì)心呵護長大;也需要打預(yù)防針來增強免疫力,,以便應(yīng)對外面豐富多彩但同時危險的世界,。如果“免疫力”太差,“孩子”將面對各種不安全問題,。這其中最重要的安全問題便是被“抄襲”,?
核心的安全要素在“固件”
有人說,硬件和固件的安全同等重要,!實際不然,,硬件非常容易破解。因為材料,、元器件,,以及PCB都是標(biāo)準(zhǔn)化生產(chǎn)的,沒有秘密可言,。且從技術(shù)含量上來說,,固件通常比硬件要高,固件發(fā)揮余地最大,,最能體現(xiàn)產(chǎn)品的設(shè)計水平,。
措施一:關(guān)閉通往外界的“大門”
芯片的燒錄接口(如UART、JTAG)就像是通往外界的“大門”。通過這扇門,,工具可以將固件灌入芯片或者讀取出來,。如果不把這扇門給關(guān)上,里面的固件極易被抄襲者讀取,,然后燒錄到復(fù)制的硬件,。這樣,辛苦培養(yǎng)的“孩子”就變成了別人家的“孩子”,。
關(guān)閉“大門”有以下幾種方式方式,。
l使能加密位(如MSP430的JTAG熔絲位),關(guān)閉燒錄接口,,任何工具都無法接入,。這種方式可靠性高,大多數(shù)MCU都具備這種特性,;
l固件主動將燒錄接口管腳配置成IO管腳,,實現(xiàn)燒錄接口關(guān)閉,如JTAG的TCK管腳配置成GPIO,。這種方式有一定風(fēng)險,,固件必須在芯片啟動后盡可能快地關(guān)閉;
l剪掉燒錄管腳,。除非打開芯片,,否則很難將管腳引出。由于可操作性較差,,適用于產(chǎn)品量少,、價值低的情況。
推薦第一種方式,,且這種方式也已經(jīng)由SmartPro 2008軟件支持,。可以直接在配置界面中勾選“加密位”,。以MB9BF506R為例,,配置界面如下。
措施二:為固件“加殼”
“加殼”就是為固件披上“保護罩”,,數(shù)據(jù)格式及含義發(fā)生變化,。抄襲者拿到數(shù)據(jù)后,至少得花個幾年的時間才能夠解開,。最終解開時,,產(chǎn)品即將跨入生命終點,這時已經(jīng)沒什么意義了,。適用于不具備加密機制的NorFlash,、NandFlash,、EEPROM。
具體措施是:采取加密算法對原始數(shù)據(jù)加密,,將加密后的數(shù)據(jù)寫入存儲器,。讀取時,采用解密算法還原成原始數(shù)據(jù),。這種方式,,需要工程師在固件中設(shè)置好加解密算法。
措施三:采用唯一ID芯片,,固件跟硬件綁定
如果做最壞的打算,,固件已經(jīng)被讀出來了,是否還有希望防抄襲,?有,!有些工程師巧妙地選用具有唯一ID的芯片,這樣便無法復(fù)制出完全相同的硬件,。固件會檢查ID是不是與它期望的一樣,。如果不一樣,就可以判斷出有人已經(jīng)破解成功,,然后將固件燒到其它硬件,。
當(dāng)發(fā)現(xiàn)不一致時,固件可以不工作,。有些工程師比較“壞”,,固件會在某個特定的時間點做出“使壞”,比如異常死機,。如果此時產(chǎn)品已經(jīng)賣給客戶,,那些抄襲者們將會自食惡果!
如何保證固件跟硬件是完全綁定,?使用SmartPro 2008軟件里的自定義SN功能,燒錄時可以讀取芯片ID,,進行運算,,將結(jié)果植入主控芯片。固件只需要讀取運算結(jié)果,,然后與當(dāng)前ID是否匹配,,便可檢查出是否被抄襲。只要保密運算結(jié)果的存儲位置和計算方法,,即使抄襲者讀取出數(shù)據(jù),,也無法在其它芯片上使用!
措施四:不要輕易將原始固件交給其他人
在將固件交給工廠時,,也要特別注意做好加密,??此瓢踩牡胤酵菀纂[藏著問題。不管是交給自己的工廠,,還是交給代燒工廠,,盡量建立加密工程,并且限定只能在特定編程器上使用,、限定允許燒錄的次數(shù),。即便加密工程被抄襲者拿到,也沒有任何用處,。
在使用SmartPro 2008軟件時,,可以開啟保護模式,允許用戶設(shè)置密碼,,加密工程,。
總結(jié)
以上幾種安全措施,沒有哪一種是絕對安全的,。在實際設(shè)計時,,應(yīng)該考慮采用多種措施,從各個方面提升安全性能,。這樣一來,,我們可愛的工程師們辛苦勞動成果才不會那么容易地被抄襲,“孩子”才能安全,!