新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于SOPC的USB密碼模塊硬件與固件設(shè)計(jì)

基于SOPC的USB密碼模塊硬件與固件設(shè)計(jì)

作者: 劉建國(guó) 武清芳 易青松 時(shí)間:2008-05-26 來(lái)源:《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》 收藏

  引 言

本文引用地址:http://2s4d.com/article/83043.htm

  是指被容納在加密邊界范圍中,執(zhí)行認(rèn)可安全功能(包括加密算法與密鑰產(chǎn)生)的硬件、軟件和的組合。集加密存儲(chǔ)、安全認(rèn)證等功能于一體的,可作為安全鑰載體、加密卡、USB大容量加密存儲(chǔ)體應(yīng)用于保護(hù)信息系統(tǒng)和秘密信息的主要工具,具有十分良好的市場(chǎng)應(yīng)用背景。

  (System On a Programmable Chip)技術(shù)是一種靈活、高效的軟硬件綜合解決方案。硬件上可裁剪、可擴(kuò)充、可升級(jí),有豐富的IP核可供集成,使得設(shè)計(jì)變得十分靈活。

  本文提出了基于的USB設(shè)計(jì)思想,其目標(biāo)是設(shè)計(jì)一款集加密存儲(chǔ)、安全認(rèn)證等功能于一體的基于的USB密碼模塊應(yīng)用系統(tǒng)。

  1 基于SOPC的USB密碼模塊總體設(shè)計(jì)

  1.1 設(shè)計(jì)思想

  本設(shè)計(jì)是基于模塊的設(shè)計(jì)思想,充分利用SOPC現(xiàn)有資源開(kāi)發(fā)特殊功能的應(yīng)用子系統(tǒng)。用USB2.0接口控制芯片、有豐富可編程資源的FPGA芯片、安全存儲(chǔ)專(zhuān)用芯片以及大容量Flash構(gòu)成密碼模塊硬件基礎(chǔ)。以FPGA為控制中心,實(shí)現(xiàn)FPGA對(duì)相連部件的操作。

  1.2功能模塊及組成

  整個(gè)模塊系統(tǒng)包括硬件層、層、驅(qū)動(dòng)層、應(yīng)用層4部分。硬件層包括及其周邊環(huán)境、高性能密碼處理單元、內(nèi)部安全控制引擎、應(yīng)用平臺(tái)通信接口等模塊;層包括協(xié)議棧、軟件等;驅(qū)動(dòng)層包括器件驅(qū)動(dòng)程序;應(yīng)用層包括基于操作系統(tǒng)的各類(lèi)應(yīng)用軟件API。其總體架構(gòu)如圖1所示。

        

  1.3 安全策略

  本系統(tǒng)中安全策略包括模塊安全管理和數(shù)據(jù)安全管理。具體內(nèi)容包括基于口令的認(rèn)證、口令設(shè)置修改、模塊有效期管理、安全參數(shù)保護(hù)管理、數(shù)據(jù)有效期管理、數(shù)據(jù)加密和數(shù)據(jù)銷(xiāo)毀等。

  口令認(rèn)證:通過(guò)硬件實(shí)現(xiàn)用戶(hù)對(duì)模塊訪(fǎng)問(wèn)操作的口令認(rèn)證。

  口令設(shè)置修改:系統(tǒng)設(shè)計(jì)有多種級(jí)別的口令權(quán)限,負(fù)責(zé)不同的操作。

  模塊有效期管理:若判斷到達(dá)或超過(guò)使用期限,則自動(dòng)銷(xiāo)毀存儲(chǔ)數(shù)據(jù)和安全參數(shù),并鎖定密碼模塊。

  數(shù)據(jù)有效期管理:當(dāng)達(dá)到數(shù)據(jù)使用期限時(shí),可自動(dòng)銷(xiāo)毀存儲(chǔ)在大容量Flash里的數(shù)據(jù)。

  數(shù)據(jù)銷(xiāo)毀:分為自動(dòng)銷(xiāo)毀和主動(dòng)銷(xiāo)毀。當(dāng)非法使用、口令攻擊和數(shù)據(jù)有效期失效時(shí),自動(dòng)銷(xiāo)毀用戶(hù)存儲(chǔ)在大容量Flash中的數(shù)據(jù)。

  數(shù)據(jù)加密:使用分組算法,通過(guò)密碼模塊密鑰對(duì)用戶(hù)存儲(chǔ)在大容量Flash中的數(shù)據(jù)寫(xiě)人加密;讀出時(shí)解密,以保證存儲(chǔ)在其內(nèi)的始終是密文。

  2 硬件設(shè)計(jì)

  2.1硬件架構(gòu)模型

  本文在研究了應(yīng)用需求的基礎(chǔ)上,提出了圖2所示的硬件架構(gòu)模型。

       

  它主要包括如下5部分:

 ?、?a class="contentlabel" href="http://2s4d.com/news/listbylabel/label/嵌入式">嵌入式:主要負(fù)責(zé)模塊的整體協(xié)調(diào)以及與外部通信接口的處理,實(shí)現(xiàn)系統(tǒng)控制、安全協(xié)議等功能。

 ?、趦?nèi)部安全控制引擎:為了減少中心控制模塊的工作,加快密碼運(yùn)算處理速度,專(zhuān)門(mén)設(shè)計(jì)一個(gè)專(zhuān)用的微來(lái)進(jìn)行調(diào)度密碼運(yùn)算處理。

 ?、勖艽a運(yùn)算IP核:面向信息安全領(lǐng)域的安全應(yīng)用,集成對(duì)稱(chēng)、非對(duì)稱(chēng)、雜湊等密碼運(yùn)算單元,通過(guò)內(nèi)部安全控制引擎控制。

 ?、芸偩€(xiàn)橋:為讓外部接口與內(nèi)部運(yùn)算模塊更為高效地通信,通過(guò)總線(xiàn)橋使兩條總線(xiàn)連接起來(lái),較好地實(shí)現(xiàn)時(shí)序匹配和數(shù)據(jù)傳輸。

  ⑤數(shù)據(jù)存儲(chǔ)模塊:為了讓密碼運(yùn)算處理模塊與外部接口之間的通信同步,需設(shè)計(jì)一個(gè)數(shù)據(jù)存儲(chǔ)模塊來(lái)存儲(chǔ)外部來(lái)的數(shù)據(jù)以及加密后來(lái)不及輸出的數(shù)據(jù)。

  2.2 內(nèi)部硬件電路關(guān)鍵部件設(shè)計(jì)

  2.2.1 內(nèi)部安全控制引擎的設(shè)計(jì)

  根據(jù)密碼處理的特殊性,一方面要實(shí)現(xiàn)兩個(gè)設(shè)備之間的數(shù)據(jù)直接交換;另一方面要及時(shí)對(duì)運(yùn)算完成標(biāo)志作出快速響應(yīng),以減少不必要的時(shí)間延遲。因此,除具備通用微控制器的數(shù)據(jù)傳輸指令之外,還要增加如下2類(lèi)指令:

 ?、僦苯訑?shù)據(jù)傳輸指令:實(shí)現(xiàn)外部存儲(chǔ)器與密碼模塊之問(wèn)的直接數(shù)據(jù)傳輸。不同于通用微處理器的DMA功能,它通過(guò)專(zhuān)用指令實(shí)現(xiàn)兩個(gè)外部緩沖區(qū)之間的數(shù)據(jù)交換。

 ?、谳斎肱袛喾种е噶睿喊次粚?duì)外部輸入信號(hào)進(jìn)行判斷,無(wú)須微處理器執(zhí)行算術(shù)運(yùn)算或邏輯運(yùn)算,即可直接判斷外部引腳電平,決定程序分支。

  MCU設(shè)計(jì):

  ◆采用哈佛結(jié)構(gòu)模型來(lái)實(shí)現(xiàn);

  ◆MCU為了與嵌入式控制器更好地協(xié)調(diào)工作,采用32位寬指令;

  ◆可以同時(shí)讀取指令和數(shù)據(jù),使流水設(shè)計(jì)變得簡(jiǎn)單易行;

  ◆指令和數(shù)據(jù)都存放在內(nèi)嵌的存儲(chǔ)器中,使控制器、運(yùn)算器和程序存儲(chǔ)器的處理效率較高;

  ◆主要進(jìn)行數(shù)據(jù)傳輸指令和跳轉(zhuǎn)指令設(shè)計(jì)。

  微控制器主要由取指電路、譯碼電路、執(zhí)行部件3部分組成,實(shí)現(xiàn)各項(xiàng)功能。其電路整體框架如圖3所示。

       

  2.2.2嵌入式控制器與內(nèi)部安全控制引擎

  MOU的協(xié)調(diào)控制設(shè)計(jì)

  由于本密碼模塊系統(tǒng)較為復(fù)雜,內(nèi)嵌的需要完成數(shù)據(jù)的傳輸、控制、通信、調(diào)度等任務(wù)。若采用傳統(tǒng)的單CPU結(jié)構(gòu)進(jìn)行控制,因受到CPU速度和自身資源的影響,系統(tǒng)很可能出現(xiàn)任務(wù)過(guò)于繁重的情況。一旦出現(xiàn)故障,系統(tǒng)將不能正常工作。因此,在本設(shè)計(jì)中采用雙CPU設(shè)計(jì)方案。其相互的協(xié)調(diào)控制模型如圖4所示。

       

  對(duì)于NiosII而言:

  外部如有數(shù)據(jù)要進(jìn)行加/解密處理,NiosII首先寫(xiě)命令到MCU命令接收寄存器,待MCU明確表示接收到命令后,返回一個(gè)確認(rèn)信號(hào)給:NiosII;NiosII接收到確認(rèn)信號(hào)后,則轉(zhuǎn)入到寫(xiě)數(shù)據(jù)狀態(tài)。在寫(xiě)數(shù)據(jù)狀態(tài),NiosII把數(shù)據(jù)按一定長(zhǎng)度分組進(jìn)行填充,輸入到橋接器的輸入FIFO。待數(shù)據(jù)輸入完后,發(fā)出輸入FIFO有效信號(hào)到MCU,轉(zhuǎn)入判斷IP運(yùn)算核是否有效;若未完成,則繼續(xù)在該狀態(tài)進(jìn)行等待。當(dāng)IP運(yùn)算完后,MCU置讀FIFO信號(hào)有效,NiosII判斷這個(gè)信號(hào)有效后直接從橋接器的輸出FIFO,把數(shù)據(jù)從輸出FIFO送到外部接口部件,完成一次數(shù)據(jù)加/解密過(guò)程;否則,繼續(xù)等待,超出規(guī)定時(shí)限后,發(fā)出錯(cuò)誤警告。

  對(duì)于MCU而言:

  MCU接收到NiosII過(guò)來(lái)的命令,對(duì)命令進(jìn)行解析后,向NiosII發(fā)出確認(rèn)收到命令信號(hào),并判斷輸入FIFO里有沒(méi)有數(shù)據(jù)。若有數(shù)據(jù),則轉(zhuǎn)入從輸入FIFO取數(shù)據(jù)狀態(tài),分組送入密碼運(yùn)算IP核進(jìn)行處理,待一組處理完后,送數(shù)據(jù)到輸出FIFO,置讀信號(hào)有效,完成一次數(shù)據(jù)加/解密過(guò)程;若輸入FIFO為空,則等待。當(dāng)所有數(shù)據(jù)全部處理完成后,做出完成標(biāo)志。

  2.2.3總線(xiàn)橋的設(shè)計(jì)

  本密碼模塊包括Avalon總線(xiàn)和自行設(shè)計(jì)的總線(xiàn),兩條總線(xiàn)通過(guò)一個(gè)橋模塊進(jìn)行連接,完成總線(xiàn)與總線(xiàn)的數(shù)據(jù)通信。外部接口模塊通過(guò)Avalon總線(xiàn)與NiosII進(jìn)行通信,自行設(shè)計(jì)的總線(xiàn)主要負(fù)責(zé)密碼專(zhuān)用控制器MCU與密碼運(yùn)算IP核之間的通信。為使這兩條總線(xiàn)實(shí)現(xiàn)時(shí)序匹配,能夠較好地?cái)?shù)據(jù)傳輸,設(shè)計(jì)了總線(xiàn)橋。

  總線(xiàn)橋的總體結(jié)構(gòu)如圖5所示。它包括地址譯碼和外設(shè)IP選擇模塊、寫(xiě)數(shù)據(jù)寄存器模塊、讀數(shù)據(jù)寄存器模塊和狀態(tài)機(jī)模塊。

       

  狀態(tài)機(jī)模塊主要協(xié)調(diào)兩側(cè)總線(xiàn)的協(xié)議時(shí)序,從而滿(mǎn)足數(shù)據(jù)的正確傳輸要求;同時(shí),還將根據(jù)MCU發(fā)送過(guò)來(lái)的傳輸命令得到外設(shè)IP相關(guān)的特征信息,產(chǎn)生用于NiosII的控制信號(hào)。地址譯碼和外設(shè)IP選擇模塊根據(jù)自定義總線(xiàn)發(fā)出的地址信號(hào),譯碼后選擇待操作的外設(shè)IP,并獲取該IP的特征信息。

  3 固件設(shè)計(jì)

  3.1 固件工作原理

  USB密碼模塊初始化完成后,首先需要對(duì)用戶(hù)進(jìn)行身份認(rèn)證。驗(yàn)證通過(guò),即啟動(dòng)生命期管理模塊,并根據(jù)口令的權(quán)限級(jí)別,實(shí)現(xiàn)對(duì)密碼模塊系統(tǒng)的安全訪(fǎng)問(wèn)。再繼續(xù)接收主機(jī)命令,并進(jìn)行相關(guān)操作。

  若口令驗(yàn)證不正確,則啟動(dòng)口令計(jì)數(shù)器計(jì)數(shù),繼續(xù)進(jìn)行口令驗(yàn)證。當(dāng)計(jì)數(shù)達(dá)到預(yù)定值時(shí),則鎖定安全專(zhuān)用模塊并清空其所有數(shù)據(jù),使用戶(hù)不能進(jìn)行任何操作。等待管理員重新進(jìn)行復(fù)位設(shè)備操作,銷(xiāo)毀密鑰與數(shù)據(jù)。

  數(shù)據(jù)的加密存儲(chǔ)以頁(yè)為單位進(jìn)行,調(diào)用AES分組加密算法加密。由128位的模塊保護(hù)密鑰對(duì)每頁(yè)(2 KB)64個(gè)分組的存儲(chǔ)數(shù)據(jù)采用密碼反饋鏈接(CBC)模式進(jìn)行加密。

  3.2 固件工作流程

  圖6描述了基于SOPC的USB密碼模塊的基本工作流程。系統(tǒng)啟動(dòng)后首先進(jìn)行系統(tǒng)自檢,若自檢不正常就退出模塊;若自檢正常,則調(diào)用總控程序,接收用戶(hù)命令并進(jìn)行口令認(rèn)證。若認(rèn)證成功,則命令有效,啟動(dòng)安全期管理,繼續(xù)分析命令,完成相應(yīng)的控制操作(如口令設(shè)置、密鑰配置、頁(yè)讀或頁(yè)寫(xiě)、數(shù)據(jù)銷(xiāo)毀),然后繼續(xù)等待接收用戶(hù)的命令。若認(rèn)證不成功,則進(jìn)入審計(jì)過(guò)程,開(kāi)啟計(jì)數(shù)器功能,并繼續(xù)進(jìn)行口令認(rèn)證;當(dāng)計(jì)數(shù)達(dá)到預(yù)定值時(shí),將安全Flash中存儲(chǔ)的數(shù)據(jù)和密鑰銷(xiāo)毀,并鎖定密碼模塊,使非法用戶(hù)無(wú)法使用。只有管理員可以對(duì)模塊進(jìn)行重新配置。

       

  4 驗(yàn)證與測(cè)試

  4.1 橋的基本讀操作仿真時(shí)序

  從圖7中可以看出,Avalon總線(xiàn)一側(cè)信號(hào)在ready信號(hào)有效時(shí),S_bus總線(xiàn)已經(jīng)將運(yùn)算IP核處理好的數(shù)據(jù)寫(xiě)入到橋接器。這時(shí),橋的狀態(tài)檢測(cè)模塊進(jìn)入初始狀態(tài)S0,根據(jù)Avalon總線(xiàn)一端輸入的外設(shè)地址及外設(shè)接口信號(hào),解析出需要具體寫(xiě)入的外設(shè)接口模塊。待數(shù)據(jù)發(fā)送到總線(xiàn)后,然后置讀有效,表示NiosII可以將數(shù)據(jù)寫(xiě)入外設(shè)接口模塊了,至此完成了一次數(shù)據(jù)的傳輸。

       

  4.2橋的基本寫(xiě)操作仿真時(shí)序

  從圖8中可以看出,S_bus一側(cè)在wr_vail信號(hào)有效時(shí),Avalon總線(xiàn)已經(jīng)將外設(shè)接口核的數(shù)據(jù)寫(xiě)入到橋接器中。這時(shí),狀態(tài)機(jī)從MCU中解析出需要傳輸?shù)降哪康腎P核的地址,將數(shù)據(jù)送到S_bus總線(xiàn),由S_bus總線(xiàn)寫(xiě)入到運(yùn)算IP核中。

       

  4.3數(shù)據(jù)加解密模塊驗(yàn)證

  在USB密碼模塊加電后,密碼模塊首先完成自檢、配置寄存器等一系列操作。然后,便可以向數(shù)據(jù)密碼模塊內(nèi)送入數(shù)據(jù),按用戶(hù)要求進(jìn)行操作;此時(shí)開(kāi)始計(jì)時(shí),先后寫(xiě)入需要加密或解密的數(shù)據(jù),以及加密、解密命令。以上操作完成后,開(kāi)始寫(xiě)入數(shù)據(jù)。算法IP完成運(yùn)算后,便可讀出密/明文。如此循環(huán),直至整個(gè)過(guò)程結(jié)束,停止計(jì)時(shí)。

  輸入明文向量:

  00112233445566778899AABBCCDDEEFF

  輸入初始密鑰:

  000102030405060708090A0B0C0D0E0F

  輸出密文結(jié)果:

  69C4E0D86A780430D8CDB7807084C55A

  AES模塊仿真結(jié)果與加密功能測(cè)試結(jié)果如圖9和圖10所示。

       

  將得到的運(yùn)算結(jié)果與AES仿真結(jié)果相比,以驗(yàn)證整個(gè)加密過(guò)程的正確性。結(jié)果表明,整個(gè)數(shù)據(jù)加密功能正確實(shí)現(xiàn)。

linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉