徐 淵 趙光東 易子林 張建國(guó) 謝 剛
(1.深圳大學(xué)信息工程學(xué)院 深圳 518060)(2.深圳市振華微電子有限公司 深圳 518000)
不安全的信息是危險(xiǎn)的。21世紀(jì)是信息的社會(huì),保護(hù)好內(nèi)部敏感信息才能避免個(gè)人、公司、企事業(yè)單位、政府部門(mén)以及軍隊(duì)遭受重大損失,不失去競(jìng)爭(zhēng)優(yōu)勢(shì)。因此,信源保密方向的課題具備了廣泛的應(yīng)用領(lǐng)域和市場(chǎng)適應(yīng)性。目前,防病毒、防火墻等產(chǎn)品確實(shí)占據(jù)了中國(guó)本地信息安全市場(chǎng)90%的份額,但這些產(chǎn)品都有一個(gè)共同的缺點(diǎn):防外不防內(nèi)。內(nèi)部信息如何進(jìn)行保密,也即信源的保密,已經(jīng)成為信息安全管理的難題。文獻(xiàn)[1~2]提出完善管理和相關(guān)的政策來(lái)提高信息的安全性,文獻(xiàn)[3]中提到不能忽略人為因素在信息安全中的影響,雖然威脅信息安全的方式多種多樣,但是文獻(xiàn)[4]中指出攻擊類型仍然是極其相似的。為了確保信息的安全,文獻(xiàn)[5]直接把加密模塊嵌入到存儲(chǔ)器中,這種方式占用太多的邏輯資源,而且存儲(chǔ)效率太低。
信息安全保密需求也是多樣化的,很多單位處于這樣一種管理模式:使用計(jì)算機(jī)的人不管理計(jì)算機(jī),管理計(jì)算機(jī)的人不使用計(jì)算機(jī),希望達(dá)到管用分離的效果,并且要使用方便,這類產(chǎn)品也是市場(chǎng)上所缺失的。為了能滿足這樣的一種信息安全管理需求,本文提出了一種基于FPGA的管用分離的實(shí)時(shí)性在線硬盤(pán)加密系統(tǒng)(以下簡(jiǎn)稱加密系統(tǒng)),系統(tǒng)由整機(jī)加密卡和電子鑰匙兩個(gè)子系統(tǒng)組成。受益于FPGA的高性能數(shù)據(jù)加解密處理,以及硬件系統(tǒng)本身難于破解的特征,整機(jī)加密卡能夠快速地對(duì)寫(xiě)入硬盤(pán)的信息進(jìn)行全硬件的加密保護(hù),用戶在使用過(guò)程中必須要插入和整機(jī)加密卡相配套的電子鑰匙,才允許訪問(wèn)硬盤(pán)內(nèi)的信息,否則系統(tǒng)將不能工作。該系統(tǒng)已經(jīng)獲得中國(guó)國(guó)家密碼管理局授予的商用密碼產(chǎn)品型號(hào)證書(shū),證書(shū)編號(hào):SXH2016085。
在現(xiàn)有的電腦架構(gòu)中,硬盤(pán)是本地計(jì)算機(jī)信息存儲(chǔ)的介質(zhì),硬盤(pán)數(shù)據(jù)的保護(hù)是關(guān)系到內(nèi)部信息安全的核心問(wèn)題[6]。本地信息軟件安全管理工具所有運(yùn)算都是基于算法密鑰的[7],密鑰的保護(hù)是關(guān)系到加密設(shè)備核心的問(wèn)題,有非法使用者會(huì)專門(mén)針對(duì)密鑰實(shí)施監(jiān)控、跟蹤、攔截破解、硬件克隆等暴力手段,這些非法攻擊會(huì)造成密鑰泄露。本文在設(shè)計(jì)加密系統(tǒng)時(shí)主要從以下三個(gè)問(wèn)題進(jìn)行考慮:
問(wèn)題1:如何確保正確的啟動(dòng)系統(tǒng)。對(duì)使用者,采用物理的key進(jìn)行授權(quán),沒(méi)有key不能開(kāi)機(jī)。
問(wèn)題2:使用中,確保key被拔走之后,計(jì)算機(jī)立刻不能工作。
問(wèn)題3:關(guān)機(jī)后,保護(hù)計(jì)算機(jī)信息,確保計(jì)算機(jī)拆機(jī)后硬盤(pán)中所有數(shù)據(jù)以密文形式存在,保證信息安全,即使將硬盤(pán)掛到其他計(jì)算機(jī)下也不能被讀取。所以本文采用了FPGA在線硬盤(pán)加密系統(tǒng),加密處理示意圖如圖1右所示。
圖1 硬盤(pán)數(shù)據(jù)加密示意圖
該模型中包含有整機(jī)加密卡和電子鑰匙,加密系統(tǒng)實(shí)現(xiàn)對(duì)PCI-E總線上傳輸?shù)臄?shù)據(jù)進(jìn)行加密或解密操作,保證硬盤(pán)中的信息包括操作系統(tǒng)以密文的形式存在,并且只有在電子鑰匙和整機(jī)加密卡相配合的時(shí)候該加密系統(tǒng)才能正常工作,功能圖如圖2所示。該加密系統(tǒng)具有安全性高、處理速度快和管理方便等多種優(yōu)點(diǎn),在軍事單位、科研機(jī)構(gòu)、金融銀行系統(tǒng)等都有很好的應(yīng)用前景。
圖2 加密系統(tǒng)的功能原理圖
系統(tǒng)啟動(dòng)首先是整機(jī)加密卡與電子鑰匙完成身份認(rèn)證,身份認(rèn)證在系統(tǒng)的工作過(guò)程中不斷進(jìn)行,每完成一次認(rèn)證,即開(kāi)始新一輪的認(rèn)證。
如圖3認(rèn)證開(kāi)始時(shí),加密芯片A1生成的隨機(jī)數(shù)A使用隨機(jī)數(shù)密鑰B公鑰(隨機(jī)數(shù)密鑰B:出廠前,由電子鑰匙的加密芯片B的加密算法模塊生成,私鑰存儲(chǔ)在電子鑰匙的加密芯片B,公鑰存儲(chǔ)到整機(jī)加密卡的加密芯片A1)加密后,以密文的形式發(fā)送到電子鑰匙,并在電子鑰匙的加密芯片B使用隨機(jī)數(shù)密鑰B私鑰恢復(fù)出隨機(jī)數(shù)A的明文。
加密芯片B生成隨機(jī)數(shù)B,附加在隨機(jī)數(shù)A的明文后面組成(隨機(jī)數(shù)A+隨機(jī)數(shù)B),(隨機(jī)數(shù)A+隨機(jī)數(shù)B)使用隨機(jī)數(shù)密鑰A公鑰(隨機(jī)數(shù)密鑰A:出廠前,將私鑰存儲(chǔ)在電子鑰匙的加密芯片A1,公鑰存儲(chǔ)到整機(jī)加密卡的加密芯片B內(nèi))加密后,以密文形式發(fā)送到整機(jī)加密卡,整機(jī)加密卡的加密芯片A使用隨機(jī)數(shù)密鑰A私鑰恢復(fù)出(隨機(jī)數(shù)A+隨機(jī)數(shù)B),整機(jī)加密卡恢復(fù)出的隨機(jī)數(shù)A明文對(duì)比自身生成隨機(jī)數(shù)A是否一致。
圖3 系統(tǒng)邏輯框圖
對(duì)比一致后,(隨機(jī)數(shù)A+隨機(jī)數(shù)B)使用隨機(jī)數(shù)密鑰B公鑰加密后,以密文形式發(fā)送到電子鑰匙上,電子鑰匙使用隨機(jī)數(shù)密鑰B私鑰恢復(fù)出(隨機(jī)數(shù)A+隨機(jī)數(shù)B),電子鑰匙恢復(fù)出的隨機(jī)數(shù)B明文對(duì)比自身生成的隨機(jī)數(shù)B是否一致,一致則認(rèn)證通過(guò)。身份認(rèn)證通過(guò)后,在電子鑰匙的用戶密鑰才會(huì)進(jìn)行加密傳輸及拼湊。
處理進(jìn)出硬盤(pán)數(shù)據(jù)的密鑰稱為用戶密鑰,同一套系統(tǒng)中的用戶密鑰有M組,系統(tǒng)工作時(shí)只選用其中的N組(N的大小取決于硬盤(pán)空間大?。阂?0G的硬盤(pán)存儲(chǔ)容量為一個(gè)區(qū)間大小劃分整個(gè)硬盤(pán),分成N個(gè)區(qū)間,每一區(qū)間使用不同的密鑰(共N組),加密模塊根據(jù)物理地址(扇區(qū)地址)落在的區(qū)間而選擇啟用對(duì)應(yīng)的密鑰處理數(shù)據(jù)。每套系統(tǒng)在出廠時(shí)由廠家的密鑰管理系統(tǒng)生成M組Pbit的密鑰組成一個(gè)密鑰列表,為了解決重放攻擊問(wèn)題,密鑰管理系統(tǒng)加密M組用戶密鑰后,將密文拆分成5部分并分發(fā)到電子鑰匙FPGA FLASH、電子鑰匙加密芯片B內(nèi)部FLASH、整機(jī)加密卡FPGA FLASH、加密芯片A1,A2內(nèi)部flash上存儲(chǔ)。
整機(jī)加密卡與電子鑰匙認(rèn)證通過(guò)后,加密芯片A1接收其余4部分的用戶密鑰(列表)密文并合并成完整的用戶密鑰列表(Pbit×M)密文后。使用用戶密鑰(列表)分發(fā)密鑰恢復(fù)出用戶密鑰(列表)明文,然后使用A1存儲(chǔ)的用戶密鑰(列表)傳輸密鑰,加密用戶密鑰(列表)的明文,用戶密鑰(列表)以密文方式傳輸給FPGA。FPGA從各個(gè)芯片接收用戶密鑰(列表)傳輸密鑰分量并拼湊出完整的用戶密鑰(列表)傳輸密鑰,恢復(fù)出從加密芯片A1傳輸過(guò)來(lái)的用戶密鑰(列表)明文。明文加密獲取指針T作為一個(gè)索引,從M組密鑰列表中獲取得到N組用戶密鑰,供加密模塊處理硬盤(pán)數(shù)據(jù):加密模塊根據(jù)硬盤(pán)的物理地址所落在區(qū)間而選擇對(duì)應(yīng)的用戶密鑰處理數(shù)據(jù)(用戶密鑰列表的加密傳輸、拼湊,每次上電只進(jìn)行一次,發(fā)生在整機(jī)加密卡與電子鑰匙第一次身份認(rèn)證通過(guò)后)。
在整機(jī)加密卡及電子鑰匙的FPGA內(nèi)各自完成;產(chǎn)品在出廠前會(huì)將自身的DNA寫(xiě)在FPGA程序上并存儲(chǔ)在SPI Flash。產(chǎn)品上電時(shí),DNA是FPGA內(nèi)上電后從自身內(nèi)部電路獲取的一個(gè)ID。在FP?GA開(kāi)發(fā)過(guò)程中將當(dāng)前FPGA的DNA嵌入到FPGA的代碼中,作為硬件代碼的一部分(一個(gè)常量);FP?GA每次上電后都從DNA模塊讀取當(dāng)前FPGA的DNA,與硬件中的DNA常量進(jìn)行對(duì)比,即可判斷當(dāng)前的FPGA固件是否是針對(duì)當(dāng)前這片F(xiàn)PGA的,即每套產(chǎn)品的FPGA固件都是不一樣的,只針對(duì)當(dāng)前FPGA。這是FPGA內(nèi)自身固件防拷貝檢測(cè)。
在本加密系統(tǒng)中利用加密芯片的安全性以及FPGA的DNA、eFuse[8]技術(shù)設(shè)計(jì)了固件不可復(fù)制功能。其中加密芯片A1的功能是生成隨機(jī)數(shù)握手認(rèn)證、儲(chǔ)存、恢復(fù)密鑰和作為隨機(jī)數(shù)源,加密芯片A2功能是儲(chǔ)存密鑰,加密芯片B功能主要是實(shí)現(xiàn)加密密碼算法,進(jìn)行身份認(rèn)證,以及儲(chǔ)存部分用戶密鑰。
本加密系統(tǒng)是在硬盤(pán)和電腦主板通信的過(guò)程中嵌入加解密處理器,該加解密處理器由整機(jī)加密卡和電子鑰匙組成,系統(tǒng)的框架圖如圖3所示。
整機(jī)加密卡的設(shè)計(jì)包括AES加密模塊的設(shè)計(jì)、SATA HOST及PCIE×1控制器的設(shè)計(jì)、PCIE與SA?TA的協(xié)議轉(zhuǎn)換模塊設(shè)計(jì)、分扇區(qū)加解密體系的設(shè)計(jì)、整機(jī)加密卡與電子鑰匙之間的身份認(rèn)證設(shè)計(jì)和固件防拷貝設(shè)計(jì)。
由于SATA和PCIE都是高速需要高速串行的物理接口,選用Xilinx的Spartan6 XC6SLX150T-3FGG484芯片;該芯片具有高速的串口接收和發(fā)送器GTP,可以為該設(shè)計(jì)提供單片化低成本解決方案。
整機(jī)加密卡上的FPGA設(shè)計(jì)資源使用情況如表1所示,在消耗下述資源的情況下,F(xiàn)PGA芯片內(nèi)的設(shè)計(jì)的主頻可達(dá)到124MHz。
表1 整機(jī)加密卡上FPGA芯片內(nèi)設(shè)計(jì)消耗的資源
3.1.1 AES加解密模塊設(shè)計(jì)
當(dāng)數(shù)據(jù)在計(jì)算機(jī)其他部分和硬盤(pán)之間交互時(shí),采用 AES[5,9~10]算法對(duì)數(shù)據(jù)進(jìn)加解密處理,為了保證整機(jī)加密的吞吐量能滿足要求,AES算法被設(shè)計(jì)成多核并行流水線模式。AES對(duì)SATA主設(shè)備寫(xiě)入SATA從設(shè)備的數(shù)據(jù)進(jìn)行加密操作和對(duì)SATA主設(shè)備讀取SATA從設(shè)備的數(shù)據(jù)進(jìn)行解密操作。加解密處理器的結(jié)構(gòu)包含了4個(gè)基于AES算法的硬核,并基于4個(gè)硬核實(shí)現(xiàn)了對(duì)數(shù)據(jù)進(jìn)行流水線處理,提高了整機(jī)加密速率。AES流水線結(jié)構(gòu)實(shí)例化了4個(gè)AES算法核,如圖4所示,在當(dāng)前時(shí)刻,輸入Pbit的數(shù)據(jù)給核1(AES),核2及核3正在整機(jī)加密中,核4正在輸出處理完畢的數(shù)據(jù)。當(dāng)核1輸入完畢數(shù)據(jù)后,即達(dá)到核2的位置進(jìn)行整機(jī)加密,原來(lái)核2的位置就會(huì)達(dá)到核3的位置仍然進(jìn)行整機(jī)加密,而核3達(dá)到核4的位置輸出處理完畢的數(shù)據(jù),原來(lái)核4就會(huì)回到核1的位置進(jìn)行數(shù)據(jù)輸入,以上4個(gè)核的位置變化是同步的,可以做到連續(xù)地輸入數(shù)據(jù)、輸出數(shù)據(jù),從而達(dá)到流水的效果。
圖4 AES流水線結(jié)構(gòu)
把硬盤(pán)數(shù)據(jù)給AES的流水線結(jié)構(gòu)進(jìn)行處理,是兩種類型的狀態(tài)機(jī)聯(lián)動(dòng)的結(jié)果,如圖5所示;左邊的狀態(tài)機(jī)是“整機(jī)加密狀態(tài)機(jī)器”,是主狀態(tài)機(jī),主要功能是獲取命令地址、選擇相應(yīng)的用戶密鑰、判斷數(shù)據(jù)流向即確定加密或解密,以及把數(shù)據(jù)按照一定的規(guī)則傳送給AES進(jìn)行處理;右邊的狀態(tài)機(jī)是AES“流水線結(jié)構(gòu)內(nèi)的狀態(tài)機(jī)”,是從狀態(tài)機(jī),其主要功能是根據(jù)“數(shù)據(jù)處理狀態(tài)機(jī)器”的AES_slect控制信號(hào),選擇把數(shù)據(jù)給到相應(yīng)的AES運(yùn)算核。
圖5 整機(jī)加密主、從狀態(tài)機(jī)
3.1.2 SATA HOST及PCIE×1控制器的設(shè)計(jì)
通常,SATA協(xié)議的整體結(jié)構(gòu)由物理層,鏈路層,傳輸層和應(yīng)用層組成[11~12],在整機(jī)加密系統(tǒng)的整體結(jié)構(gòu)設(shè)計(jì)中對(duì)SATA的四層體系結(jié)構(gòu)進(jìn)行優(yōu)化后,只保留了物理層和鏈路層,沒(méi)實(shí)現(xiàn)傳輸層及應(yīng)用層,這兩個(gè)簡(jiǎn)化的控制器最關(guān)鍵的功能是實(shí)現(xiàn)對(duì)命令、命令反饋的傳遞,SATA命令及命令反饋只需原封不動(dòng)在FPGA內(nèi)的主機(jī)及設(shè)備之間傳輸,數(shù)據(jù)則需要先被加/解密處理在主機(jī)及設(shè)備之間傳輸。SATA信號(hào)經(jīng)過(guò)物理層及鏈路層兩個(gè)協(xié)議層的解便可以被識(shí)別為命令或數(shù)據(jù),所以適配于本加密系統(tǒng)的SATA控制器只需要鏈路層及物理層。這樣設(shè)計(jì)提高FPGA資源的利用率,以及最大限度地增強(qiáng)本加密系統(tǒng)的兼容性,因?yàn)榧嫒菪缘年P(guān)鍵在于對(duì)命令的響應(yīng)上,而此處直接把命令及命令反饋傳遞不作處理。
PCIE×1控制器亦是在FPGA內(nèi)實(shí)現(xiàn)的滿足PCIE協(xié)議的控制器,在本系統(tǒng)中,調(diào)用第三方IP實(shí)現(xiàn)[13]。
3.1.3 PCIE與SATA的協(xié)議轉(zhuǎn)換模塊設(shè)計(jì)
根據(jù)本加密系統(tǒng)的方案,PC讀寫(xiě)硬盤(pán)的命令、數(shù)據(jù),是在PCIE與SATA控制器之間進(jìn)行傳遞的,因此,在FPGA內(nèi)PCIE發(fā)送給 SATA HOST、SATA HOST發(fā)給PCIE的數(shù)據(jù)或命令都需要經(jīng)過(guò)這兩種協(xié)議之間的相互轉(zhuǎn)換。在整機(jī)加密卡的FPGA內(nèi)實(shí)現(xiàn)了PCIE與SATA協(xié)議之間的轉(zhuǎn)換,其狀態(tài)轉(zhuǎn)換圖如圖6所示。
圖6 PCIE與SATA協(xié)議轉(zhuǎn)換模塊的狀態(tài)機(jī)
由于PCIE包含了讀寫(xiě)存儲(chǔ)器、I/O讀寫(xiě)、配置讀寫(xiě)、消息請(qǐng)求等,所以在PCIE協(xié)議轉(zhuǎn)到SATA協(xié)議過(guò)程中按照表2所示進(jìn)行轉(zhuǎn)換。
表2 PCIE與SATA之間的協(xié)議轉(zhuǎn)換
3.1.4 分扇區(qū)加解密體系的設(shè)計(jì)
分扇區(qū)加解密體系的內(nèi)容包括:根據(jù)硬盤(pán)物理地址選擇相應(yīng)的密鑰;用戶密鑰列表的生成、存儲(chǔ)、傳輸及拼湊。詳見(jiàn)2.3節(jié)。
AES算法模塊根據(jù)硬盤(pán)的物理地址落在的范圍從而選擇相對(duì)應(yīng)的密鑰;在本系統(tǒng)中硬盤(pán)的物理地址從0開(kāi)始,每20G使用一個(gè)密鑰,因此系統(tǒng)中的用戶密鑰個(gè)數(shù)跟硬盤(pán)的大小有關(guān)。
用戶密鑰的使用:當(dāng)整機(jī)加密卡FPGA恢復(fù)出從加密芯片A1傳輸過(guò)來(lái)的用戶密鑰(列表)明文時(shí),由指針T從這M組密鑰中提取N組密鑰中的第一組,然后按順序從密鑰列表中獲取剩下的N-1組用戶密鑰,如果到了密鑰列表的結(jié)尾還沒(méi)獲取完畢N組,則循環(huán)到密鑰列表的第1組中獲取;其中指針T是用戶在全盤(pán)格式化時(shí)由隨機(jī)數(shù)模塊提供的隨機(jī)數(shù),指針T將會(huì)作為FPGA的一個(gè)參數(shù)被eFuse加密存儲(chǔ)到SPI flash中,以后每次上電FPGA都會(huì)從SPI flash中獲取T的值,從而可以從密鑰列表(Pbit×M)中找到用戶密鑰的N組用戶密鑰,T值在用戶全盤(pán)格式化時(shí)更新。
3.1.5 整機(jī)加密卡與電子鑰匙之間的身份認(rèn)證設(shè)計(jì)
系統(tǒng)的使用需要整機(jī)加密卡與電子鑰匙通訊[14]完成身份認(rèn)證,其原理詳見(jiàn)2.2節(jié),其設(shè)計(jì)流程如圖7所示。
圖7 身份認(rèn)證設(shè)計(jì)流程
3.1.6 固件防拷貝
每一片F(xiàn)PGA的DNA都是57bit的,兩片F(xiàn)P?GA的DNA拼湊在一起也只有114位,而系統(tǒng)中需要的是Pbit的DNA,因此在本系統(tǒng)中按照這樣的規(guī)則進(jìn)行拼湊:假如整機(jī)加密卡的DNA是K1、K2、…、K57,鑰匙的DNA是 L1、L2、…、L57,那么Pbit的DNA按照如下規(guī)則來(lái)組織:
K1、L1、K2、L2、…、K57、L57、K1、L1、K2、L2、…、K7、L7。
電子鑰匙作為管用分離的計(jì)算機(jī)加密系統(tǒng)的信息準(zhǔn)用憑證,電子鑰匙首先接收整機(jī)加密卡的信息,然后電子鑰匙生成不可復(fù)制的認(rèn)證信息,回傳給整機(jī)加密卡進(jìn)行身份認(rèn)證。在與整機(jī)加密卡完成認(rèn)證后,電子鑰匙對(duì)存儲(chǔ)于電子鑰匙內(nèi)的用戶密鑰列表進(jìn)行加密,密文發(fā)送給整機(jī)加密卡。其功能原理圖如圖3所示,上電后整機(jī)加密卡主動(dòng)將數(shù)據(jù)傳輸至電子鑰匙的USB device并完成數(shù)據(jù)的交互。
電子鑰匙上的FPGA芯片選用的是Xilinx的Spartan6 XC6SLX16-3CSG324,在該芯片上實(shí)現(xiàn)的FPGA設(shè)計(jì),F(xiàn)PGA芯片的內(nèi)部資源使用情況如表3所示,在消耗下述資源的情況下,F(xiàn)PGA芯片內(nèi)的設(shè)計(jì)主頻可達(dá)到140MHz。
表3 電子鑰匙上的FPGA芯片內(nèi)設(shè)計(jì)消耗資源
本加密系統(tǒng)是專門(mén)加密硬盤(pán)的,系統(tǒng)部署在PC主板與硬盤(pán)之間,在完成了整機(jī)加密卡和電子鑰匙的設(shè)計(jì)后,需要對(duì)本加密系統(tǒng)的功能和性能進(jìn)行測(cè)試,本系統(tǒng)的測(cè)試環(huán)境配置如表4所示。
表4 測(cè)試環(huán)境配置
測(cè)試系統(tǒng)是否正常工作,包含了在沒(méi)有電子鑰匙的情況、硬盤(pán)被盜取到其他電腦的情況下加密系統(tǒng)是否能保障硬盤(pán)信息的安全;以及硬盤(pán)作為附盤(pán)放到其他計(jì)算機(jī)的情況下硬盤(pán)中的數(shù)據(jù)安全性。
如圖8(e)為整機(jī)加密系統(tǒng),8(a)為在缺少電子鑰匙時(shí),僅依靠整機(jī)加密卡,無(wú)法訪問(wèn)加密硬盤(pán)的數(shù)據(jù)內(nèi)容,將整機(jī)加密卡插入PC的PCIE插槽中,不插入電子鑰匙,連接好硬盤(pán)和PC主板,開(kāi)機(jī)上電后,發(fā)現(xiàn)PC的BIOS程序沒(méi)有正確找到硬盤(pán),并提示用戶沒(méi)有接入硬盤(pán)。加密系統(tǒng)裝載完成后,插有電子鑰匙的情況下能正常進(jìn)入系統(tǒng)的畫(huà)面,正常進(jìn)入系統(tǒng)后可像往常一樣操作電腦,無(wú)其他區(qū)別。可見(jiàn)本加密系統(tǒng)能正常的工作,如圖8(b)。當(dāng)被加密的硬盤(pán)直接插到電腦主板,開(kāi)機(jī)時(shí)會(huì)顯示找不到操作系統(tǒng),如圖8(c)。圖8(d)如果把被加密的硬盤(pán)作為附盤(pán)連到其他計(jì)算機(jī),那么可以在PC的“磁盤(pán)管理”或“我的電腦”會(huì)顯示這個(gè)被加密的硬盤(pán)是一個(gè)未格式化的盤(pán),需要被格式化才能使用。
圖8 加密系統(tǒng)的功能測(cè)試圖
因此通過(guò)以上的幾種測(cè)試結(jié)果可知本加密系統(tǒng)的功能達(dá)到了預(yù)期:實(shí)現(xiàn)了對(duì)硬盤(pán)的數(shù)據(jù)的加密,并且達(dá)到管用分離的效果。
4.2.1 系統(tǒng)的數(shù)據(jù)吞吐量測(cè)試
系統(tǒng)數(shù)據(jù)吞吐量的是指,加密系統(tǒng)在正常工作時(shí),PC讀寫(xiě)硬盤(pán)的速率。測(cè)試工具為CrystalDisk?Mark,是一個(gè)測(cè)試電腦硬盤(pán)檢測(cè)工具,測(cè)試存儲(chǔ)設(shè)備大小和測(cè)試數(shù)字都可以選擇,還可測(cè)試可讀和可寫(xiě)的速度。測(cè)試結(jié)果如圖9所示,其中左圖為沒(méi)有進(jìn)行加解密時(shí)的速度,右圖為在加密系統(tǒng)中的測(cè)試速度。由圖可看出硬盤(pán)的讀寫(xiě)速率基本沒(méi)有受到加解密處理器的影響。
圖9 硬盤(pán)在加密系統(tǒng)中的測(cè)試
4.2.2 加密算法性能測(cè)試
此處所述加密算法性能是只在FPGA內(nèi)實(shí)現(xiàn)的、能實(shí)際影響到產(chǎn)品的用戶體驗(yàn)的算法性能,即AES算法的性能,此處只驗(yàn)證算法模塊的性能,不包含SATA接口的性能。測(cè)試軟件使用的Xilinx公司的Xilinx Software Development Kit軟件,簡(jiǎn)稱SDK,即軟件開(kāi)發(fā)套件,可以對(duì)在FPGA內(nèi)實(shí)現(xiàn)的SOC系統(tǒng)進(jìn)行編程、下載程序、調(diào)試程序等。測(cè)試平臺(tái)如圖10所示。
圖10 算法測(cè)試框圖
在測(cè)試系統(tǒng)中,把AES算法模塊集成在一個(gè)叫Algorithm_test的IP里,此IP再和Microblaze組成一個(gè)SOC系統(tǒng)。加解密測(cè)試數(shù)據(jù)為240M byte,測(cè)試結(jié)果結(jié)果如表5所示。
表5 加密算法加解密測(cè)試
AES加解密算法,在系統(tǒng)時(shí)鐘為150MHz的情況下,其流水線理論速率為600Mbyte,但此平臺(tái)的數(shù)據(jù)不但需要從DDR讀取出來(lái),也需要把數(shù)據(jù)存進(jìn)DDR,DDR的讀寫(xiě)耗費(fèi)了一些時(shí)間,所以實(shí)測(cè)性能為讀寫(xiě)在560Mbyte左右。
4.2.3 身份認(rèn)證速率測(cè)試
身份認(rèn)證在本加密系統(tǒng)中是很重要的一個(gè)功能,其原理是電子鑰匙以及整機(jī)加密卡都各自生成一個(gè)認(rèn)證信息,且電子鑰匙的認(rèn)證信息會(huì)傳輸?shù)秸麢C(jī)加密卡內(nèi)與卡里的認(rèn)證信息進(jìn)行對(duì)比。身份認(rèn)證一次花費(fèi)時(shí)間應(yīng)當(dāng)是兩次認(rèn)證之間的時(shí)間間隔。測(cè)試工具為Xilinx公司的chipscope,此工具是在線抓取、觀察FPGA內(nèi)部的任何信號(hào),可設(shè)置觸發(fā)條件進(jìn)行抓取。
本測(cè)試的平臺(tái)即是加密系統(tǒng)本身,為了更精確地統(tǒng)計(jì)到兩次身份認(rèn)證之間的時(shí)間間隔,身份認(rèn)證模塊工作在100MHz的時(shí)鐘下,在身份認(rèn)證模塊內(nèi)部嵌入一個(gè)32位寬的計(jì)數(shù)器identify_cnt,identi?fy_cnt的計(jì)數(shù)的開(kāi)始即是一次認(rèn)證信息的完成。在測(cè)試中identify_cnt統(tǒng)計(jì)的設(shè)計(jì)兩次身份認(rèn)證之間的時(shí)鐘周期個(gè)數(shù),因此每次認(rèn)證時(shí)間為:時(shí)鐘周期個(gè)數(shù)×10ns。
為了統(tǒng)計(jì)每次認(rèn)證時(shí)間是否有差距,測(cè)試了50次,平均速率為55.43ms/次,1s的認(rèn)證速率為18.04次。
把被加密系統(tǒng)加密的硬盤(pán),直接連接到第三臺(tái)PC機(jī)主板上,通過(guò)winhex直接看硬盤(pán)的里面的數(shù)據(jù),是無(wú)法看出數(shù)據(jù)是否被加密的,因?yàn)闊o(wú)法檢測(cè)PC的操作系統(tǒng)到底寫(xiě)了一些什么或數(shù)據(jù)到硬盤(pán)的哪些地址,所以硬盤(pán)中無(wú)法判別是否啟用了分組加密的功能,因此在此項(xiàng)測(cè)試過(guò)程中,用仿真的方式進(jìn)行測(cè)試,仿真工具為modelsim,測(cè)試方式是:給AES加密模塊輸入連續(xù)相同的數(shù)據(jù)進(jìn)行加密,并且變動(dòng)不同的硬盤(pán)物理地址,判別所輸出的密文是否有了變化,因而判斷分扇區(qū)的加密功能是否啟用。
圖11中當(dāng)SATA_addr變化時(shí)關(guān)于用戶密鑰部分的仿真結(jié)果,當(dāng)硬盤(pán)物理地址由0x00000000變成0x08500000時(shí),可以看到會(huì)導(dǎo)致AES加密模塊的復(fù)位即core_rst=1,key_s也會(huì)根據(jù)物理地址的范圍從400組用戶密鑰列表中獲取新的用戶密鑰存到key_s中,圖中的仿真,物理地址落在的范圍是密鑰的第4組,因此密鑰指T即key_pointer_T=4。然后ka_key及usb_key密鑰中的第4組(第0組在最前面)更新到中key_s,key_s更新完畢后即把這組新密鑰輸入到AES模塊中更新密鑰。
圖11 硬盤(pán)物理地址變化造成密鑰的更新
圖12是另一組硬盤(pán)物理地址變化造成的密鑰更新,當(dāng)?shù)刂酚?x08500000變成0x0E500000,AES模塊會(huì)進(jìn)行復(fù)位,然后更新密鑰,密鑰指針T即key_pointer_T=7。
圖12 硬盤(pán)物理地址變化造成密鑰的更新
由圖11、12的仿真結(jié)果可知,當(dāng)硬盤(pán)物理地址變化時(shí),首先就會(huì)復(fù)位AES加密模塊,然后根據(jù)地址范圍確定指針T,由指針T從用戶密鑰列表中獲取對(duì)應(yīng)的密鑰輸入到AES模塊。
圖13 不同扇區(qū)地址加密功能仿真
如圖13所示,在同一次仿真中,硬盤(pán)的物理地址變化了兩次,第一次是由0x00000000變成0x08500000,第 二 次 是 由 0x08500000變 成0x0E500000,這兩次的地址變化都導(dǎo)致AES模塊重新載入相應(yīng)的密鑰。表6為兩次不同地址數(shù)據(jù)加密的情況。
由表6可以看出在不同的硬盤(pán)物理地址情況下,會(huì)有不同的用戶密鑰對(duì)硬盤(pán)數(shù)據(jù)進(jìn)行處理,因此達(dá)到分扇區(qū)加密的功能,同時(shí)防止了重放攻擊的問(wèn)題。
表6 兩次不同地址數(shù)據(jù)加密的情況
本文設(shè)計(jì)的管用分離的實(shí)時(shí)性在線硬盤(pán)加密系統(tǒng),采用整機(jī)加密卡與電子鑰匙兩部分分離設(shè)計(jì)的辦法,成功實(shí)現(xiàn)了管理和使用分離的設(shè)計(jì),保證了信源信息的安全;全硬件的實(shí)現(xiàn)方式提高了系統(tǒng)的安全性,分體式存放用戶密鑰防止了信息安全里的重放攻擊的問(wèn)題,同時(shí)流水線處理進(jìn)出硬盤(pán)的數(shù)據(jù)加快了系統(tǒng)的吞吐量,本加密系統(tǒng)單芯片實(shí)現(xiàn),使用簡(jiǎn)單。
[1]Yang M,Zhou X,Zeng J,et al.Challenges and Solutions of Information Security Issues in the Age of Big Data[J].Wireless Communication Over Zigbee for Automotive Incli?nation Measurement China Communications,2016,13(3):193-202.
[2]Carcary M,Renaud K,Mclaughlin S,et al.A Framework for Information Security Governance and Management[J].It Professional,2016,18(2):22-30.
[3]Thompson H.The Human Element of Information Security[J].IEEE Security&Privacy Magazine,2013,11(1):32-35.
[4]Kessler G C.Information Security:New Threats or Famil?iar Problems[J].Computer,2012,45(2):59-65.
[5] Yuhao Wang,Leibin Ni,Chip-Hong Chang,Hao Yu.DW-AES:A Domain-wall Nanowire Based AES for High Throughputand Energy-efficientDataEncryption in Non-volatile Memory[J].IEEE Transactions on Informa?tion Forensics and Security,2016:1.
[6]谷雙雙,夏魯寧,賈世杰,等.一種加密硬盤(pán)的身份鑒別和密鑰保護(hù)方案[J].密碼學(xué)報(bào),2016(2):126-136.
GU Shuangshuang,XIA Luning,JIA Shijie,et al.A Pro?gram of Authentication and Key Protection for Hard Disk Encryption[J].Journal of Cryptologic Research,2016(2):126-136.
[7]黃志榮,范磊,陳恭亮.密鑰管理技術(shù)研究[J].計(jì)算機(jī)應(yīng)用與軟件,2005,22(11):112-114.
HUANG Zhirong,F(xiàn)AN Lei,CHEN Gongliang.The re?search of key management technology[J].Computer Appli?cations And Software,2005,22(11):112-114.
[8]C.othandaraman,Sundar K.Iyer;Subramanian S.Iyer.Electrically programmable fuse(eFUSE)using electromi?gration in silicides[J].Electron Device Letters,IEEE,2002,23(9):523-525.
[9]Liu B,Baas B M.Parallel AES Encryption English for Many-core Process Arrays[J].Computers IEEE Transac?tions on,2013,62(3):536-547.
[10]Chang C J,Huang C W,Chang K H,et al.High through?put 32-bit AES implementation in FPGA[C]//Circuits and Systems,2008.APCCAS 2008.IEEE Asia Pacific Conference on.IEEE,2008:1806-1809.
[11]賈效玲,張剛,張博.SATA硬盤(pán)控制器的FPGA實(shí)現(xiàn)[J].火力與指揮控制,2016(9):182-184,188.
JIA Xiaoling,ZHANG Gang,ZHANG Bo.FPGA Imple?mentation of SATA Hard Disk Controller[J].Fire Con?trol&Command Control,2016(9):182-184,188.
[12]陳序,楊龍,孟勇,等.基于SATA接口的并行擾碼實(shí)現(xiàn)[J].電視技術(shù),2013,37(19):71-73.
CHEN Xu,YANG Long,MENG Yong.Implementation of Parallel Scramble Based on SATA Interface[J].Vedio Engineering,2013,37(19):71-73.
[13]Li Jun,Wang Wei,“PCI Express Interface Design and Verification Based on Spartan-6 FPGA”[C]//The Ninth International Conference on Electronic Measurement&Instruments,2009.
[14]李耀齊,蔣存波,呂鑫,等.USB總線的初始化分析[J].自動(dòng)化與儀表,2007,22(3):51-54,64.
LI Yaoqi,JIANG Cunbo,LV Xin,et al.Analysis of Bus Initialization[J].Automotion&Instrumentation,2007,22(3):51-54,64.