我們知道,研究一套可行實(shí)用的單片機(jī)系統(tǒng)肯定要花大量的人力和物力。為了使所研制的系統(tǒng)不被別人所剽竊,保護(hù)知識產(chǎn)權(quán),通常在單片機(jī)系統(tǒng)設(shè)計(jì)時,都要進(jìn)行加密設(shè)計(jì)。加密設(shè)計(jì)一般有硬件加密和軟件加密。而硬件加密的方法很多,可以采用PAL、GAL等芯片將CPU與ROM之間的地址線或數(shù)據(jù)線按一定密鑰規(guī)律進(jìn)行交換,這樣就把原程序頁號打亂,起到加密作用。但這里探討的是幾種簡單的硬件加密技術(shù)。
1.硬件加密設(shè)計(jì)步驟
1.1 根據(jù)具體項(xiàng)目和任務(wù),設(shè)計(jì)目標(biāo)程序并在未加密情況下調(diào)試成功。
1.2 設(shè)計(jì)硬件加密電路。
1.3 對調(diào)試好的軟件按硬件電路進(jìn)行加密翻譯,不同的硬件加密電路翻譯出來的軟件不同。
1.4 將加密翻譯后的軟件寫進(jìn)EPROM。
這樣,剽竊者將得到的EPROM里的程序進(jìn)行反匯編后,不在是原來的程序,甚至是邏輯關(guān)系混亂毫無價值的代碼。從而保護(hù)了原設(shè)計(jì)者的利益。
2. 硬件加密電路的設(shè)計(jì)
為方便說明硬件加密原理和軟件加密翻譯方法,先列舉一例題,以下論述均以該例子為研究對象。
例1 比較兩個無符號數(shù)的大小,設(shè)兩個無符號數(shù)事先分別存在RAM里的30H和31H單元,若(30H)里的數(shù)大,則累加器的A.0~A.3為高電平;若(31H)里的數(shù)大,則累加器的A.4~A.7為高電平;若兩數(shù)相等,則累加器的A.2~A.5為高電平。試設(shè)計(jì)匯編程序?qū)崿F(xiàn)。
該例題所設(shè)計(jì)的原程序、機(jī)器代碼和存儲單元如下:
2.1 硬件加密方法一
將數(shù)據(jù)線中某幾根線換位,如圖1所示。將圖中數(shù)據(jù)線D1、D2交叉,這樣單片機(jī)系統(tǒng)執(zhí)行的實(shí)際代碼就與EPROM中存儲的代碼完全不同了。若將例1的程序存入EPROM ,那么存入的實(shí)際代碼就要做相應(yīng)的加密翻譯,以使單片機(jī)從EPROM中所取的代碼正確。
加密翻譯后在EPROM中實(shí)際存的代碼和反匯編的結(jié)果如下:
P2.0~P2.4P0.3~P0.7P0.2P0.1P0.0ALEPSENCPU8031
74LS373
A8~A12A3~A7A2A1A0 2764OE CED3~D7D2D1
2.2 硬件加密方法二:
將CPU和EPROM間的地址換位,如圖2所示,將地址線A0、A1換位交叉,這樣單片機(jī)系統(tǒng)程序存在EPROM中的代碼不變,但存儲順序完全打亂。若將例1的程序存入EPROM時,為保證單片機(jī)的正常工作,要將存儲代碼的順序按硬件電路要求做相應(yīng)的改變,即進(jìn)行加密翻譯,加密翻譯后EPROM中存儲的實(shí)際代碼和反匯編的結(jié)果如下:
從反匯編的結(jié)果看,既是剽竊者取出EPROM里的程序代碼,反匯編后也得不到原來的程序了。
2.3 硬件加密方法三
將CPU和EPROM間的數(shù)據(jù)線某些位經(jīng)過三態(tài)反相器求反。如圖3所示,將數(shù)據(jù)線D0、D1分別求反后送CPU,這樣存在EPROM里的程序和原來的程序就不同了。若將例1的程序按硬件加密電路進(jìn)行軟件加密翻譯后,存在EPROM里的實(shí)際代碼和反匯編后結(jié)果如下:
P2.0~P2.4P0.2~P0.7P0.1P0.0 ALEPSENCPU8031
74LS373
A8~A12A2~A7A1A0 2764OE CE D2~D7D1D0
可見經(jīng)硬件加密后,存在EPROM里的代碼與原來代碼完全不同。
2.4 硬件加密方法四
將CPU和EPROM間的地址線的某些位求反。如圖4所示,將地址線A0、A1求反,這樣存在EPROM里的代碼內(nèi)容不變,但代碼的存儲順序要按硬件電路相應(yīng)改變。若仍以例1為例,將該程序代碼加密后,存在EPROM里的代碼和反匯編后的結(jié)果如下:
A8~A12A2~A7A1A0OE CE2764D2~D7D1D0
P2.0~P2.4P0.2~P0.7P0.1P0.0 ALEPSENCPU8031
74LS373
可見將EPROM里的代碼反匯編后,仍得不到原程序。
總結(jié)
堅(jiān)持不懈的嘗試突破保護(hù)機(jī)制的破解團(tuán)體和不斷引入新的安全防范方案的制造商之間的斗爭是沒有盡頭的。 “道高一尺,魔高一丈”,又或是“邪不壓正”,將不停的在兩派之間上演。其實(shí)軟件加密原理很簡單,就是利用單片機(jī)IC廠商,為每片出廠芯片的某一特殊全球唯一識別參數(shù),即ID號做為密鑰,對程序進(jìn)行加密。如果以本ID號的程序燒到另一ID號的芯片中,程序中經(jīng)軟件加密過的部分的功能將完全失效。
要解密上述經(jīng)軟件加密過的程序,唯一的途徑,就是反匯編程序,分析單片機(jī)反匯編后的匯編程序,將程序中軟件加密相關(guān)的密鑰去掉,然后編譯得到新的程序。這項(xiàng)工作需要的不只是耐心,更多的是專業(yè)知識與經(jīng)驗(yàn)。
-
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44553瀏覽量
634770 -
硬件加密
+關(guān)注
關(guān)注
0文章
5瀏覽量
9122
原文標(biāo)題:這4大硬件加密方法,在單片機(jī)中你會用了嗎?
文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論