基于SOPC的USB密碼模塊硬件與固件設計
引 言
本文引用地址:http://dyxdggzs.com/article/83043.htm密碼模塊是指被容納在加密邊界范圍中,執行認可安全功能(包括加密算法與密鑰產(chǎn)生)的硬件、軟件和固件的組合。集加密存儲、安全認證等功能于一體的USB密碼模塊,可作為USB安全鑰載體、USB加密卡、USB大容量加密存儲體應用于保護信息系統和秘密信息的主要工具,具有十分良好的市場(chǎng)應用背景。
SOPC(System On a Programmable Chip)技術(shù)是一種靈活、高效的軟硬件綜合解決方案。硬件上可裁剪、可擴充、可升級,有豐富的IP核可供集成,使得設計變得十分靈活。
本文提出了基于SOPC的USB密碼模塊設計思想,其目標是設計一款集加密存儲、安全認證等功能于一體的基于SOPC的USB密碼模塊應用系統。
1 基于SOPC的USB密碼模塊總體設計
1.1 設計思想
本設計是基于模塊的設計思想,充分利用SOPC現有資源開(kāi)發(fā)特殊功能的應用子系統。用USB2.0接口控制芯片、有豐富可編程資源的FPGA芯片、安全存儲專(zhuān)用芯片以及大容量Flash構成密碼模塊硬件基礎。以FPGA為控制中心,實(shí)現FPGA對相連部件的操作。
1.2功能模塊及組成
整個(gè)模塊系統包括硬件層、固件層、驅動(dòng)層、應用層4部分。硬件層包括嵌入式主控制器及其周邊環(huán)境、高性能密碼處理單元、內部安全控制引擎、應用平臺通信接口等模塊;固件層包括協(xié)議棧、嵌入式軟件等;驅動(dòng)層包括器件驅動(dòng)程序;應用層包括基于操作系統的各類(lèi)應用軟件API。其總體架構如圖1所示。
1.3 安全策略
本系統中安全策略包括模塊安全管理和數據安全管理。具體內容包括基于口令的認證、口令設置修改、模塊有效期管理、安全參數保護管理、數據有效期管理、數據加密和數據銷(xiāo)毀等。
口令認證:通過(guò)硬件實(shí)現用戶(hù)對模塊訪(fǎng)問(wèn)操作的口令認證。
口令設置修改:系統設計有多種級別的口令權限,負責不同的操作。
模塊有效期管理:若判斷到達或超過(guò)使用期限,則自動(dòng)銷(xiāo)毀存儲數據和安全參數,并鎖定密碼模塊。
數據有效期管理:當達到數據使用期限時(shí),可自動(dòng)銷(xiāo)毀存儲在大容量Flash里的數據。
數據銷(xiāo)毀:分為自動(dòng)銷(xiāo)毀和主動(dòng)銷(xiāo)毀。當非法使用、口令攻擊和數據有效期失效時(shí),自動(dòng)銷(xiāo)毀用戶(hù)存儲在大容量Flash中的數據。
數據加密:使用分組算法,通過(guò)密碼模塊密鑰對用戶(hù)存儲在大容量Flash中的數據寫(xiě)人加密;讀出時(shí)解密,以保證存儲在其內的始終是密文。
2 硬件設計
2.1硬件架構模型
本文在研究了應用需求的基礎上,提出了圖2所示的硬件架構模型。
它主要包括如下5部分:
?、?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/嵌入式">嵌入式微控制器:主要負責模塊的整體協(xié)調以及與外部通信接口的處理,實(shí)現系統控制、安全協(xié)議等功能。
?、趦炔堪踩刂埔妫簽榱藴p少中心控制模塊的工作,加快密碼運算處理速度,專(zhuān)門(mén)設計一個(gè)專(zhuān)用的微控制器來(lái)進(jìn)行調度密碼運算處理。
?、勖艽a運算IP核:面向信息安全領(lǐng)域的安全應用,集成對稱(chēng)、非對稱(chēng)、雜湊等密碼運算單元,通過(guò)內部安全控制引擎控制。
?、芸偩€(xiàn)橋:為讓外部接口與內部運算模塊更為高效地通信,通過(guò)總線(xiàn)橋使兩條總線(xiàn)連接起來(lái),較好地實(shí)現時(shí)序匹配和數據傳輸。
?、輸祿鎯δK:為了讓密碼運算處理模塊與外部接口之間的通信同步,需設計一個(gè)數據存儲模塊來(lái)存儲外部來(lái)的數據以及加密后來(lái)不及輸出的數據。
2.2 內部硬件電路關(guān)鍵部件設計
2.2.1 內部安全控制引擎MCU的設計
根據密碼處理的特殊性,MCU一方面要實(shí)現兩個(gè)設備之間的數據直接交換;另一方面要及時(shí)對運算完成標志作出快速響應,以減少不必要的時(shí)間延遲。因此,MCU除具備通用微控制器的數據傳輸指令之外,還要增加如下2類(lèi)指令:
?、僦苯訑祿鬏斨噶睿簩?shí)現外部存儲器與密碼模塊之問(wèn)的直接數據傳輸。不同于通用微處理器的DMA功能,它通過(guò)專(zhuān)用指令實(shí)現兩個(gè)外部緩沖區之間的數據交換。
?、谳斎肱袛喾种е噶睿喊次粚ν獠枯斎胄盘栠M(jìn)行判斷,無(wú)須微處理器執行算術(shù)運算或邏輯運算,即可直接判斷外部引腳電平,決定程序分支。
MCU設計:
◆采用哈佛結構模型來(lái)實(shí)現;
◆MCU為了與嵌入式控制器NiosII更好地協(xié)調工作,采用32位寬指令;
◆可以同時(shí)讀取指令和數據,使流水設計變得簡(jiǎn)單易行;
◆指令和數據都存放在內嵌的存儲器中,使控制器、運算器和程序存儲器的處理效率較高;
◆主要進(jìn)行數據傳輸指令和跳轉指令設計。
微控制器主要由取指電路、譯碼電路、執行部件3部分組成,實(shí)現各項功能。其電路整體框架如圖3所示。
2.2.2嵌入式控制器NiosII與內部安全控制引擎
MOU的協(xié)調控制設計
由于本密碼模塊系統較為復雜,內嵌的NiosII需要完成數據的傳輸、控制、通信、調度等任務(wù)。若采用傳統的單CPU結構進(jìn)行控制,因受到CPU速度和自身資源的影響,系統很可能出現任務(wù)過(guò)于繁重的情況。一旦出現故障,系統將不能正常工作。因此,在本設計中采用雙CPU設計方案。其相互的協(xié)調控制模型如圖4所示。
對于NiosII而言:
外部如有數據要進(jìn)行加/解密處理,NiosII首先寫(xiě)命令到MCU命令接收寄存器,待MCU明確表示接收到命令后,返回一個(gè)確認信號給:NiosII;NiosII接收到確認信號后,則轉入到寫(xiě)數據狀態(tài)。在寫(xiě)數據狀態(tài),NiosII把數據按一定長(cháng)度分組進(jìn)行填充,輸入到橋接器的輸入FIFO。待數據輸入完后,發(fā)出輸入FIFO有效信號到MCU,轉入判斷IP運算核是否有效;若未完成,則繼續在該狀態(tài)進(jìn)行等待。當IP運算完后,MCU置讀FIFO信號有效,NiosII判斷這個(gè)信號有效后直接從橋接器的輸出FIFO,把數據從輸出FIFO送到外部接口部件,完成一次數據加/解密過(guò)程;否則,繼續等待,超出規定時(shí)限后,發(fā)出錯誤警告。
對于MCU而言:
MCU接收到NiosII過(guò)來(lái)的命令,對命令進(jìn)行解析后,向NiosII發(fā)出確認收到命令信號,并判斷輸入FIFO里有沒(méi)有數據。若有數據,則轉入從輸入FIFO取數據狀態(tài),分組送入密碼運算IP核進(jìn)行處理,待一組處理完后,送數據到輸出FIFO,置讀信號有效,完成一次數據加/解密過(guò)程;若輸入FIFO為空,則等待。當所有數據全部處理完成后,做出完成標志。
2.2.3總線(xiàn)橋的設計
本密碼模塊包括Avalon總線(xiàn)和自行設計的總線(xiàn),兩條總線(xiàn)通過(guò)一個(gè)橋模塊進(jìn)行連接,完成總線(xiàn)與總線(xiàn)的數據通信。外部接口模塊通過(guò)Avalon總線(xiàn)與NiosII進(jìn)行通信,自行設計的總線(xiàn)主要負責密碼專(zhuān)用控制器MCU與密碼運算IP核之間的通信。為使這兩條總線(xiàn)實(shí)現時(shí)序匹配,能夠較好地數據傳輸,設計了總線(xiàn)橋。
總線(xiàn)橋的總體結構如圖5所示。它包括地址譯碼和外設IP選擇模塊、寫(xiě)數據寄存器模塊、讀數據寄存器模塊和狀態(tài)機模塊。
狀態(tài)機模塊主要協(xié)調兩側總線(xiàn)的協(xié)議時(shí)序,從而滿(mǎn)足數據的正確傳輸要求;同時(shí),還將根據MCU發(fā)送過(guò)來(lái)的傳輸命令得到外設IP相關(guān)的特征信息,產(chǎn)生用于NiosII的控制信號。地址譯碼和外設IP選擇模塊根據自定義總線(xiàn)發(fā)出的地址信號,譯碼后選擇待操作的外設IP,并獲取該IP的特征信息。
3 固件設計
3.1 固件工作原理
USB密碼模塊初始化完成后,首先需要對用戶(hù)進(jìn)行身份認證。驗證通過(guò),即啟動(dòng)生命期管理模塊,并根據口令的權限級別,實(shí)現對密碼模塊系統的安全訪(fǎng)問(wèn)。再繼續接收主機命令,并進(jìn)行相關(guān)操作。
若口令驗證不正確,則啟動(dòng)口令計數器計數,繼續進(jìn)行口令驗證。當計數達到預定值時(shí),則鎖定安全專(zhuān)用模塊并清空其所有數據,使用戶(hù)不能進(jìn)行任何操作。等待管理員重新進(jìn)行復位設備操作,銷(xiāo)毀密鑰與數據。
數據的加密存儲以頁(yè)為單位進(jìn)行,調用AES分組加密算法加密。由128位的模塊保護密鑰對每頁(yè)(2 KB)64個(gè)分組的存儲數據采用密碼反饋鏈接(CBC)模式進(jìn)行加密。
3.2 固件工作流程
圖6描述了基于SOPC的USB密碼模塊的基本工作流程。系統啟動(dòng)后首先進(jìn)行系統自檢,若自檢不正常就退出模塊;若自檢正常,則調用總控程序,接收用戶(hù)命令并進(jìn)行口令認證。若認證成功,則命令有效,啟動(dòng)安全期管理,繼續分析命令,完成相應的控制操作(如口令設置、密鑰配置、頁(yè)讀或頁(yè)寫(xiě)、數據銷(xiāo)毀),然后繼續等待接收用戶(hù)的命令。若認證不成功,則進(jìn)入審計過(guò)程,開(kāi)啟計數器功能,并繼續進(jìn)行口令認證;當計數達到預定值時(shí),將安全Flash中存儲的數據和密鑰銷(xiāo)毀,并鎖定密碼模塊,使非法用戶(hù)無(wú)法使用。只有管理員可以對模塊進(jìn)行重新配置。
4 驗證與測試
4.1 橋的基本讀操作仿真時(shí)序
從圖7中可以看出,Avalon總線(xiàn)一側信號在ready信號有效時(shí),S_bus總線(xiàn)已經(jīng)將運算IP核處理好的數據寫(xiě)入到橋接器。這時(shí),橋的狀態(tài)檢測模塊進(jìn)入初始狀態(tài)S0,根據Avalon總線(xiàn)一端輸入的外設地址及外設接口信號,解析出需要具體寫(xiě)入的外設接口模塊。待數據發(fā)送到總線(xiàn)后,然后置讀有效,表示NiosII可以將數據寫(xiě)入外設接口模塊了,至此完成了一次數據的傳輸。
4.2橋的基本寫(xiě)操作仿真時(shí)序
從圖8中可以看出,S_bus一側在wr_vail信號有效時(shí),Avalon總線(xiàn)已經(jīng)將外設接口核的數據寫(xiě)入到橋接器中。這時(shí),狀態(tài)機從MCU中解析出需要傳輸到的目的IP核的地址,將數據送到S_bus總線(xiàn),由S_bus總線(xiàn)寫(xiě)入到運算IP核中。
4.3數據加解密模塊驗證
在USB密碼模塊加電后,密碼模塊首先完成自檢、配置寄存器等一系列操作。然后,便可以向數據密碼模塊內送入數據,按用戶(hù)要求進(jìn)行操作;此時(shí)開(kāi)始計時(shí),先后寫(xiě)入需要加密或解密的數據,以及加密、解密命令。以上操作完成后,開(kāi)始寫(xiě)入數據。算法IP完成運算后,便可讀出密/明文。如此循環(huán),直至整個(gè)過(guò)程結束,停止計時(shí)。
輸入明文向量:
00112233445566778899AABBCCDDEEFF
輸入初始密鑰:
000102030405060708090A0B0C0D0E0F
輸出密文結果:
69C4E0D86A780430D8CDB7807084C55A
AES模塊仿真結果與加密功能測試結果如圖9和圖10所示。
將得到的運算結果與AES仿真結果相比,以驗證整個(gè)加密過(guò)程的正確性。結果表明,整個(gè)數據加密功能正確實(shí)現。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論