詳解單片機(jī)系統(tǒng)的動(dòng)態(tài)加密技術(shù)
1 概述
隨著單片機(jī)技術(shù)的發(fā)展和廣泛應(yīng)用,許多使用單片機(jī)的高新技術(shù)產(chǎn)品諸如智能化儀器、儀表、小型工業(yè)控制系統(tǒng)等都面臨著一個(gè)令人頭痛的問(wèn)題,那就是新產(chǎn)品剛一推出就被仿制和剽竊。這種現(xiàn)象會(huì)使產(chǎn)品開(kāi)發(fā)商蒙受很大損失,同時(shí)也極大地挫傷了開(kāi)發(fā)商的積極性。創(chuàng)新開(kāi)發(fā)是一個(gè)公司競(jìng)爭(zhēng)力的關(guān)鍵,如何保護(hù)好自己的勞動(dòng)成果,除用法律手段外,在產(chǎn)品面市前作好加密是一個(gè)必不可少的環(huán)節(jié)。
單片機(jī)系統(tǒng)一般都采用MCU+EPROM模式。通常EPROM都是透明的,而采用的MCU一般有Intel公司的MCS51、52系列,Zilog公司的Z80、Z84系列、Motorola公司的MC68HC系列以及Microchip公司的PIC16C系列等。雖然有許多的MCU都帶有加密位,但現(xiàn)在已大多能破解。因此,單靠MCU本身加密位來(lái)進(jìn)行加密已極不可靠的。
2 常用加密技術(shù)分析
常用的單片機(jī)加密技術(shù)無(wú)非是硬件加密和軟件加密兩種。軟件加密不能防止別人復(fù)制,只能增加別人解剖分析的難度,但對(duì)高手而言,這不足為慮。所以,這里討論的加密主要是硬件加密??偨Y(jié)起來(lái),主要是以下三大類(lèi)。
2.1 總線(xiàn)亂置法
總線(xiàn)亂置法通常是將MCU和EPROM之間的數(shù)據(jù)線(xiàn)和地址線(xiàn)的順序亂置。總線(xiàn)亂置法通常包括下面幾種:
(1)將數(shù)據(jù)或地址總線(xiàn)的某些線(xiàn)位交換或求反;
(2)將數(shù)據(jù)或地址總線(xiàn)中的某些線(xiàn)進(jìn)行異或。例如,D5'=D5,D6'=D5+6等;
(3)把(1)(2)結(jié)合起來(lái)以構(gòu)成較復(fù)雜的電路;
(4)采用EPROM時(shí),把地址總線(xiàn)(或數(shù)據(jù)總線(xiàn))與系統(tǒng)程序的存儲(chǔ)器地址(或數(shù)據(jù))的對(duì)應(yīng)關(guān)系按密鑰交換。例如,用一片2764芯片存儲(chǔ)密鑰,把地址的高8位重新按密鑰編碼,也就是說(shuō),把原程序的頁(yè)號(hào)順序打亂;
(5)采用GAL器件,利用GAL的加密片來(lái)對(duì)硬件電路進(jìn)行加密。
2.2 RAM替代法
用電池對(duì)RAM進(jìn)行掉電數(shù)據(jù)保護(hù)。即先將一系列數(shù)據(jù)寫(xiě)入RAM并接上電池,然后將其余的芯片插上。這樣,當(dāng)單片微機(jī)系統(tǒng)運(yùn)行后,CPU首先從RAM讀出數(shù)據(jù),這些數(shù)據(jù)可以是CPU執(zhí)行程序的條件判別依據(jù),也可以是CPU將要執(zhí)行的程序。如果數(shù)據(jù)正確,整個(gè)系統(tǒng)正常運(yùn)行。反之,系統(tǒng)不能運(yùn)行。
2.3 利用MCU本身的加密位進(jìn)行加密
現(xiàn)在很多的MCU都帶有加密位,其中最成功的加密方法是總線(xiàn)燒毀法,此法在AT89C51中運(yùn)行用得最成功。即把單片機(jī)數(shù)據(jù)總線(xiàn)的特定I/O永久性地破壞,解密者即使擦除了加密位,也無(wú)法讀出片內(nèi)程序的正確代碼。此外還有破壞EA引腳的方法。
一般來(lái)說(shuō),上述的加密方法各有優(yōu)點(diǎn),但都存在致命的缺點(diǎn):第一種方法有兩個(gè)主要缺點(diǎn):一是密鑰放在哪里才能不被破譯;二是用仿真器很容易就能把源程序截取出來(lái)。第二種方法同樣可以用仿真器把數(shù)據(jù)區(qū)調(diào)出來(lái),另外還可以把RAM接上電池,取下來(lái)放在仿真器上讀出來(lái)。第三種方法用來(lái)加密小程序是成功的,但由于總線(xiàn)已被破壞,因而不能再使用總線(xiàn)來(lái)擴(kuò)展接口芯片和存儲(chǔ)器。同時(shí),片內(nèi)存儲(chǔ)器也不再具有重復(fù)編程特性。
3 常用解密方法分析
加密和解密長(zhǎng)期以來(lái)就是一對(duì)矛盾。要做好加密,必須先了解現(xiàn)在的解密水平及手段。目前的解密手段大致可分為下面四種。
3.1 恢復(fù)加密位法
該方法能破解常規(guī)用E2COMS工藝的存儲(chǔ)加密位芯片。它包括兩個(gè)系列:
第一是MCU系列,例如MCS51系列(包括89C、97C、W78E/77E系列等)、Z84E系列、PIC16C/12C系列、MC68HC系列等。
第二是PLD,如CPLD的GAL,PALCE的16V8、20V8、22V10,Altera的EPM7032、EMP7064、EMP7128,Lattice的LSP1016、LSP1024和Atmel的ATV750/2500等。
3.2 邏輯分析法
該方法主要采用示波器、邏輯分析儀和MDU解密儀等分析工具分配一些邏輯較簡(jiǎn)單的可編程器件的邏輯功能。
3.3 仿真器軟件跟蹤分析法
此方法適用于破解一些未帶加密功能的單片機(jī)系統(tǒng)(如8031,Z80等系統(tǒng)),而對(duì)于有加密功能的單片機(jī)系統(tǒng),則可先破解其單片機(jī)的源程序,然后進(jìn)行仿真分析。
3.4 芯片揭蓋分析法
現(xiàn)在市場(chǎng)上十萬(wàn)門(mén)以下的芯片多功能通過(guò)揭蓋來(lái)進(jìn)行逆向分析,但此破解法費(fèi)用甚高。此法適用于破解專(zhuān)門(mén)的ASIC芯片。
綜上所述,一般芯片及常規(guī)加密手段很難實(shí)現(xiàn)有效加密。嚴(yán)格來(lái)說(shuō),要做到絕對(duì)的加密是不可能的。選好適當(dāng)?shù)男酒?,采用合適的加密技術(shù),使仿制者面對(duì)需付高昂的解密費(fèi)而卻步,那就意味著加密工作的成功。
動(dòng)態(tài)加密技術(shù)的主要思路是:在程序看到的是虛地址,而虛地址對(duì)應(yīng)的存儲(chǔ)器的實(shí)地址由CPU程序運(yùn)行時(shí)通過(guò)FPGA賦予。其原理如圖1所示。
舉例說(shuō)明,若調(diào)用子程序CALL Function時(shí),對(duì)應(yīng)于同一個(gè)子程序調(diào)用,第一次調(diào)用的是真正的Function,絕對(duì)地址可能在1000H。而在第二次調(diào)用Function時(shí),實(shí)地址可能是2000H,功能可能根本與Function不相同,這樣,只要在調(diào)用前把實(shí)地址通過(guò)軟件置進(jìn)去就可以了。因此可以通過(guò)連續(xù)表面調(diào)用同一個(gè)子程序Function,而實(shí)際則是分別調(diào)用幾個(gè)不同的子程序來(lái)實(shí)現(xiàn)加密。至于虛地址映射到何處的實(shí)地址,可由編程者自己安排,故只需在調(diào)用前輸出實(shí)地址的對(duì)應(yīng)關(guān)系即可。這種軟件與硬件相結(jié)合、虛地址與實(shí)地址相結(jié)合的加密方法使破解者即使獲得源程序也極難分析出對(duì)應(yīng)關(guān)系。
但這種動(dòng)態(tài)加密技術(shù)也有漏動(dòng),如很難對(duì)付仿真器單步跟蹤分析,因此,須做進(jìn)一步個(gè)性。改進(jìn)的方法之一是在FPGA內(nèi)設(shè)計(jì)一個(gè)計(jì)數(shù)器,并由CPU定時(shí)清零,否則一旦超過(guò)時(shí)限,FPGA將停止一切操作而使CPU無(wú)法運(yùn)行,就更不用說(shuō)仿真了。改進(jìn)方法之二是在FPGA內(nèi)做一密,并由CPU運(yùn)行足夠長(zhǎng)的時(shí)間后去訪(fǎng)問(wèn)FPGA,以讀取密碼并比較,若出錯(cuò)則由CPU破壞主內(nèi)存RAM的內(nèi)容,從而導(dǎo)致所有結(jié)果出錯(cuò)。用這種方法足可以對(duì)付邏輯分析儀的跟蹤分析。
對(duì)于數(shù)據(jù)加密,可采用與密鑰邏輯異或的方法。對(duì)于這種方法密鑰以及動(dòng)態(tài)加密技術(shù)的邏輯函數(shù)都必須放在一個(gè)較難破譯的芯片上。鑒于對(duì)芯片解密技術(shù)的了解,筆者推薦使用Actel公司生產(chǎn)的42MX系列的FPGA來(lái)進(jìn)行一次性編程,該芯片不可讀出碼點(diǎn)文件,市場(chǎng)上無(wú)法破解。同時(shí),其資源也極為豐富,設(shè)計(jì)工具完整,且用VHDL語(yǔ)言極易實(shí)現(xiàn)各種功能。
5 結(jié)束語(yǔ)
隨著單片機(jī)系統(tǒng)越來(lái)越廣泛的,其安全保密問(wèn)題也越來(lái)越受到重視。密碼學(xué)為其提供了正確的理論基礎(chǔ)。同時(shí),性能優(yōu)良的硬件是實(shí)現(xiàn)其安全保密的物質(zhì)基礎(chǔ)。二者缺一不可。加密解密長(zhǎng)期以來(lái)就是一對(duì)矛盾,解密技術(shù)隨著科學(xué)技術(shù)的發(fā)展不斷創(chuàng)新。因此,只有對(duì)解密技術(shù)有了深刻的了解,才能做好加密工作,從在則確保產(chǎn)品的安全。
評(píng)論