汪浩 陳學(xué)英
摘 要: 設(shè)計(jì)并實(shí)現(xiàn)了一種基于FPGA的電子密碼鎖,具有解鎖、報(bào)警、修改密碼、死鎖等功能。利用FPGA器件本身具有的并行性和其邏輯電路的本質(zhì),實(shí)現(xiàn)了高效、可靠的密碼鎖設(shè)計(jì);采用基礎(chǔ)電路加模式控制的設(shè)計(jì)方法,得到了簡(jiǎn)單穩(wěn)定且低冗余的電路結(jié)構(gòu),節(jié)省了邏輯資源;提出了一種冗余編碼結(jié)合掩碼加密的硬件加密方法,使得開(kāi)鎖密碼在對(duì)外部密碼存儲(chǔ)器讀寫的過(guò)程中難以被泄露,提高了密碼鎖的安全性。結(jié)果表明,設(shè)計(jì)的電子密碼鎖具有穩(wěn)定高效、簡(jiǎn)單可靠、安全性高等優(yōu)點(diǎn)。
關(guān)鍵詞: FPGA; 電子密碼鎖; 模式控制; 冗余編碼; 掩碼加密
中圖分類號(hào): TN97?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)19?0157?03
Design of electronic password lock based on FPGA
WANG Hao, CHEN Xue?ying
(University of Electronic and Technology of China, Chengdu 610054, China)
Abstract: The electronic password lock based on FPGA was designed and implemented. It possesses the functions of unlocking, alarming, password changing and deadlocking. An efficient and reliable password lock was realized by taking the advantages of parallelism and the logic circuit essence of FPGA. A simple, stable and low redundancy circuit structure was achieved with the design method of basis circuit and mode control, which reduced the consumption of logical resource. A hardware encryption method of combining redundant coding with mask encryption is proposed, which makes it much more difficult to leak the password during the process of reading or writing the extern password memory, and makes the security of password lock enhanced. The result shows that the electronic password lock possesses the advantages of high?stability, briefness, high?efficiency, high?reliability and high?security.
Keywords: FPGA; electronic password lock; mode control; redundant coding; mask encryption
0 引 言
隨著人們生活水平的提高,對(duì)密碼鎖的可靠性和安全性也提出了更高的要求。電子密碼鎖與傳統(tǒng)密碼鎖相比,具有安全性高、成本低、易操作等諸多優(yōu)點(diǎn)。正因如此,電子密碼鎖近年來(lái)發(fā)展迅速,諸如按鍵式密碼鎖、卡片式密碼鎖、以及更加復(fù)雜的指紋識(shí)別、虹膜識(shí)別[1]等密碼鎖相繼出現(xiàn)。目前應(yīng)用最廣泛、技術(shù)最成熟的電子密碼鎖還屬按鍵式和卡片式密碼鎖,但卡片設(shè)備具有易磨損、壽命短、易受外界磁場(chǎng)干擾等缺點(diǎn),并且一旦卡片丟失,將對(duì)密碼鎖的使用造成極大不便[2]。
FPGA[3]作為發(fā)展迅速的現(xiàn)代設(shè)計(jì)技術(shù),已經(jīng)被廣泛應(yīng)用于軍事、空間、電子消費(fèi)類產(chǎn)品等領(lǐng)域,是現(xiàn)代密碼協(xié)議、算法實(shí)現(xiàn)的優(yōu)選平臺(tái)[4]。FPGA內(nèi)部算法可以并行執(zhí)行,且不存在程序跑飛等風(fēng)險(xiǎn)。利用FPGA平臺(tái)本身的可靠性,李珍等[5]給出了一種基于FPGA的可靠性電子密碼鎖設(shè)計(jì);王衛(wèi)兵等[6]分析了密碼編碼總量對(duì)FPGA電子密碼鎖安全性的影響。論文針對(duì)當(dāng)前電子密碼鎖的發(fā)展現(xiàn)狀,設(shè)計(jì)了一種基于FPGA的按鍵密碼鎖。為簡(jiǎn)化電路結(jié)構(gòu),節(jié)省邏輯資源,充分發(fā)揮FPGA的可靠性,本文采用了基本電路加模式控制的設(shè)計(jì)方法;同時(shí)提出了一種冗余編碼[7]結(jié)合掩碼加密[8]的硬件加密方法,使得開(kāi)鎖密碼在對(duì)外部密碼存儲(chǔ)模塊讀寫的過(guò)程中難以被泄漏,從而極大地提高了密碼鎖的安全性。
1 電子密碼鎖設(shè)計(jì)原理
采用6位十六進(jìn)制數(shù)作為開(kāi)鎖密碼,外部密碼輸入正確,能成功指示,輸入錯(cuò)誤也能清除和重置;連續(xù)3次密碼輸入錯(cuò)誤后,系統(tǒng)將死鎖,此時(shí)密碼鎖不再響應(yīng)按鍵輸入信號(hào),只能通過(guò)特定解鎖信號(hào)解除死鎖;具有修改密碼功能,能夠按照特定的流程對(duì)開(kāi)鎖密碼進(jìn)行修改。密碼鎖工作在正常解鎖、修改密碼和死鎖三種狀態(tài)下,狀態(tài)轉(zhuǎn)移如圖1所示。
圖1中,“正常解鎖”狀態(tài)下,按下特定功能按鍵使密碼鎖進(jìn)入“修改密碼”狀態(tài),密碼修改完成后返回“正常解鎖”狀態(tài);任一狀態(tài)下連續(xù)三次輸入密碼錯(cuò)誤,進(jìn)入“死鎖”狀態(tài),此時(shí)只有特定硬件解鎖信號(hào)才能使密碼鎖返回“正常解鎖”狀態(tài)。
2 基于FPGA的邏輯電路實(shí)現(xiàn)
根據(jù)密碼鎖功能需求,密碼鎖電路原理框圖如圖2所示。
圖2中,灰色方框內(nèi)為FPGA內(nèi)部模塊,完成整個(gè)密碼鎖的邏輯功能。外接鍵盤是密碼鎖的輸入設(shè)備,包括十六進(jìn)制密碼按鍵和密碼鎖功能按鍵。由于目前FPGA芯片大多基于SRAM架構(gòu)[9],掉電后程序和數(shù)據(jù)都會(huì)清零,因此需要外接一片密碼存儲(chǔ)芯片對(duì)用戶設(shè)置的密碼進(jìn)行存儲(chǔ)。部分基于FLASH架構(gòu)的FPGA芯片雖然具有掉電后保存程序的能力[10],但是內(nèi)部FLASH的讀寫只能通過(guò)JTAG進(jìn)行,仍舊需要外接密碼存儲(chǔ)芯片。顯示、開(kāi)鎖和報(bào)警模塊分別實(shí)現(xiàn)密碼鎖的按鍵位數(shù)顯示、開(kāi)鎖信號(hào)和報(bào)警信號(hào)輸出功能。
FPGA內(nèi)部電路主要由輸入控制、密碼比較、輸出控制、密碼管理和模式控制等模塊構(gòu)成。其中輸入控制模塊完成對(duì)外接鍵盤信號(hào)的鍵值提取和按鍵消抖功能;密碼比較模塊用于對(duì)當(dāng)前輸入密碼和密碼存儲(chǔ)模塊中保存的正確密碼進(jìn)行比較;輸出控制模塊用于控制顯示模塊顯示密碼輸入位數(shù),并針對(duì)密碼比較結(jié)果和當(dāng)前電路模式,控制開(kāi)鎖和報(bào)警信號(hào);密碼管理模塊負(fù)責(zé)處理對(duì)外部密碼存儲(chǔ)模塊的讀/寫以及掩碼加/解密等操作。當(dāng)按鍵輸入密碼時(shí),密碼管理模塊從密碼存儲(chǔ)模塊中讀取密碼,送入密碼比較模塊與輸入密碼進(jìn)行比較;當(dāng)修改密碼時(shí),密碼管理模塊將按鍵輸入新密碼寫入密碼存儲(chǔ)模塊,更新密碼鎖的開(kāi)鎖密碼。
上述輸入控制、密碼比較、輸出控制、密碼管理等模塊足以保證上鎖、解鎖這一基本功能得以實(shí)現(xiàn)。然而本文設(shè)計(jì)要求中還包括修改密碼和死鎖報(bào)警功能,使得電路邏輯更加復(fù)雜。為此,本文采用一種基礎(chǔ)電路加模式控制的方法來(lái)設(shè)計(jì)密碼鎖,就是將一個(gè)功能相對(duì)復(fù)雜的邏輯電路劃分為幾個(gè)相對(duì)獨(dú)立的工作模式,針對(duì)不同模式分別設(shè)計(jì)電路模塊;然后綜合各個(gè)模式共用的電路模塊作為基礎(chǔ)電路,并引入模式控制模塊對(duì)基礎(chǔ)電路的工作模式進(jìn)行有效的管理。具體到本設(shè)計(jì)當(dāng)中,整個(gè)密碼鎖可以分為正常解鎖、修改密碼和死鎖三種模式。其中正常解鎖和修改密碼的流程分別如圖3(a)和圖3(b)所示。
如圖3所示,在正常解鎖和修改密碼模式下,都需要完成按鍵輸入、原密碼讀取、密碼比較、密碼輸入錯(cuò)誤計(jì)數(shù)、顯示輸出等功能。因此基礎(chǔ)電路可以由圖2中的輸入控制、密碼比較、輸出控制、密碼管理等模塊構(gòu)成,而模式控制模塊負(fù)責(zé)控制基礎(chǔ)電路在不同模式間進(jìn)行切換。例如,在正常解鎖模式下,基礎(chǔ)電路按照?qǐng)D3(a)中的流程工作;按下修改密碼鍵,模式變?yōu)樾薷拿艽a,基礎(chǔ)電路工作流程如圖3(b)所示。
基礎(chǔ)電路中各個(gè)模塊在不同模式下各司其職,分模式復(fù)用,不會(huì)產(chǎn)生冗余的功能模塊;模式控制模塊統(tǒng)領(lǐng)全局,控制整個(gè)基礎(chǔ)電路的模式轉(zhuǎn)換。因此,采用上述設(shè)計(jì)方法,可以簡(jiǎn)化電路結(jié)構(gòu),節(jié)省邏輯資源,使得邏輯流程更加清晰,便于電路結(jié)構(gòu)和功能的拓展。
3 密碼鎖安全性設(shè)計(jì)
安全性作為密碼鎖的首要特性,一直以來(lái)都是密碼鎖設(shè)計(jì)的重點(diǎn)。然而以往基于FPGA的密碼鎖都是參考機(jī)械式密碼鎖的方法,通過(guò)提高密碼位數(shù)來(lái)提高密碼的破譯難度[6]。但是由于基于FPGA的電子密碼鎖與機(jī)械密碼鎖構(gòu)造的不同,這種方法對(duì)FPGA密碼鎖安全性的提高并不全面。前面已經(jīng)提到,由于FPGA芯片數(shù)據(jù)掉電易失的特點(diǎn),必須將密碼鎖的正確密碼存儲(chǔ)在外部密碼存儲(chǔ)器中,每次解鎖都需要從密碼存儲(chǔ)器中讀取正確密碼與按鍵輸入進(jìn)行比對(duì),這就使得正確密碼很容易在密碼存儲(chǔ)器讀寫的過(guò)程中被泄露出去,嚴(yán)重影響密碼鎖的安全性。為解決這一問(wèn)題,本文提出一種冗余編碼結(jié)合掩碼加密的硬件加密方法,該方法能夠大大降低開(kāi)鎖密碼泄露的可能性。
3.1 設(shè)計(jì)原理
所謂掩碼加密,就是將原開(kāi)鎖密碼[K]同一未知掩碼[M]進(jìn)行異或運(yùn)算,再將運(yùn)算得到的新開(kāi)鎖密碼[K]存儲(chǔ)在密碼存儲(chǔ)模塊中,如:
從上式中可以看出,由于掩碼[M]未知,即使在密碼讀取的過(guò)程中[K]被泄露,也無(wú)法得到原開(kāi)鎖密碼[K;]解鎖過(guò)程中只需要將[K]再次與掩碼進(jìn)行[M]異或運(yùn)算,就能得到原開(kāi)鎖密碼[K。]然而上述掩碼加密方法還存在一個(gè)不足,就是當(dāng)掩碼[M]取值數(shù)量較少的時(shí)候,加密效果將會(huì)受到很大的限制。如前所述,密碼鎖的密碼為6位十六進(jìn)制數(shù)。一般編碼方式將這6位密碼分別以4 b二進(jìn)制數(shù)的形式進(jìn)行編碼,對(duì)應(yīng)掩碼[M]一共只有24種取值,被破解的風(fēng)險(xiǎn)就比較大;而掩碼[M]一旦被破解,掩碼加密對(duì)原密碼[K]的保護(hù)作用也將不復(fù)存在。
為解決這一問(wèn)題,本文在掩碼加密之前對(duì)密碼進(jìn)行了冗余編碼,即用16 b二進(jìn)制數(shù)對(duì)原密碼進(jìn)行編碼。這樣一來(lái),掩碼[M]為一個(gè)16 b二進(jìn)制數(shù),具有216種取值,被破解的概率大大降低了。
如表1所示,一個(gè)未知十六進(jìn)制數(shù)[K,]經(jīng)過(guò)冗余編碼和掩碼加密處理,即使掩碼加密后的密碼泄露,但由于掩碼未知且掩碼數(shù)量巨大,原密碼[K]的值也無(wú)法被破解。由此可見(jiàn),采用冗余編碼結(jié)合掩碼加密的設(shè)計(jì)方法,密碼鎖的安全性可以得到極大的提高。
3.2 設(shè)計(jì)實(shí)現(xiàn)
如前所述,圖2中密碼管理模塊在正常解鎖模式下,從密碼存儲(chǔ)模塊中讀取正確密碼;在修改密碼模式下,負(fù)責(zé)處理如圖3(b)所示的修改流程,并將新密碼寫入密碼存儲(chǔ)模塊。除此之外,密碼鎖的掩碼加密也需要在密碼管理模塊中完成,其內(nèi)部框圖如圖4所示。
輸入控制模塊提取按鍵信號(hào)并對(duì)其進(jìn)行冗余編碼。正常解鎖模式下,邏輯控制模塊控制讀寫控制模塊讀取密碼存儲(chǔ)模塊中的正確密碼,經(jīng)過(guò)掩碼解密后與輸入控制模塊生成的冗余碼同時(shí)輸入密碼比較模塊進(jìn)行比較;修改密碼模式下,邏輯控制模塊按照?qǐng)D3(b)中的流程完成新密碼的輸入,并將掩碼加密后的新密碼寫入到密碼存儲(chǔ)模塊。
4 結(jié) 語(yǔ)
本文設(shè)計(jì)了一種基于FPGA的的電子密碼鎖,具有解鎖、報(bào)警、修改密碼、死鎖等功能。由于電路邏輯流程較為復(fù)雜,本文對(duì)電路進(jìn)行分模式設(shè)計(jì),綜合各模式電路得到基礎(chǔ)電路,再在基礎(chǔ)電路之上加入模式控制模塊的設(shè)計(jì)方法,從而避免了冗余模塊的產(chǎn)生,節(jié)省了邏輯資源,并得到結(jié)構(gòu)簡(jiǎn)潔、邏輯清晰的電路設(shè)計(jì)。該方法對(duì)于基于FPGA的復(fù)雜電路的設(shè)計(jì)具有借鑒意義。同時(shí),針對(duì)FPGA器件數(shù)據(jù)掉電易失的特性,提出了一種冗余編碼結(jié)合掩碼加密的硬件加密方法。該方法使得在對(duì)外部密碼存儲(chǔ)模塊讀/寫的過(guò)程中開(kāi)鎖密碼難以被泄露,從而提高了密碼鎖的破解難度,使其安全性得到很大提高。
參考文獻(xiàn)
[1] 王蘊(yùn)紅,朱勇,譚鐵牛.基于虹膜識(shí)別的身份鑒別[J].自動(dòng)化學(xué)報(bào),2002,28(1):1?10.
[2] 陸繼遠(yuǎn).電子密碼鎖的FPGA實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2011,27(7):3?5.
[3] 尹常永.EDA技術(shù)與數(shù)字系統(tǒng)設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2004.
[4] 孫海濤,劉潔,何循來(lái),等.FPGA密碼模塊惡意木馬后門設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2013,32(22):20?22.
[5] 李珍,王國(guó)宇,崔麗娟.基于FPGA的可靠性電子密碼鎖設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2013,36(7):151?153.
[6] 王衛(wèi)兵,劉克剛,朱秋萍.用FPGA的電子密碼鎖[J].電子技術(shù),2005(1):26?28.
[7] 劉東,周晴天.利用字符的冗余編碼攜帶隱藏信息的文本數(shù)字化水印技術(shù)[J].計(jì)算機(jī)應(yīng)用研究,2007(2):155?157.
[8] 彭濤,王栓杰,席偉,等.FPGA密碼芯片改進(jìn)掩碼防護(hù)方法研究[J].信息技術(shù),2011(11):31?33.
[9] 王紅,彭亮,于宗光.FPGA現(xiàn)狀與發(fā)展趨勢(shì)[J].電子與封裝,2007,7(7):32?37.
[10] 楊海鋼,孫嘉斌,王慰.FPGA器件設(shè)計(jì)技術(shù)發(fā)展綜述[J].電子與信息學(xué)報(bào),2010,32(3):714?727.
FPGA內(nèi)部電路主要由輸入控制、密碼比較、輸出控制、密碼管理和模式控制等模塊構(gòu)成。其中輸入控制模塊完成對(duì)外接鍵盤信號(hào)的鍵值提取和按鍵消抖功能;密碼比較模塊用于對(duì)當(dāng)前輸入密碼和密碼存儲(chǔ)模塊中保存的正確密碼進(jìn)行比較;輸出控制模塊用于控制顯示模塊顯示密碼輸入位數(shù),并針對(duì)密碼比較結(jié)果和當(dāng)前電路模式,控制開(kāi)鎖和報(bào)警信號(hào);密碼管理模塊負(fù)責(zé)處理對(duì)外部密碼存儲(chǔ)模塊的讀/寫以及掩碼加/解密等操作。當(dāng)按鍵輸入密碼時(shí),密碼管理模塊從密碼存儲(chǔ)模塊中讀取密碼,送入密碼比較模塊與輸入密碼進(jìn)行比較;當(dāng)修改密碼時(shí),密碼管理模塊將按鍵輸入新密碼寫入密碼存儲(chǔ)模塊,更新密碼鎖的開(kāi)鎖密碼。
上述輸入控制、密碼比較、輸出控制、密碼管理等模塊足以保證上鎖、解鎖這一基本功能得以實(shí)現(xiàn)。然而本文設(shè)計(jì)要求中還包括修改密碼和死鎖報(bào)警功能,使得電路邏輯更加復(fù)雜。為此,本文采用一種基礎(chǔ)電路加模式控制的方法來(lái)設(shè)計(jì)密碼鎖,就是將一個(gè)功能相對(duì)復(fù)雜的邏輯電路劃分為幾個(gè)相對(duì)獨(dú)立的工作模式,針對(duì)不同模式分別設(shè)計(jì)電路模塊;然后綜合各個(gè)模式共用的電路模塊作為基礎(chǔ)電路,并引入模式控制模塊對(duì)基礎(chǔ)電路的工作模式進(jìn)行有效的管理。具體到本設(shè)計(jì)當(dāng)中,整個(gè)密碼鎖可以分為正常解鎖、修改密碼和死鎖三種模式。其中正常解鎖和修改密碼的流程分別如圖3(a)和圖3(b)所示。
如圖3所示,在正常解鎖和修改密碼模式下,都需要完成按鍵輸入、原密碼讀取、密碼比較、密碼輸入錯(cuò)誤計(jì)數(shù)、顯示輸出等功能。因此基礎(chǔ)電路可以由圖2中的輸入控制、密碼比較、輸出控制、密碼管理等模塊構(gòu)成,而模式控制模塊負(fù)責(zé)控制基礎(chǔ)電路在不同模式間進(jìn)行切換。例如,在正常解鎖模式下,基礎(chǔ)電路按照?qǐng)D3(a)中的流程工作;按下修改密碼鍵,模式變?yōu)樾薷拿艽a,基礎(chǔ)電路工作流程如圖3(b)所示。
基礎(chǔ)電路中各個(gè)模塊在不同模式下各司其職,分模式復(fù)用,不會(huì)產(chǎn)生冗余的功能模塊;模式控制模塊統(tǒng)領(lǐng)全局,控制整個(gè)基礎(chǔ)電路的模式轉(zhuǎn)換。因此,采用上述設(shè)計(jì)方法,可以簡(jiǎn)化電路結(jié)構(gòu),節(jié)省邏輯資源,使得邏輯流程更加清晰,便于電路結(jié)構(gòu)和功能的拓展。
3 密碼鎖安全性設(shè)計(jì)
安全性作為密碼鎖的首要特性,一直以來(lái)都是密碼鎖設(shè)計(jì)的重點(diǎn)。然而以往基于FPGA的密碼鎖都是參考機(jī)械式密碼鎖的方法,通過(guò)提高密碼位數(shù)來(lái)提高密碼的破譯難度[6]。但是由于基于FPGA的電子密碼鎖與機(jī)械密碼鎖構(gòu)造的不同,這種方法對(duì)FPGA密碼鎖安全性的提高并不全面。前面已經(jīng)提到,由于FPGA芯片數(shù)據(jù)掉電易失的特點(diǎn),必須將密碼鎖的正確密碼存儲(chǔ)在外部密碼存儲(chǔ)器中,每次解鎖都需要從密碼存儲(chǔ)器中讀取正確密碼與按鍵輸入進(jìn)行比對(duì),這就使得正確密碼很容易在密碼存儲(chǔ)器讀寫的過(guò)程中被泄露出去,嚴(yán)重影響密碼鎖的安全性。為解決這一問(wèn)題,本文提出一種冗余編碼結(jié)合掩碼加密的硬件加密方法,該方法能夠大大降低開(kāi)鎖密碼泄露的可能性。
3.1 設(shè)計(jì)原理
所謂掩碼加密,就是將原開(kāi)鎖密碼[K]同一未知掩碼[M]進(jìn)行異或運(yùn)算,再將運(yùn)算得到的新開(kāi)鎖密碼[K]存儲(chǔ)在密碼存儲(chǔ)模塊中,如:
從上式中可以看出,由于掩碼[M]未知,即使在密碼讀取的過(guò)程中[K]被泄露,也無(wú)法得到原開(kāi)鎖密碼[K;]解鎖過(guò)程中只需要將[K]再次與掩碼進(jìn)行[M]異或運(yùn)算,就能得到原開(kāi)鎖密碼[K。]然而上述掩碼加密方法還存在一個(gè)不足,就是當(dāng)掩碼[M]取值數(shù)量較少的時(shí)候,加密效果將會(huì)受到很大的限制。如前所述,密碼鎖的密碼為6位十六進(jìn)制數(shù)。一般編碼方式將這6位密碼分別以4 b二進(jìn)制數(shù)的形式進(jìn)行編碼,對(duì)應(yīng)掩碼[M]一共只有24種取值,被破解的風(fēng)險(xiǎn)就比較大;而掩碼[M]一旦被破解,掩碼加密對(duì)原密碼[K]的保護(hù)作用也將不復(fù)存在。
為解決這一問(wèn)題,本文在掩碼加密之前對(duì)密碼進(jìn)行了冗余編碼,即用16 b二進(jìn)制數(shù)對(duì)原密碼進(jìn)行編碼。這樣一來(lái),掩碼[M]為一個(gè)16 b二進(jìn)制數(shù),具有216種取值,被破解的概率大大降低了。
如表1所示,一個(gè)未知十六進(jìn)制數(shù)[K,]經(jīng)過(guò)冗余編碼和掩碼加密處理,即使掩碼加密后的密碼泄露,但由于掩碼未知且掩碼數(shù)量巨大,原密碼[K]的值也無(wú)法被破解。由此可見(jiàn),采用冗余編碼結(jié)合掩碼加密的設(shè)計(jì)方法,密碼鎖的安全性可以得到極大的提高。
3.2 設(shè)計(jì)實(shí)現(xiàn)
如前所述,圖2中密碼管理模塊在正常解鎖模式下,從密碼存儲(chǔ)模塊中讀取正確密碼;在修改密碼模式下,負(fù)責(zé)處理如圖3(b)所示的修改流程,并將新密碼寫入密碼存儲(chǔ)模塊。除此之外,密碼鎖的掩碼加密也需要在密碼管理模塊中完成,其內(nèi)部框圖如圖4所示。
輸入控制模塊提取按鍵信號(hào)并對(duì)其進(jìn)行冗余編碼。正常解鎖模式下,邏輯控制模塊控制讀寫控制模塊讀取密碼存儲(chǔ)模塊中的正確密碼,經(jīng)過(guò)掩碼解密后與輸入控制模塊生成的冗余碼同時(shí)輸入密碼比較模塊進(jìn)行比較;修改密碼模式下,邏輯控制模塊按照?qǐng)D3(b)中的流程完成新密碼的輸入,并將掩碼加密后的新密碼寫入到密碼存儲(chǔ)模塊。
4 結(jié) 語(yǔ)
本文設(shè)計(jì)了一種基于FPGA的的電子密碼鎖,具有解鎖、報(bào)警、修改密碼、死鎖等功能。由于電路邏輯流程較為復(fù)雜,本文對(duì)電路進(jìn)行分模式設(shè)計(jì),綜合各模式電路得到基礎(chǔ)電路,再在基礎(chǔ)電路之上加入模式控制模塊的設(shè)計(jì)方法,從而避免了冗余模塊的產(chǎn)生,節(jié)省了邏輯資源,并得到結(jié)構(gòu)簡(jiǎn)潔、邏輯清晰的電路設(shè)計(jì)。該方法對(duì)于基于FPGA的復(fù)雜電路的設(shè)計(jì)具有借鑒意義。同時(shí),針對(duì)FPGA器件數(shù)據(jù)掉電易失的特性,提出了一種冗余編碼結(jié)合掩碼加密的硬件加密方法。該方法使得在對(duì)外部密碼存儲(chǔ)模塊讀/寫的過(guò)程中開(kāi)鎖密碼難以被泄露,從而提高了密碼鎖的破解難度,使其安全性得到很大提高。
參考文獻(xiàn)
[1] 王蘊(yùn)紅,朱勇,譚鐵牛.基于虹膜識(shí)別的身份鑒別[J].自動(dòng)化學(xué)報(bào),2002,28(1):1?10.
[2] 陸繼遠(yuǎn).電子密碼鎖的FPGA實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2011,27(7):3?5.
[3] 尹常永.EDA技術(shù)與數(shù)字系統(tǒng)設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2004.
[4] 孫海濤,劉潔,何循來(lái),等.FPGA密碼模塊惡意木馬后門設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2013,32(22):20?22.
[5] 李珍,王國(guó)宇,崔麗娟.基于FPGA的可靠性電子密碼鎖設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2013,36(7):151?153.
[6] 王衛(wèi)兵,劉克剛,朱秋萍.用FPGA的電子密碼鎖[J].電子技術(shù),2005(1):26?28.
[7] 劉東,周晴天.利用字符的冗余編碼攜帶隱藏信息的文本數(shù)字化水印技術(shù)[J].計(jì)算機(jī)應(yīng)用研究,2007(2):155?157.
[8] 彭濤,王栓杰,席偉,等.FPGA密碼芯片改進(jìn)掩碼防護(hù)方法研究[J].信息技術(shù),2011(11):31?33.
[9] 王紅,彭亮,于宗光.FPGA現(xiàn)狀與發(fā)展趨勢(shì)[J].電子與封裝,2007,7(7):32?37.
[10] 楊海鋼,孫嘉斌,王慰.FPGA器件設(shè)計(jì)技術(shù)發(fā)展綜述[J].電子與信息學(xué)報(bào),2010,32(3):714?727.
FPGA內(nèi)部電路主要由輸入控制、密碼比較、輸出控制、密碼管理和模式控制等模塊構(gòu)成。其中輸入控制模塊完成對(duì)外接鍵盤信號(hào)的鍵值提取和按鍵消抖功能;密碼比較模塊用于對(duì)當(dāng)前輸入密碼和密碼存儲(chǔ)模塊中保存的正確密碼進(jìn)行比較;輸出控制模塊用于控制顯示模塊顯示密碼輸入位數(shù),并針對(duì)密碼比較結(jié)果和當(dāng)前電路模式,控制開(kāi)鎖和報(bào)警信號(hào);密碼管理模塊負(fù)責(zé)處理對(duì)外部密碼存儲(chǔ)模塊的讀/寫以及掩碼加/解密等操作。當(dāng)按鍵輸入密碼時(shí),密碼管理模塊從密碼存儲(chǔ)模塊中讀取密碼,送入密碼比較模塊與輸入密碼進(jìn)行比較;當(dāng)修改密碼時(shí),密碼管理模塊將按鍵輸入新密碼寫入密碼存儲(chǔ)模塊,更新密碼鎖的開(kāi)鎖密碼。
上述輸入控制、密碼比較、輸出控制、密碼管理等模塊足以保證上鎖、解鎖這一基本功能得以實(shí)現(xiàn)。然而本文設(shè)計(jì)要求中還包括修改密碼和死鎖報(bào)警功能,使得電路邏輯更加復(fù)雜。為此,本文采用一種基礎(chǔ)電路加模式控制的方法來(lái)設(shè)計(jì)密碼鎖,就是將一個(gè)功能相對(duì)復(fù)雜的邏輯電路劃分為幾個(gè)相對(duì)獨(dú)立的工作模式,針對(duì)不同模式分別設(shè)計(jì)電路模塊;然后綜合各個(gè)模式共用的電路模塊作為基礎(chǔ)電路,并引入模式控制模塊對(duì)基礎(chǔ)電路的工作模式進(jìn)行有效的管理。具體到本設(shè)計(jì)當(dāng)中,整個(gè)密碼鎖可以分為正常解鎖、修改密碼和死鎖三種模式。其中正常解鎖和修改密碼的流程分別如圖3(a)和圖3(b)所示。
如圖3所示,在正常解鎖和修改密碼模式下,都需要完成按鍵輸入、原密碼讀取、密碼比較、密碼輸入錯(cuò)誤計(jì)數(shù)、顯示輸出等功能。因此基礎(chǔ)電路可以由圖2中的輸入控制、密碼比較、輸出控制、密碼管理等模塊構(gòu)成,而模式控制模塊負(fù)責(zé)控制基礎(chǔ)電路在不同模式間進(jìn)行切換。例如,在正常解鎖模式下,基礎(chǔ)電路按照?qǐng)D3(a)中的流程工作;按下修改密碼鍵,模式變?yōu)樾薷拿艽a,基礎(chǔ)電路工作流程如圖3(b)所示。
基礎(chǔ)電路中各個(gè)模塊在不同模式下各司其職,分模式復(fù)用,不會(huì)產(chǎn)生冗余的功能模塊;模式控制模塊統(tǒng)領(lǐng)全局,控制整個(gè)基礎(chǔ)電路的模式轉(zhuǎn)換。因此,采用上述設(shè)計(jì)方法,可以簡(jiǎn)化電路結(jié)構(gòu),節(jié)省邏輯資源,使得邏輯流程更加清晰,便于電路結(jié)構(gòu)和功能的拓展。
3 密碼鎖安全性設(shè)計(jì)
安全性作為密碼鎖的首要特性,一直以來(lái)都是密碼鎖設(shè)計(jì)的重點(diǎn)。然而以往基于FPGA的密碼鎖都是參考機(jī)械式密碼鎖的方法,通過(guò)提高密碼位數(shù)來(lái)提高密碼的破譯難度[6]。但是由于基于FPGA的電子密碼鎖與機(jī)械密碼鎖構(gòu)造的不同,這種方法對(duì)FPGA密碼鎖安全性的提高并不全面。前面已經(jīng)提到,由于FPGA芯片數(shù)據(jù)掉電易失的特點(diǎn),必須將密碼鎖的正確密碼存儲(chǔ)在外部密碼存儲(chǔ)器中,每次解鎖都需要從密碼存儲(chǔ)器中讀取正確密碼與按鍵輸入進(jìn)行比對(duì),這就使得正確密碼很容易在密碼存儲(chǔ)器讀寫的過(guò)程中被泄露出去,嚴(yán)重影響密碼鎖的安全性。為解決這一問(wèn)題,本文提出一種冗余編碼結(jié)合掩碼加密的硬件加密方法,該方法能夠大大降低開(kāi)鎖密碼泄露的可能性。
3.1 設(shè)計(jì)原理
所謂掩碼加密,就是將原開(kāi)鎖密碼[K]同一未知掩碼[M]進(jìn)行異或運(yùn)算,再將運(yùn)算得到的新開(kāi)鎖密碼[K]存儲(chǔ)在密碼存儲(chǔ)模塊中,如:
從上式中可以看出,由于掩碼[M]未知,即使在密碼讀取的過(guò)程中[K]被泄露,也無(wú)法得到原開(kāi)鎖密碼[K;]解鎖過(guò)程中只需要將[K]再次與掩碼進(jìn)行[M]異或運(yùn)算,就能得到原開(kāi)鎖密碼[K。]然而上述掩碼加密方法還存在一個(gè)不足,就是當(dāng)掩碼[M]取值數(shù)量較少的時(shí)候,加密效果將會(huì)受到很大的限制。如前所述,密碼鎖的密碼為6位十六進(jìn)制數(shù)。一般編碼方式將這6位密碼分別以4 b二進(jìn)制數(shù)的形式進(jìn)行編碼,對(duì)應(yīng)掩碼[M]一共只有24種取值,被破解的風(fēng)險(xiǎn)就比較大;而掩碼[M]一旦被破解,掩碼加密對(duì)原密碼[K]的保護(hù)作用也將不復(fù)存在。
為解決這一問(wèn)題,本文在掩碼加密之前對(duì)密碼進(jìn)行了冗余編碼,即用16 b二進(jìn)制數(shù)對(duì)原密碼進(jìn)行編碼。這樣一來(lái),掩碼[M]為一個(gè)16 b二進(jìn)制數(shù),具有216種取值,被破解的概率大大降低了。
如表1所示,一個(gè)未知十六進(jìn)制數(shù)[K,]經(jīng)過(guò)冗余編碼和掩碼加密處理,即使掩碼加密后的密碼泄露,但由于掩碼未知且掩碼數(shù)量巨大,原密碼[K]的值也無(wú)法被破解。由此可見(jiàn),采用冗余編碼結(jié)合掩碼加密的設(shè)計(jì)方法,密碼鎖的安全性可以得到極大的提高。
3.2 設(shè)計(jì)實(shí)現(xiàn)
如前所述,圖2中密碼管理模塊在正常解鎖模式下,從密碼存儲(chǔ)模塊中讀取正確密碼;在修改密碼模式下,負(fù)責(zé)處理如圖3(b)所示的修改流程,并將新密碼寫入密碼存儲(chǔ)模塊。除此之外,密碼鎖的掩碼加密也需要在密碼管理模塊中完成,其內(nèi)部框圖如圖4所示。
輸入控制模塊提取按鍵信號(hào)并對(duì)其進(jìn)行冗余編碼。正常解鎖模式下,邏輯控制模塊控制讀寫控制模塊讀取密碼存儲(chǔ)模塊中的正確密碼,經(jīng)過(guò)掩碼解密后與輸入控制模塊生成的冗余碼同時(shí)輸入密碼比較模塊進(jìn)行比較;修改密碼模式下,邏輯控制模塊按照?qǐng)D3(b)中的流程完成新密碼的輸入,并將掩碼加密后的新密碼寫入到密碼存儲(chǔ)模塊。
4 結(jié) 語(yǔ)
本文設(shè)計(jì)了一種基于FPGA的的電子密碼鎖,具有解鎖、報(bào)警、修改密碼、死鎖等功能。由于電路邏輯流程較為復(fù)雜,本文對(duì)電路進(jìn)行分模式設(shè)計(jì),綜合各模式電路得到基礎(chǔ)電路,再在基礎(chǔ)電路之上加入模式控制模塊的設(shè)計(jì)方法,從而避免了冗余模塊的產(chǎn)生,節(jié)省了邏輯資源,并得到結(jié)構(gòu)簡(jiǎn)潔、邏輯清晰的電路設(shè)計(jì)。該方法對(duì)于基于FPGA的復(fù)雜電路的設(shè)計(jì)具有借鑒意義。同時(shí),針對(duì)FPGA器件數(shù)據(jù)掉電易失的特性,提出了一種冗余編碼結(jié)合掩碼加密的硬件加密方法。該方法使得在對(duì)外部密碼存儲(chǔ)模塊讀/寫的過(guò)程中開(kāi)鎖密碼難以被泄露,從而提高了密碼鎖的破解難度,使其安全性得到很大提高。
參考文獻(xiàn)
[1] 王蘊(yùn)紅,朱勇,譚鐵牛.基于虹膜識(shí)別的身份鑒別[J].自動(dòng)化學(xué)報(bào),2002,28(1):1?10.
[2] 陸繼遠(yuǎn).電子密碼鎖的FPGA實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2011,27(7):3?5.
[3] 尹常永.EDA技術(shù)與數(shù)字系統(tǒng)設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2004.
[4] 孫海濤,劉潔,何循來(lái),等.FPGA密碼模塊惡意木馬后門設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2013,32(22):20?22.
[5] 李珍,王國(guó)宇,崔麗娟.基于FPGA的可靠性電子密碼鎖設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2013,36(7):151?153.
[6] 王衛(wèi)兵,劉克剛,朱秋萍.用FPGA的電子密碼鎖[J].電子技術(shù),2005(1):26?28.
[7] 劉東,周晴天.利用字符的冗余編碼攜帶隱藏信息的文本數(shù)字化水印技術(shù)[J].計(jì)算機(jī)應(yīng)用研究,2007(2):155?157.
[8] 彭濤,王栓杰,席偉,等.FPGA密碼芯片改進(jìn)掩碼防護(hù)方法研究[J].信息技術(shù),2011(11):31?33.
[9] 王紅,彭亮,于宗光.FPGA現(xiàn)狀與發(fā)展趨勢(shì)[J].電子與封裝,2007,7(7):32?37.
[10] 楊海鋼,孫嘉斌,王慰.FPGA器件設(shè)計(jì)技術(shù)發(fā)展綜述[J].電子與信息學(xué)報(bào),2010,32(3):714?727.