解析:HCS12系列單片機(jī)的兩種加密解密方法

2013-11-27 11:53 來源:電源網(wǎng) 作者:和靜

HCS12系列單片機(jī)中,加密可以分成兩種方法:完全加密和使用密碼的加密。這兩種加密的方法根據(jù)用戶的需求,使用的場(chǎng)合也有所不同。

完全加密

所謂完全加密,就是將芯片徹底的保護(hù)起來,屏蔽對(duì)芯片的所有讀操作。在MC9S12DP256單片機(jī)中,加密是通過對(duì)某一Flash單元($FF0F)編程來實(shí)現(xiàn)的。加密后的芯片,BDM編程器對(duì)Flash的讀操作就被禁止了。

采用完全加密,讀取ROM代碼的可能性就不存在了,這是一種最為“安全”的加密方法。如果用戶

想修改ROM的內(nèi)容,唯一的辦法就是將Flash的內(nèi)容全部擦除,這一操作可以通過BDM編程器來完成。

使用BDM編程器擦除Flash ROM和EEPROM的過程與在普通模式下對(duì)片內(nèi)的Flash ROM擦除操作過程基本一樣,區(qū)別是對(duì)寄存器或是存儲(chǔ)單元的讀寫要改由BDM命令來實(shí)現(xiàn)。通過BDM編程器將一連串完整的擦除指令序列送給單片機(jī),就可將Flash ROM和EEPROM的內(nèi)容全部擦除了。

在全擦除操作完成后,BDM編程器將系統(tǒng)復(fù)位,系統(tǒng)會(huì)自動(dòng)檢查全擦除操作是否成功。如果成功,BDM狀態(tài)寄存器的UNSEC位會(huì)自動(dòng)置“1”,系統(tǒng)進(jìn)入解密狀態(tài)。

由于系統(tǒng)靠檢查Flash ROM和EEPROM是否清空來決定系統(tǒng)是否保持加密狀態(tài),所以,如果用戶程序偶然將Flash ROM和EEPROM的內(nèi)容全部擦除,那么系統(tǒng)也將自動(dòng)解密。

使用密碼的加密

為了留有讀取ROM代碼的可能,用戶可以采用一種帶有密碼的加密方式。解密時(shí),用戶只要給出正確的密碼(稱為“后門密碼”),就可以讀寫ROM,而不破壞其內(nèi)容了。

使用這種方法,用戶需要在加密之前,設(shè)定4個(gè)字長的密碼,并將其存放在Flash中,MC9S12DP256存放密碼的Flash地址是從$FF00到$FF07。設(shè)定的密碼可以隨用戶程序一起下載到芯片中。

解密時(shí),接受用戶輸入的密碼并驗(yàn)證的工作只能由一個(gè)用戶接口程序來完成的,不能使用BDM編程器。接口的方式?jīng)]有限制,如SCI、SPI、IIC、MSCAN等等,只要用戶能夠?qū)⒄_的密碼輸入,任何一種接口方式都是可以的,最為典型的接口是串口。

假設(shè)接收的密碼存在變量KEY0-KEY7中,驗(yàn)證密碼的程序如下:

;******************

;* TEST KEYS

;******************

TESTKEYS

BSET FCNFG,$20 ;置KEYACC為1

LDD KEY0

STD $FF00

LDD KEY2

STD $FF02

LDD KEY4

靈活使用帶密碼的加密解密方法

通過研究我們發(fā)現(xiàn),使用帶有密碼的加密方式,看似給破解代碼留有了可能性,但因?yàn)榻邮芎万?yàn)證密碼都需要由用戶程序完成,只要用戶程序設(shè)計(jì)的可靠,這種可能性是很小的。

為了增強(qiáng)用戶接口程序的可靠性和靈活性,我們提出以下幾種可能的設(shè)計(jì)思路:

針對(duì)窮舉密碼的對(duì)策:MC9S12DP256的密碼長達(dá)8個(gè)字節(jié),如果不將密碼限定在ASCII碼的范圍內(nèi),那么可以選擇的密碼數(shù)量將達(dá)到1.8*1019 種。為了防患破解者窮舉密碼,用戶可以設(shè)定允許輸入錯(cuò)誤密碼的次數(shù),如果出錯(cuò)超過一定次數(shù),接口程序就不再接收新的密碼了。允許出錯(cuò)的次數(shù)可以根據(jù)安全需要和使用方便綜合考慮。

靈活的對(duì)外接口:使用密碼加解密時(shí),用戶程序使用的對(duì)外接口是沒有任何限制的。本文中的串口程序只是一例,MC9S12DP256片內(nèi)集成了眾多的接口模塊,如SCI、SPI、IIC、MSCAN、J1850等等。使用哪一個(gè)接口,用戶可以根據(jù)方便和安全考慮自己選擇,這樣也會(huì)使破解者難以入手。

用戶程序級(jí)密碼驗(yàn)證:用戶還可以給接口程序增設(shè)一級(jí)密碼驗(yàn)證的步驟。只有通過該密碼驗(yàn)證,才能進(jìn)一步輸入解密的密碼。因?yàn)榧用芎?,F(xiàn)lash ROM就無法讀寫了,用戶程序可以將增設(shè)的密碼也保存到Flash中,留待驗(yàn)證。另外,如果某一個(gè)模塊既要作為接受密碼的接口,又有其他的用途,也應(yīng)該留有一個(gè)交互界面,在使用前讓用戶選擇該模塊的用途。

遠(yuǎn)程加解密:在很多場(chǎng)合,用戶對(duì)于單片機(jī)的控制是通過以太網(wǎng)等介質(zhì)遠(yuǎn)程實(shí)現(xiàn)的,只要有相應(yīng)的接口程序,能夠遠(yuǎn)程對(duì)單片機(jī)進(jìn)行加解密,這無疑會(huì)給用戶的工作帶來很大的方便。

單片機(jī) 解密 加密 HCS12

相關(guān)閱讀

暫無數(shù)據(jù)

一周熱門