您好,歡迎來電子發(fā)燒友網(wǎng)!請登錄 新用戶?[免費(fèi)注冊]

基于MEMS強(qiáng)鏈和FPGA的USB移動(dòng)硬盤數(shù)據(jù)加解密系統(tǒng)

2009-11-07 11:15本站整理 佚名我要評論(0我要去社區(qū)論壇 ->

基于MEMS強(qiáng)鏈和FPGA的USB移動(dòng)硬盤數(shù)據(jù)加解密系統(tǒng)

隨著信息量的急劇增長,信息安全日益受到人們重視。一個(gè)完整的數(shù)據(jù)加解密系統(tǒng)應(yīng)該 具備安全可靠的密碼認(rèn)證機(jī)制和加解密算法。本文基于MEMS 強(qiáng)鏈、USB 控制器和FPGA 設(shè) 計(jì)了一種USB 接口的高效數(shù)據(jù)加解密系統(tǒng),采用AES 加密算法。普通IDE 硬盤掛接該系統(tǒng)后 成為安全性極高的加密USB 移動(dòng)硬盤,其平均數(shù)據(jù)吞吐率接近普通U 盤,達(dá)到10MB/s.

  1. 系統(tǒng)結(jié)構(gòu)布局

  該系統(tǒng)由Cypress CY7C68013 USB2.0 控制器、Altera EP2C35 FPGA 和MEMS 強(qiáng)鏈構(gòu)成, 圖1 描述了整個(gè)系統(tǒng)的硬件布局。

整個(gè)系統(tǒng)的硬件布局

  MEMS 強(qiáng)鏈負(fù)責(zé)對用戶輸入的密碼進(jìn)行驗(yàn)證。CY7C68013 USB 控制器內(nèi)含增強(qiáng)型51 核,它不 但能高效處理USB 協(xié)議事務(wù),而且是整個(gè)系統(tǒng)的控制中心。EP2C35 FPGA 一端連接USB 控制 芯片的GPIF 接口,一端連接IDE 硬盤,它負(fù)責(zé)從IDE 總線中區(qū)分出控制信號(hào)、讀寫硬盤寄存器的數(shù)據(jù)信號(hào)和讀寫硬盤扇區(qū)的數(shù)據(jù)信號(hào),然后僅對寫入硬盤扇區(qū)的數(shù)據(jù)作加密處理,對讀出 硬盤扇區(qū)的數(shù)據(jù)作解密處理。

  2. MEMS 強(qiáng)鏈

  MEMS 強(qiáng)鏈的棘爪能卡住棘輪,從而能精確定位到固定的位置,棘爪裝有電磁驅(qū)動(dòng)型電機(jī), 使其具有誤碼鑒別與自復(fù)位功能,因而可用于信息安全,實(shí)現(xiàn)密碼鎖的功能。鑒碼機(jī)構(gòu)由兩組 電磁型微步進(jìn)電機(jī)驅(qū)動(dòng)反干涉齒輪集A 和B,反干涉碼輪集中機(jī)械固化了密碼。反干涉齒輪集 在正確解碼時(shí),碼齒之間互相沒有接觸;當(dāng)出現(xiàn)錯(cuò)碼時(shí),碼齒相互干涉,反干涉齒輪集卡死。 使用光電耦合機(jī)構(gòu),在正確接收到24 位密碼時(shí)光電能量耦合,系統(tǒng)開啟。圖2 是MSMS 強(qiáng)鏈 結(jié)構(gòu)圖。

MSMS 強(qiáng)鏈 結(jié)構(gòu)圖

  3. 物理密鑰與密碼認(rèn)證

  物理密鑰是相對于邏輯密鑰而言的,邏輯密鑰通常以二進(jìn)制形式存在于芯片內(nèi)部ROM 區(qū),容易被破解。而物理密鑰固化在機(jī)械結(jié)構(gòu)內(nèi)部。本設(shè)計(jì)采用的反向嚙合齒輪集鑒碼機(jī)構(gòu)所蘊(yùn)含 的密鑰就屬于物理密鑰。它的結(jié)構(gòu)相當(dāng)隱含,不是專業(yè)人士即使知道了鑒碼機(jī)構(gòu),也很難推出其密碼。

  密碼認(rèn)證開始時(shí),USB 控制器把接收到的來自PC 的24 位待驗(yàn)證二進(jìn)制密碼以脈沖的形 式傳遞給強(qiáng)鏈。強(qiáng)鏈的電機(jī)會(huì)根據(jù)脈沖驅(qū)動(dòng)碼輪。若密碼正確,反干涉齒輪*無摩擦的走通 一周回到原位;只要有一位密碼錯(cuò)誤,反干涉齒輪*在該位卡死。USB 控制器根據(jù)強(qiáng)鏈的反 饋信號(hào)作出判斷,如果驗(yàn)證通過,則將該系統(tǒng)枚舉成一個(gè)可移動(dòng)磁盤,并把該正確密碼傳遞給 FPGA,作為AES 加密算法的密鑰;否則向PC 機(jī)返回驗(yàn)證失敗的信息。

  4. ATA 協(xié)議控制器的實(shí)現(xiàn)

  從密碼認(rèn)證通過,枚舉開始的那一刻起,USB 控制器得到了對硬盤的訪問權(quán)。 根據(jù) ATA 協(xié)議,對支持Ultra DMA 傳輸方式的IDE 硬盤而言,操作歸結(jié)為兩種,對硬盤接 口寄存器讀寫以及對硬盤扇區(qū)進(jìn)行Ultra DMA 批量扇區(qū)。為了對硬盤數(shù)據(jù)進(jìn)行加解密,我們把 FPGA 插入連接GPIF 接口和硬盤接口的IDE 總線,這樣所有控制信號(hào)和數(shù)據(jù)信號(hào)都要通過 FPGA,受到FPGA 的監(jiān)視和控制。

  FPGA 必須實(shí)現(xiàn)有限狀態(tài)機(jī),能夠?qū)π盘?hào)進(jìn)行協(xié)議解析,區(qū) 分出那些需要加解密的扇區(qū)數(shù)據(jù),也就是在Ultra DMA 傳輸過程中出現(xiàn)在數(shù)據(jù)總線上的數(shù)據(jù)。 在PIO 狀態(tài)時(shí),F(xiàn)PGA 讓所有信號(hào)保持直通,因而讀寫硬盤接口寄存器的操作不受任何影響,但狀態(tài)機(jī)監(jiān)測對硬盤接口寄存器的寫入操作。一旦發(fā)現(xiàn)寫入命令寄存器的命令代碼為DMA 讀 (0xC8 或0x25)或DMA 寫(0xCA 或0x35)命令,則有限狀態(tài)機(jī)進(jìn)入DMA 狀態(tài)。

  因?yàn)榭紤]到數(shù)據(jù)經(jīng)加解密模塊會(huì)有200ns 左右的延時(shí),如果控制信號(hào)仍然直通一定不能滿 足DMA 傳輸協(xié)議的時(shí)序要求,所以理想的辦法是把控制信號(hào)也延時(shí)相應(yīng)的時(shí)間。

  延時(shí)多少的確定很困難,況且也沒有必要,我們采取的方法是設(shè)計(jì)了三個(gè)主要模塊:數(shù)據(jù) 接收模塊、數(shù)據(jù)處理模塊和數(shù)據(jù)發(fā)送模塊,連成一條處理流水線,這樣既能對數(shù)據(jù)流進(jìn)行完全 時(shí)序化的控制,又能維持較高的數(shù)據(jù)吞吐。如圖3 所示。數(shù)據(jù)接收模塊的任務(wù)是把硬盤發(fā)送過來的讀扇區(qū)數(shù)據(jù)或者USB 控制器發(fā)送來的寫扇區(qū)數(shù) 據(jù)正確的接收和緩存;數(shù)據(jù)處理模塊的任務(wù)是對扇區(qū)數(shù)據(jù)進(jìn)行加密或解密處理;數(shù)據(jù)發(fā)送模塊 的任務(wù)是把處理完的結(jié)果數(shù)據(jù)發(fā)送出去。

FPGA頂層模塊布局

  由于數(shù)據(jù)流是雙向的,所以兩個(gè)方向上各有一條數(shù)據(jù) 收發(fā)流水線。在一次DMA 傳輸中,只有一條流水線是工作的,且它們暫時(shí)獲得IDE 總線的控 制權(quán)。

不失一般性,我們討論下執(zhí)行DMA 讀命令的全過程。首先,在PIO 狀態(tài)下將DMA 讀命 令的代碼0xC8(或0x25)寫入硬盤的命令寄存器。此后狀態(tài)機(jī)進(jìn)入DMA 讀狀態(tài),總線切換給 DMA 讀數(shù)據(jù)接收模塊和DMA 讀數(shù)據(jù)發(fā)送模塊。DMA 讀數(shù)據(jù)接收模塊與硬盤進(jìn)行握手確認(rèn), 啟動(dòng)UDMA 讀傳輸,此后每當(dāng)硬盤DMA strobe 信號(hào)(DMA 同步信號(hào))發(fā)生跳變,就對16 位 硬盤數(shù)據(jù)總線進(jìn)行采樣,并更新CRC 接收校驗(yàn);每采樣8 次則整合成一個(gè)128 位并行數(shù)據(jù),提 供給AES 解密模塊,該模塊取走這128 位數(shù)據(jù)開始新一輪AES 解密迭代運(yùn)算,同時(shí)輸出前一 輪處理完的128 位解密數(shù)據(jù),并拆分為8 個(gè)16 位并行數(shù)據(jù),陸續(xù)存入一個(gè)16 位寬的FIFO。與 此同時(shí),DMA 讀數(shù)據(jù)發(fā)送模塊查詢到FIFO 中出現(xiàn)了數(shù)據(jù),就開始不斷的從中讀取,并放在16 位數(shù)據(jù)總線上提供給USB 控制器,每放一次數(shù)據(jù),便翻轉(zhuǎn)一次DMA strobe 電平使得USB 控制 器的GPIF 接口能夠同步接收數(shù)據(jù),同時(shí)更新CRC 發(fā)送校驗(yàn)。


  當(dāng)硬盤把所有指定數(shù)量的加密數(shù)據(jù)都發(fā)送給FPGA 后會(huì)收到FPGA 的CRC 接收校驗(yàn)反饋, 若與硬盤內(nèi)部的CRC 校驗(yàn)一致,則硬盤認(rèn)為這次DMA 讀命令被正確執(zhí)行。

  當(dāng) FPGA 把所有處理完的解密數(shù)據(jù)都發(fā)送給USB 控制器后也會(huì)收到USB 控制器的CRC 校 驗(yàn)反饋,若與FPGA 內(nèi)部的CRC 發(fā)送校驗(yàn)一致,則可以認(rèn)為一次完整的含解密的DMA 讀命令 被正確執(zhí)行。

  圖 3 中的全局控制狀態(tài)機(jī)負(fù)責(zé)整個(gè)系統(tǒng)的控制和協(xié)調(diào),它實(shí)時(shí)的監(jiān)測PIO 寫入命令,并在恰當(dāng)?shù)臅r(shí)機(jī)把IDE 總線控制權(quán)切換給加密流水線或解密流水線。當(dāng)加解密流水線執(zhí)行完一次 DMA 傳輸命令后,總線控制權(quán)會(huì)重新交還給全局控制狀態(tài)機(jī)。

  5. AES 加密模塊的實(shí)現(xiàn)

  AES 的設(shè)計(jì)原理可參考文獻(xiàn)[1],下面只簡單介紹算法過程。AES 是一個(gè)迭代的分組密碼, 每一輪迭代稱為一個(gè)輪變換,包括一個(gè)混合和三個(gè)代換:

 。1)字節(jié)代換(SubBytes):利用S 盒對狀態(tài)的每一個(gè)字節(jié)進(jìn)行非線性變換。

 。2)行移位(ShiftRow):對狀態(tài)的每一行,按不同的位移量進(jìn)行行移位。

  (3)列混合(MixColumn):對狀態(tài)中的每一列并行應(yīng)用列混合,在最后一輪省略該步。

 。4)擴(kuò)展密鑰加(AddRoundKey):與擴(kuò)展密鑰異或。 加密算法的流程如圖4 所示。

加密算法的流程

  相應(yīng)的,解密算法使用逆序的擴(kuò)展密鑰,輪變換分別為InvSubByte,InvShiftRow, InvMixColumn,數(shù)據(jù)流程稍有不同。

  我們設(shè)計(jì)的AES 加密運(yùn)算模塊以128 位為一個(gè)分組,完成一個(gè)分組的運(yùn)算需要11 個(gè)時(shí)鐘 周期。第1 個(gè)時(shí)鐘周期,密鑰擴(kuò)展模塊輸出第1 個(gè)擴(kuò)展密碼,也就是初始密碼本身;同時(shí)初始 變換模塊用這個(gè)擴(kuò)展密碼對128 位明文作AddRoundKey 操作。

  第2 個(gè)到第11 個(gè)時(shí)鐘周期,密 鑰擴(kuò)展模塊依次生成10 個(gè)擴(kuò)展密碼,同時(shí),輪變換模塊利用這些擴(kuò)展密碼對輸入密文作10 個(gè) 輪次的輪變換,其中最后一輪缺少列混合操作,然后輸出最終的密文,結(jié)束一個(gè)分組的運(yùn)算。

  6. 數(shù)據(jù)吞吐率分析

  Ultra DMA 在模式2 下的數(shù)據(jù)傳輸率為33.33MB/s。由于FPGA 全局時(shí)鐘頻率為100MHz, 所以加解密一個(gè)128 位分組需要110ns。加上數(shù)據(jù)的輸入和輸出階段各占用一個(gè)時(shí)鐘周期,總共 需要130ns。所以加解密模塊的數(shù)據(jù)處理速率約為61.54MB/s,完全能夠達(dá)到實(shí)時(shí)處理的要求。

  7. 結(jié)束語

  本文提出了一種安全高效的USB 移動(dòng)硬盤數(shù)據(jù)加解密系統(tǒng)。其中,MEMS 強(qiáng)鏈的應(yīng)用開辟 了系統(tǒng)物理認(rèn)證的新方向;Ultra DMA 協(xié)議接口的FPGA 實(shí)現(xiàn)大大提高了硬盤讀寫的吞吐率,同時(shí)AES 加解模塊的處理速率又能完全滿足Ultra DMA 傳輸帶寬,兩者的有機(jī)協(xié)作使得一種高 效的硬件加解密流水線得以實(shí)現(xiàn)。

標(biāo)簽
分享到:

(責(zé)任編輯:發(fā)燒友)

發(fā)表評論:

發(fā)表評論表單
評價(jià)[必選]:
用戶名: 驗(yàn)證碼:點(diǎn)擊我更換圖片

請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。