拿來即用,指紋識別保密系統(tǒng)完整解決方案
1 作品背景
1.1 需求概述
在信息技術突飛猛進的今天,人們在享受進步的同時,也要遭受越來越多的數字危機。U盤, 由于其 擁有容量大、體積小、價格便宜等眾多優(yōu)點 ,已成為人 們移動存 儲的首選設備。因此 U盤的數據安全問題也日益露出水面。世界各地關于 U盤數據泄露的事件層出不窮,既有企業(yè)私人的,也有政府軍方的。1.2 現有安全方案調研
U 盤安全問題早已引起人們的關注,各大 U 盤制造廠家也都紛紛拿出自己的解決方案,經過調研,我們對市場上現有的 U 盤保密方案進行了如下總結。
在 U 盤市場上,近來又出現了基于指紋識別身份認證技術的產品,硬件上增加了指紋識別模塊,但仍會依賴一段在 PC 上執(zhí)行的程序,這段程序或預先安裝在 PC 上,或來自 U 盤上的某塊存儲區(qū)域,國內代表作是亞略特系列 U 盤。除了解決了無需手動輸入密碼外,軟硬結合方案的其他缺點依舊沒有解決。
表 1-1 現 有解 決方 案比 較
解決方案 | 方案簡述 | 優(yōu)點 | 缺點 | 代表產品 |
機械方式 | 采用機械裝置 鎖住 USB 插頭 | 通 用 性好 | 安全性差 | 不常見,只找到一款 日本產品 |
軟件方式 | 通過在 PC 上運 行的軟件程序 對磁盤分區(qū)或 文件進行加解 密 | 代 價 低,硬 件 上 無 需 做 變 動 | 1 通用性不佳,一般各廠家軟件都不同,通用的軟 件,如高強度 U 盤文件夾加密,只能做到文件加 密層次,安全性低于磁盤的分區(qū)加密。 2 受到 PC 病毒威脅。 3 手動輸入密碼位數有限,安全強度不高。 4 占用 PC 資源,加解密速度受限。 | 清華紫光系列 |
軟硬結合 方式 | 將原本放在 PC 上運行的程序 存放到 U盤中, 插上后上傳到 PC 執(zhí)行 | 無 需 在 PC 上 安 裝 軟 件 | 1 通用性不佳,各 U 盤廠家由于各自硬件不同實現 方法也不同,且 U 盤硬件需改動,這種方案對老 U 盤束手無策。一般只能運行于 Windows XP/2000 系統(tǒng)。 2 安全強度未知,廠家一般都未公布自己的加密方 念 案和所用加密標準。 3 仍依賴于在 PC 上執(zhí)行的程序進行操作,依舊受 PC 病毒的威脅。 4 主流產品依舊靠鍵盤輸入密碼。 | Kingston 08 鼠年紀 版, 臺電 加密 大 師 U 盤 |
1.3 解決方案
我們的目 標是要制作這樣 一個作品:作品在 整個系統(tǒng)中 類似一個讀卡器 ,PC無需安裝任何驅動和程序,U 盤無需做任何改動,針對不同廠家的 U 盤,不同的操作系統(tǒng)(本身插上普通 U 盤能工作),作品要有一定的通用性(最起碼理論上要可行)。由指紋產生密鑰,采用公認安全的加密標準 ,快速加解密,最終達到令人能夠接受的傳輸 速率。無需上傳任何程序至 PC 運行。
2 功能與指標
本作品連接在電腦 USB 接口與 U 盤之間,通過解析USB 協(xié)議,提取出需要加密的部分,對其進行加解密后置換,再轉發(fā)。密碼由用戶的指紋特征數據經過處理后產生。
本作品對整個 U 盤進行加密(屬于磁盤加密中的分區(qū)加密,相對文件加密而言安全度將更高)。加密后的 U 盤直接插在電腦上或輸入的指紋不正確時,盤內數據將無法被訪問。
為實現友好的用戶操作界面,作品工作流程采用向導式。作品給用戶提供三個按鈕、一個工作模式選擇開關來對其進行控制。提供兩種工作模式:1)正常工作模式——流程中沒有添加指紋、刪除指紋的操作;2)管理工作模式——在進入正常工作模式前,用戶可以進行添加、刪除指紋的操作。通過 LCD 向用戶提供操作提示信息。
本設備采用硬件方法實現了高速、高強度的加密標準—AES,具備高指紋識別率,達到全速 USB 設備傳輸速 率標準。同時本設備相對 U 盤、PC,是一個獨立的設備,有很好的通用性,適用多數 U 盤和操作系統(tǒng)。
3 系統(tǒng)方案
3.1 系統(tǒng)框圖
圖 3-1系統(tǒng)總體示意圖
本作品在 Xilinx Spartan3E FPGA 芯片 XC3S500E 上搭建以 Microblaze 軟核為核心的微處理器系統(tǒng),在 Spartan3E Starter Kit 開發(fā)板外擴展 USB 接口電路和指紋模塊,結合開發(fā)板上的豐富資源來構成整個作品的硬件部分。其中 AES 算法在 FPGA 片內用 VHDL 實現。USB 協(xié)議解析、磁盤加密、密鑰生成等軟件部分通過為 MicroBlaze 處理器編寫 C 代碼實現。
整個 系統(tǒng)框圖 如圖 3-1 所示, 其中,虛 框內微處 理器系 統(tǒng)和加解 密模塊在 開發(fā)板上 的FPGA 芯片內實現,指紋模塊、USB 接口電路則在自行設計的外部電路板上實現。硬件開發(fā)平臺為 Xilinx Spartan3E Starter Kit 開發(fā)板,主要開發(fā)軟件 ISE 9.1i 和 EDK 9.1i。
3.2 USB 接口方案
本模塊電路以兩片 MAX3421E 芯片為核心,分別與 PC、U 盤相連。USB 協(xié)議由底層到高層分為電氣層、設備層、功能層,MAX3421E 可以實現從電氣層到設備層數據的轉化,從而使微處理器系統(tǒng)可以在設備層以上操作。該芯片內部不包含微處理器核。
目前市場上的 USB 接口芯片種類繁多,功能和應用場合各異,從 USB1.0 到 USB2.0,從主、從單功能控制器到主從集成控制器,從 帶單片機核到功能單一的純 USB 接口芯片。要在這么多的芯片中選擇一款合適本系統(tǒng)的芯片必須通過如下的篩選:
1) 支持全速模式的傳輸,波特率達到 12Mb/s。
2) 片內不帶有單片機核的單一 USB 芯片,因為在本系統(tǒng)中 FPGA 將作為中心控制器,
不應該有過多的單片機介入處理。
3) 最好有兩種模式的集成以便選擇,能分別提供到 PC 和到 U 盤的接口功能,即兼容
USB 主機和外設兩種模 式。
4) 接口芯片與控制器之間最好使用串行通信,約寶貴的控制器 I/O 資源。
5) 外觀上要盡量小巧,便于產品的小型化。
基于以上的五點,我們將選擇的焦點放在了 Maxim 公司生產的 MAX3421E 上,它完全符合以上要求,是一款微處理器獨立的 USB 接口轉化解決方案,具備最大頻率高達 26MHz的 SPI 接口,配備收發(fā)各有 64Byte 的雙緩沖,有助于提高 USB 的傳輸速率。芯片采用 5mm×5mm 的 TQFP 封裝,有利于產品的小型化。
3.3 微處理器系統(tǒng)
微處理器系統(tǒng)采用 Xinlinx 公司推出的 32 位處理器 IP 軟核 MicroBlaze 作為CPU,這是最適合本開發(fā)平臺的解決方案。MicroBlaze 支 持 CoreConnect 總線的標準外設集合,具有兼容性和重復利用性。
設計中 Microblaze 通過 OPB 總線和相應的接口轉換 IP 核連接使用片內外硬件資源。
微處理器系統(tǒng)通過 SPI 總線與指紋模塊通信,獲得指紋特征數據。
微處理器系統(tǒng)通過 SPI 總線與 USB 接口電路相連,解析并控制流經作品的數據流。
微處理器系統(tǒng)和加解密模塊之間通過并行 GPIO 接口通信。
考慮到 FPGA 片內資源有限,指紋模塊內部實現了指紋采集、指紋圖像的預處理、特征提 取、存 儲讀取 指紋特 征數 據、匹 配等算 法。 能響應 微控制 器系 統(tǒng)的注 冊、刪 除、 識別驗證、傳輸存儲的特征數據等命令。
在選擇指紋傳感器類型 時我們的調研結果如表 3-1,最后確定采用 射頻原理指紋傳感器AES2510,其能采集識別 真皮層指紋,對各種指紋類 型適應性強,解決了人造 假指紋問題,增加了安全性。采用刮擦式設計,面積更小,成本更低,且能采集到足夠大的指紋圖像。
采用運算功能強勁的 DSP 芯片 TMS320VC5416 作為核心控制處理芯片,外接 Flash、DDR芯片構成模塊固件執(zhí)行和存儲數據的硬件平臺。 向微控制器系統(tǒng)提供 SPI 接口通信。
表 3-1 各 種類 型指 紋傳 感器 對比 表
采集技術 | 貼膜光學 | 不貼膜光學 | 電感電容壓感 | 熱敏 | 射頻 |
人造指紋的判別能力 | 很壞 | 壞 | 較好 | 好 | 好 |
手指識別率 | 較好 | 壞 | 壞 | 較好 | 好 |
臟手指識別率 | 壞 | 壞 | 壞 | 較好 | 好 |
油手指識別率 | 較好 | 較好 | 壞 | 較好 | 好 |
老人識別率 | 較好 | 壞 | 壞 | 較好 | 好 |
氣候變化適應能力 | 較好 | 壞 | 壞 | 較好 | 好 |
抗震動適應能力 | 壞 | 壞 | 好 | 好 | 好 |
抗靜電適應能力 | 好 | 好 | 壞 | 壞 | 好 |
表面耐磨 | 壞 | 好 | 壞 | 較好 | 好 |
溫度范圍 | 0-40℃ | 0-40℃ | -5~40℃ | 夏天不能使用 | -30~70℃ |
3.5 密鑰生成
作品中密鑰生成算法采用 ANSI X9.17 標準。之所以選擇 ANSI 9.17 算法來將指紋特征數據轉換為密鑰,主要有兩點原因:1)作品中已經實現了 AES 加密模塊使得該算法實現非常方便;2)相對研究過程中我們曾使用過的 SHA512 算法而言,該算法有效地減少了代碼量和執(zhí)行代價,節(jié)省了空間。因為 FPGA 片內允許的最大代碼量為 32K,若超過 32K,就得將代碼放至片外 DDR 中執(zhí)行。這樣的缺點是程序執(zhí)行速度相對片內將大大變慢,此外,FPGA 配置、程序自動加載到 DDR 中執(zhí)行也將是個問題,一是 需編寫 Bootloader 程序,二是 DDR 消耗資源較多,大概占 20%片內資源(在本作品開發(fā)平臺上),在本作品現有架構上加上 DDR 之后根本沒有資源再加掛一個 Flash,故 Bootloader 程序也無法編寫和使用 。
3.6 加解密模塊
加解密模塊采用 AES 算法,通過 VHDL 設計的數字電路實現。該模塊從 MCU 系統(tǒng)獲得密鑰和明(密)文,處 理后返回密(明)文。由于采用硬件電路實現,因此 可以獲得很高的工作速度,同時也使 FPGA 中剩余的邏輯資源得到了充分的利用。
在設計該模塊電路及其 通信協(xié)議時,還充分考慮了其移植性,密鑰擴展和加 解密模塊是可以分離的,因此 在某些邏輯資源受限情形下,可以將密鑰擴展部分放到微 處理器系統(tǒng)中以軟件方式實現,而不影響整個模塊的工作速度。
在設計該模塊時亦反復 權衡了工作速度與資源消耗兩個指標,在資源許可的 情況下盡量
提高工作速度。
3.7 USB 協(xié)議解析及磁盤加密
圖 3-2系 統(tǒng)加 解密 協(xié)議 棧到
圖 3-2 描述的是整個系統(tǒng)對 USB 數據的處理過程。USB 接口芯片 MAX3421E 通過連接PC 的 USB 接 口 獲 得 底 層 的 差 分 數 據 信 號 , 對其 進 行 轉 化 , 利 用 SPI 總 線 接 口 向MicroBlaze 系統(tǒng)提交解析后的數據包。然后 MicroBlaze 進行后續(xù)向上的進一步解析。在 SCSI層解析出的數據包是要寫入到 Flash 中的數據塊、地址及其數據長度等信息。調用 AES 模塊,對 數 據 加 密 , 之 后 把 它 按 照 加 密 前 的 方 式 轉 發(fā) , 在 物 理層 再 次 通 過 工 作 在 主 機 模 式 的MAX3421E 發(fā)送給 U 盤。
4 實現原理
本章將圍繞圖 3-2 做詳細的闡述。
4.1 USB 物理、設備層解析
有四種 packet(令牌、幀開始、數據包和握手)進入 MAX3421E,通過讀取 MAX3421E的寄存器可以獲得以上四種 packet 的信息,將它分為配置數據和傳輸數據分別處理。配置數據是 PC 控制 U 盤的,流向只可能從 PC 至 U 盤,而傳輸數據則是雙向的。要從這些數據中區(qū)分出哪些數據是將要被存到 Flash 中的,哪些是控制 U 盤操作的。對于那些控制 U 盤操作的數據,MicroBlaze 直接轉發(fā)給 U 盤,而從 Flash 讀來的或者是要寫到 Flash 中的數據就需要進行加解密再轉發(fā)。
從主機發(fā)來的數據包根據它們不同的類型發(fā)往不同的 USB 端點。USB 端點是 USB 設備特有的一種硬件的接收發(fā)送單元。USB 主機與 設備之間都是通過端點來傳輸數據的。端點是橋 梁 和 紐帶 , 不 同的 端 點 其傳 輸 數 據 的能 力 不 同, 適 于 不 同的 應 用 場合 。 在 Bulk OnlyTransportation 的海量存儲實現規(guī)范(見 4.3 節(jié))中,使用了三個端點,他們分別是控制端點、數 據輸出 端點和 數據輸 入端 點???制端點 可以 用于控 制命令 的輸 出,配 置信息 的輸 入和輸出,它通常表示為 0 端點,這個端點的流向是雙向的,不會出現 STALL 的狀態(tài),它負責設備的配置交互,最大 信息包 64 字節(jié)。輸入輸出端點負責數據的輸 入、輸出,他們都是單向的只能負責輸出或者輸入,最大信息包 64 字節(jié)(USB 全速設備)。
表 4-1 B OT 端點 的屬 性
端點 | 傳輸類型 | 端點類型 | 傳輸方向 | 最大傳輸包 |
0 | 控制輸入 控制輸出 | 默認 | 輸入 輸出 | 64Byte |
1 | 數據輸出 | 普通 | 輸出 | 64Byte |
2 | 數據輸入 | 普通 | 輸入 | 64Byte |
4.2 USB 的枚舉過程
枚舉過程定義為:當設備插入系統(tǒng)時,主機對設備進行配置,獲取 USB 設備的各種描述(包括設備描述、配置描述、Bulk Only 數據接口描述、Bulk-In 端點描述、Bulk-Out 端點描述和字符描述),這也就是 USB 設備為什么可以熱插撥的原因。USB 設備可分為以下幾類:顯示器、通訊設備、 音頻設備、人機輸入、海量存儲„„特定類的 設備又可劃分成子類。枚舉使得主機可以精確定位 USB 設備類型,搜 索相應的驅動程序。
通用海量存儲設備(General Mass Storage Device)的設備描述中,不同的 U 盤在某些具體的字段會具備不同的值。對于不同的字段值,在程序中采取了相應的措施以提高 U 盤的兼容性。USB-IF 推薦 使用批量傳輸(Bulk-Only Transportation)模式,所以 我們的系統(tǒng)也將采用批量傳輸模式。
4.3 批量傳輸協(xié)議(Bulk-Only Transportation Protocol)
在完成 U 盤的枚舉過程之后,識別出為 Bulk-Only 的 Mass Storage 設備,然后即進入Bulk-Only 傳輸方式。 在此方式下,PC 與 U 盤之間所有數據均通過 Bulk- In 和 Bulk-Out 來進行傳輸,不再通過控制端點傳輸任何數據。
圖 4-1命令 、數 據 、狀 態(tài)流程 圖
在這種 傳輸方式下,有三種類型 的數據在USB 和 設備之間傳送,CBW、CSW 和普通數據。CBW(Command Block Wrapper)是從 USB Host 發(fā)送到設備的命令,命令格式遵從接口中的 bInterfaceSubClass 所指定的命令塊,這里為 SCSI 傳輸命令集。USB 設備需要將 SCSI命令從 CBW 中提取出來,執(zhí)行相應的命令,完成以后,向 Host 發(fā)出反映當前命令執(zhí)行狀態(tài)的 CSW(Command Status Wrapper),Host 根據 CSW 來決定是否繼續(xù)發(fā)送下一個 CBW 或是數據。Host 要求 USB 設備執(zhí)行的命令可能為發(fā)送數據,則此時需要將特定數據傳送出去,完畢后發(fā)出 CSW,以使 Host 進行下一步的操作。USB 設備所執(zhí)行的操作可用圖 4-1 描述。
在流程圖中包括了三種形式的數據包,USB 的設備層統(tǒng)一將他們看成數據,不加區(qū)分的進行傳輸,而在功能層上才開始區(qū)分這三種不同形式、不同功能的數據包。
4.4 SCSI 指令(Small Computer Systems Interface Block Commands)
在 4.3 節(jié)中介紹的 BOT(Bulk-Only Transportation)協(xié)議的 CBW 數據包中有一個長度為 6到 12 不等的字段 CBWCB,其傳輸的就是 SCSI 命令。
表 4-2 MSC 基 本 S CSI 命 令集
INQUIRY
命令描述查詢設備的詳細信息,如生產廠家、序列號等
READ CAPACITY(10)
READ(10)
REQUEST SENSE
TEST UNIT READY
WRITE(10)
讀取 Flash 容量,扇區(qū)大小以及總扇區(qū)數
輸入要讀取的數據,從 Flash 讀出
請求判斷,用于發(fā)生錯誤時系統(tǒng)自我糾正
測試單元準備,電腦通過此命令保持 U 盤一直處于激活狀態(tài)
提供 Flash 地址,向 Flash 寫數據
SCSI命令集是 一套能夠完成 對一般外接存 儲系統(tǒng)設備 的存取、配置 、檢查等任務 的完備指令 集。SCSI擁 有的這套指令 集有很多指 令,不同的 版本分別用 在光驅、硬盤、 軟驅等設備的控制中,表 4-2 列出的 6 條指令已經可以完全實現 USB 存儲設備的操作了,這一特性大大減小了設備設計的難度與復雜度。Bulk-Only 的 CBW 中的 CBWCB 字段就是對以上這些命令的描述。
4.5 基于 CBC-ESSIV 模式的磁盤加密機制
在過去的很多年里用戶 數據的保護大多停留在文件級別的加密技術上,而磁 盤加密技術一直由于軟硬件上的瓶 頸而止步不前。隨著計算機理論以及硬件的飛速發(fā)展 ,現在的計算機使用者,不管是專業(yè)人 員還是普通用戶,在選擇自己的加密手段 時則更加傾向于磁盤加密。
一是因為磁盤加密可以 通過高速的硬件實現透明訪問;二是可以在磁 盤加密的基礎上再使用文件加密,從而達到雙重加密的高強度加密效果。
在加密方式上,毋庸置疑 AES 一直被用在了磁盤加密上,不只是因為它的安全性能,更因為 AES 是一種很好的分析加密算法。但是在加密模式上一直存在一定的問題。普通的 ECB模式因為它的一一對應容易受到水印攻擊(watermarking attack),而 CBC(Cipher Block Chain)式一直以來是眾 多模式中使用最為廣泛的加密模式,即便是在某些方面存 在一些不足。綜合考慮各種因素,CBC 仍然具有多方面的優(yōu)越性。
在一塊可以扇區(qū)尋址的 Flash 或者硬盤上,通常一個扇區(qū)的大小為 512Byte,那么一個扇區(qū) 所需 要 的 AES 加 密 次 數 為 32 次 。 這 32 次 加 密 我 們 就 使 用 CBC 模 式 完 成 , 由ESSIV(Encrypted Salt-Sector IV)算法生成 IV(In itiation Vector)初始化向量。
經過其中 H (k ) 是由密鑰生成的散列。由于 IV 的生成涉及到密碼 k 的介入,所以 IV 的不可預測性很大程度增加了破解的難度。
4.6 FAT 文件系統(tǒng)
FAT 文件系統(tǒng)包括 FAT16 和 FAT32 兩種,他們分別應用在不同大小的 U 盤中,有的 U盤兩者都可以使用,但 是根據簇的大小以及尋址的位數,在不同容量的系統(tǒng) 中,他們會體現出不同的磁盤效率。
圖 4-3FAT 文件 系統(tǒng)
如圖 4-3 所示,FAT 主要有四部分組成:DBR (DOS Boot Record) 即操作系統(tǒng)引導記錄區(qū)、FAT (File Allocation Table) 即文件分配表、 根目錄、數據區(qū)。這四個部分隨著 FAT 的位數的不同有略微的變化,但是磁盤的實現原理是一樣的。
DBR 主要存儲了跳轉指 令、BPB 等一些分區(qū)信息,用于操作系統(tǒng)對 分區(qū)的識別以及進一步的操作。FAT 用于存儲磁盤中大于一簇的文件的跨簇存儲的信息,采用鏈表的方式實現了文件的連續(xù)和不連續(xù)的存儲,同時 FAT 會存有相同的兩份,以供其中一個出現錯誤時恢復用。根目錄記錄了 根目錄下的文件、文件夾信息和他們所在的實際首地址、 長度等信息。最后便是所有文件數據存儲的區(qū)塊。
在 USB 的讀寫過程中,USB 控制器無需對文件系統(tǒng)有任何了解,在對文件的處理過程中所需要的操作全部由 PC 機上的操作系統(tǒng)完成,將需要讀寫的數據讀出或寫到 Flash 中。而USB 所要做的就是不斷的響應 PC 的請求,這些請求就是 4.4 節(jié)所述的 SCSI 的讀寫命令,完全不需要管上層的文件 系統(tǒng)究竟在做什么工作。這一層與層之間 的獨立的特性也為系統(tǒng)的實現以及對磁盤的加密提供了理論前提。
4.7 指紋特征提取與密鑰生成
4.7.1 指紋特征提取
指紋模塊完成指紋采集、指紋登記、指紋 1:N 和 1:1 比對等與指紋有關的操作。它由高速信號處理器 DSP 芯片 TMS320VC5416、指紋傳感器(滑動式)、高性能指紋比對算法等軟硬件組成。采用 SPI 總線接口和控制器通信。模塊上的指紋傳感器芯片為 AuthenTec 公司的EntréPad 2510 芯片,該芯片體積功耗都很小,對各種指紋適應能力非常強,并且從原理上講只對人的真皮皮膚有反應,從根本上杜絕了人造指紋的問題。
下面是指紋模塊硬件內部原理框圖:
圖 4-4指紋 模塊 內部 硬件 框圖
下面是指紋模塊識別算法流程圖:
圖 4-5指 紋識 別算 法流 程圖
4.7.2密鑰生成
這部分 工作是由MicroBlaze完成的。MicroBlaze從指紋模塊讀取到某個 指紋特征數據后,通過 ANSI X9.17 算法產生密鑰。ANSI X9.17 是最強的偽隨機數發(fā)生器之一,有一些應用使用了這種方法,如金融安全應用和 PGP 等。
圖 4-6ANSI X9.17 偽 隨機 數發(fā) 生器
上圖中 K 為密鑰,按照 ANSI X9.17 這個密鑰是保密的。指紋特征數據分為 128bit 每組,最后一組若不足 128bit 則以 0 補足,作為 DTi 輸入。Vi 為第 i 輪的初始種子值。Ri 為第 i輪產生的偽隨機數。作品中取最后一輪產生的偽隨機數作為密鑰。
5 硬件框圖
系統(tǒng)硬件實現框圖如圖 5-1 系 統(tǒng) 硬 件 實 現 框 圖 所 示 。 虛 線 框 內 均 在starter kit 開發(fā)板上實現,虛線框外在自行設計的電路板上實現。
圖 5-1系統(tǒng)硬 件實 現框 圖
5.1 微處理器模塊(MicroBlaze 系統(tǒng))
本系統(tǒng)中使用了 Xilinx 公司 IP Version 為 6.00a 的 Microblaze 軟核作 為 CPU。其主要工作是過濾 PC 與 U 盤之間的數據傳輸,解析協(xié)議,提取需要加/解密部分交給 AES 模塊,與指紋模塊通信并生成密鑰。系統(tǒng)部分 IP 核定義總結如表 5-1 所示:
表 5-1 MicroBlaze 系統(tǒng)部分 IP 核定義
5.2 AES 加密模塊
AES 模塊是用 VHDL 語言設計的加密電路,采用 128 位密鑰,工作在 CBC 模式。用戶通過指紋驗證后,MicroBlaze 獲得 128 位密鑰,然后將其寫入 AES 模塊。AES 模塊內部存儲并擴展密鑰,用其加密 MicroBlaze 發(fā)來的數據。圖 5-2 是本模塊引腳圖。
圖 5-2AES 模塊引腳圖
Microblaze 首先 將 密 鑰發(fā) 給 AES 模 塊 , AES 模 塊完 成 密 鑰擴 展 后發(fā) 出 信 號通 知Microblaze。 這 時 ,Microblaze 便可 以 將 數據 寫 入 AES 模 塊, 運 算完 成 后 讀出 數 據 。當Microblaze 發(fā)到“de”端口的信號為“0”時,AES 模塊工作在加密模式,為“1”時工作在解密模式。
Microblaze 是 32 位的處理器,密鑰和數據需要分 4 次寫入或讀出。我們定義了一組握手協(xié)議來完成密鑰及數據的交互。寫入密鑰時,首先 Microblaze 將最低的 1 個字寫進 idata_enc, 再將 key_check_enc 設為“00”。AES 模塊判斷出 key_check_enc 等于 key_kw_enc,在下一個時鐘周期將 idata_enc 的數據讀入,并將 key_kw_enc 信號加 1。Microblaze 發(fā)現 key_check_enc 與 key_kw_enc 不等,證實上一次寫入的數據已經被 AES 模塊接收,于是將下一個字的密鑰加到 idata_enc,再將key_check_enc 加 1。這樣,新的一個字的密鑰就被寫入 AES 模塊。當 key_kw_enc 為“11”時,加 1 后又重新回到“00”,4 個字的密鑰就成功寫入。寫入密鑰的波形圖如下:
圖 5-3
寫入數據的過程相似,不再贅述。
密鑰 寫入 波形 圖讀出數據時,以 data_check_enc 信號為地址, odata_enc 輸出運算結果中相應的字。 AES 算法需要進行 10 輪運算。本模塊中每輪運算僅需 8 個時鐘周期 ,80 個時鐘周期即可 完 成 一 次 加 密 或 解 密 運 算 。 按 照 系 統(tǒng) 50MHz 的 時 鐘 頻 率 計 算 , 本 模 塊 最 高 可 達 到10Mbyte/s 的加解密速度。當然,每次加密前需要將數據寫入 AES 模塊,加密后再將數據讀出。這部分占用的時間取決于 Microblaze 處理器的指令周期,所以實際應用中的運算速度要比 10Mbyte/s 小。5.3 USB 接口電路模塊
USB 接口電路以兩塊美國 MAXIM 公司的 MAX3421E 芯片為核心。MAX3421E 是一款USB 控制器,既可作 USB 外設又可作 USB 主機。在這里,與 PC 相連的 MAX3421E 芯片使用 USB 外設工作模式 ,與 U 盤相連的 MAX3421E 芯片使用 USB 主機工作模式。
圖 5-4
芯片具有通信速 率可高達USB 接 S 口電 路信 號圖 26MHz 的 SPI 接口,在Micro Blaze系統(tǒng)中使用的是v1.00.d 版本的 opb_spi IP 核實現 SPI 接口,其允許的最小分頻數為 2,而 opb bus 的時鐘頻率為 50MHz, 所以 此 處 spi bus 時 鐘 頻率 為 25MHz。兩 塊 芯片 均 工作 在 SPI 從機 模 式,MicroBlaze 系 統(tǒng)的 SPI 口為 主 機模 式。 主 從機 的 SPI 工 作方 式均 保 持默 認: CPHA=0,CPOL=0。 MAX3421 芯片提供了 D+、D-引腳,在串聯(lián) 33Ω電阻后可直接連至 USB 總線。而且芯片內部集成了 ESD 保護和 VBCOMP,使外圍電路進一步簡化。為進一步保護插入的設備,我們在主機工作模式的 MAX3421 芯片外部又添加了限流芯片 MIC2545A,限流電阻選取 470Ω,最大允許電流為 490mA。
MAX3421 芯片內部集成了±15KV ESD 保護功能,故外圍電路中沒有再增加靜電防護電路。
5.4 指紋模塊
指紋模塊采用深圳艾菲爾公司設計生產的 EFM-200 通用型指紋識別模塊。它由高速信號處理器 DSP、指紋傳感器芯片 AES2510、高性能指紋比對算法等軟硬件組成。
圖 5-5指 紋模 塊接 口定 義
指紋模塊通過 SPI 接口與 MicroBlaze 系統(tǒng)通信,指紋模塊為從機,MicroBlaze 系統(tǒng)為主機。工作模式為:CPHA=0,CPOL=1。Pin3 為 SPI 從機選擇引腳(低電平使能),Pin7 為SPI CLOCK 引腳,Pin8 為 MISO 引腳,Pin10 為 MOSI 引腳。MicroBlaze 系統(tǒng)中使用 v1.00.e版本的 opb_spi IP 核實現 SPI 接口,opb 總線頻率為 50MHz,分頻系數采用 16。
Pin1 為指紋模塊中斷腳,本系統(tǒng)中采用查詢該引腳的方式來獲得指紋模塊狀態(tài)信息,當該引腳為低電平時,說明指紋模塊準備好數據待主機讀取。Pin9 為電源使能引腳,當其置低時,指紋模塊上電。在 MicroBlaze 系統(tǒng)中通過 opb_gpio IP 核對其進行控制。Pin6、Pin5 為電源和地,均與開發(fā)板相連。Pin2、Pin4 為保留引腳。圖 4.7 是其示意圖。
5.5 配置電路
作為一個完整的 FPGA 設計,配置方案是最后一步也是不可缺少的一步。本設計中采用是 Xilinx Platform Flash 作為我們設計的配置方案。在 Spartan3E starter kit 開發(fā)板上有一塊 4Mbit Xilinx XCF04S serial Platform Flash PROM,通過 iMPACT 工具可以方便地生成FlashPROM 文件,然后采用主串行模式將 Platform Flash PROM 上的存儲信息配置到 FPGA,實現FPGA 的上電自動加載功能。這是最簡單也是最適合本開發(fā)環(huán)境的解決方案。
參考應用文檔 XAPP482,還可應用該 Flash 實現更多功能,限于本設計的應用,不再做進一步探索,提出這一點只是為了說明,這個配置方案也支持對設計的進一步開發(fā)和改進。
6 軟件流程
圖 6-1軟件 工作 流程 圖
首先,當 USB 接口模塊全部完成初始化之后就開始最初的 USB 枚舉(enumeration)過程,涉及到各種描述的 獲取,包括設備描述、地址設置、配置描述、字符串 描述、端點描述等等,而且隨著描述請求的進行,部分描述還會不斷的重復,直到計算機完全明白這個 USB設備究竟 具有什么功能 、該調用什么驅 動程序來對這個 設備操作。對于 市場上眾多的 Flash閃盤,我們保證讓每一條 PC 請求都能夠到達 U 盤,U 盤的每一個回應都轉發(fā)給 PC。這樣保證了直接插到PC 端能夠識別的 U 盤,使用本作品也能夠被識別。
枚舉完成之后 USB 進入數據傳輸階段,當然這些數據都是對底層 USB 控制器而言的數據,對于要對 USB 數據進行解析的 FPGA 中的 MicroBlaze 程序而言,則仍然需要將其中的數 據 分 為 三 個 類 型 : CBW 、 數 據 、 CSW 。 這 三 種 類 型 數 據 的 詳 情 請 參 考 4.3 節(jié) 。 當MicroBlaze 收到 CBW 之后就將它轉發(fā)出去,在轉發(fā)的同時判斷該 CBW 是不是一個讀寫操作的命令,如果是則代表跟在 CBW 之后的數據是直接來自 Flash 或將要寫到 Flash 中去的,那么在數據段的轉發(fā)操作之前還需要將他們送到 AES 模塊進行 CBC 模式的加解密。在數據傳輸完成之后,必須等待 USB 設備回應 CSW 表示整個會話過程完整無誤之后才能進入到下一個請求回應的處理循環(huán)中去。
7 測試與總結
7.1 總述
系統(tǒng)測試采用先局部后整體的方案,首先將各個模塊(USB 數據透傳模塊、指紋模塊、AES 加密模塊)在分離的情況下單獨測試,通過對它的各種操作來盡可能多的暴露問題,并一一解決。最后再將三者組合起來進行總體測試。
對 于硬 件測 試, 依靠 SPATARN 開發(fā) 板上 的按 鈕、 LCD、 LED 燈 來幫 助調 試。 同時RS232 串口能更加方便的將程序中產生的數據、變量實時的發(fā)送到計算機供,借助 PC 端的串口程序(Terminal v1.9b、AccessPort),硬件程序中的數據得以在 PC 上保存、分析。測試中用到的主要工具有:
1) Bus Hound 5.0。一款用于分析 PC 上 IO 數據軟件,能夠對多種協(xié)議的數據包進行截取、解析并保存。這些數據代表了在 PC 上看到的 USB 數據,與串 口發(fā)回的 USB 數據對比可以找到程序的漏洞,并作出相應的改進。
2) USB- IF Test Suite。USB 開發(fā)者論壇提供的用于 USB 標準測試的軟件,能夠查看當前設備是否符合國際標準。
3) HD Tach v3.0.4.0。用來對 USB 的傳輸速 率測試,它會對 U 盤提供大小不同的數據包,分別計算他們的傳輸速率。
4) ATTO Disk Benchmark v2.34。同樣是 USB 測速軟件,使用不同的兩款軟件可以提高測試數據的可信度。
WinHex 15.0 SR-2。用于觀察 Flash 上每一個扇區(qū)的數據變化,有效地判斷加密的正確性并評估效果。
7.2 指紋模塊的測試
指紋模塊由深圳艾菲爾公司設計生產,相關測試指標及結果均由艾菲爾公司提供。
表 7-1 指 紋模 塊 各項 指標 性能( 深圳 艾菲 爾 公司 提供)
技術指標名稱 | 數值 |
探測皮層 | 真皮層 |
認假率 FAR(實際測試值) | 0.00008% |
拒真率 FRR(實際測試值) | 0.005% |
指紋容量 | 15 枚 |
圖像分辨率 | 500dpi |
平均匹配速度 | 1 秒 |
抗靜電能力 | IEC61000-4-2 標準 15KV |
抗磨損強度高 | 1 百萬次 |
峰值耗電 | 150mA |
工作環(huán)境溫度 | -10°C 至 70°C |
最大工作濕度 | 98% |
工作電壓 | 3.3V |
尺寸 | 4.4 x 6.6 cm |
7.3 VHDL 實現的 AES 加密模塊的測試
測試方案
National Institute of Standards and Technology (NIST) 發(fā)布 AES 標準的文檔Announcing the ADVANCED ENCRYPTION STANDARD (AES) 中,以附錄的形式給出了一組 128 位密鑰的加解密數據。我 們選擇 ISE Simulator 為仿 真器,將這組數據的明文與密鑰作為 輸入,看加密后的結果是否正確。再將加密結果作為輸入,看解密后是否為原文。
測試數據
數據來自于 NIST 發(fā)布的聯(lián)邦信息處理標準(FIPS PUBS) 197 。
明文:00112233445566778899aabbccddeeff
密鑰:000102030405060708090a0b0c0d0e0f
密文:69c4e0d86a7b0430d8cdb78070b4c55a
結果分析
在 ISE Simulator 提供的可視化波形輸入編輯平臺 TBW(Test Bench Waveform)下,編輯仿真波形。其中密鑰部分:
明文部分:
加密結果:
密文為
69c4e0d86a7b0430d8cdb78070b4c55a,與文檔中給出的完全一樣,說明加密電路正確。將密文 69c4e0d86a7b0430d8cdb78070b4c55a 作為輸入,進行解密仿真,仿真結果為:
與輸入的明文一樣,說明 AES 模塊能夠進行正確的加解密操作。
下面是 ISE 中 AES 模塊編譯后的資源消耗情況如表 7-2。
表 7-2 AES資源消耗表
其中邏輯資源使用了 1688 Slices,占整個可用資源的 36%,存儲資源用了 2 塊 RAM,占全部可用量的 10%。關于 AES 的 VHDL 實現已經有了不少研究成果,在此做一個比較。電子科技大學的劉珍楨在其碩士論文《AES 加、解密算法的 FPGA 優(yōu)化設計》一文中介紹了他的設計。他的設計是基于 ATERA 公司的 Stratix 系列 FPGA 芯片,在 QUARTUSII 環(huán)境下實現的。資源消耗情況如下:
Total logic elements: 30626
Total memor y bits: 231544.
將本模塊同樣放到 QUARTUSII 環(huán)境下進行編譯,資源消耗情況如下:
通過比較發(fā)現,本模塊 在資源消耗方面有明顯的優(yōu)勢,這是以犧牲加解密速 度獲得的。
劉珍楨的設計中,每 5 個時鐘周期即可完成一次加密或解密運算,而本模塊則需要 80 個時鐘周期。本模塊在 50MHz 的系統(tǒng)時鐘下,最高可達 10MByte/s 的加解密速度,完全能夠滿足需求。由 此可 見 ,AES 模 塊 的設 計 在速 度與 資 源消 耗 上取 得了 很 好的 平 衡。 既適 當利 用 了FPGA 片上資源,也很好滿足了應用需求。
7.4 作品整合測試
將作品插到電腦 USB 端口,再將 U 盤連接到本作品。在正確輸入指紋之前,電腦不顯示 U 盤盤符。正確輸入指紋后,開始顯示盤符,電腦與 U 盤可以正常通信。傳輸速率測試結果如下表:
再將加密后的文件重新 拷貝到電腦上,打開后與原文件一樣,作 品加解密運算正確。將加密后的 U 盤直接連到電腦上,電腦無法讀寫 U 盤中的數據。
通過以上測試,作品完全能夠正確完成加解密運算,有效識別指紋,為 U 盤提供可靠的保護,完全實現了預期目標。
7.5 開發(fā)板資源資源利用情況
本 作 品 充 分 利 用 了 開 發(fā) 板 上 的 資 源 。 FPGA芯 片 、 Platform Flash 、 LCD顯 示 屏、push-button switchesHirose FX2 、expansion connector 等資源得到了合理利用,并且開發(fā)了外擴電路板。其中,FPGA 芯片內部自用利用率見下表:
8 作品功能特色與應用前景
8.1 功能特色與創(chuàng)新
8.2 技術難點
在作品的完成過程中,我們遇到并解決了以下難點:
1 USB 協(xié)議解析
2 AES 的 VHDL 實現,權衡資源利用率和加解密速度
3 磁盤分區(qū)加密技術在本作品中的應用
4 設備對各種 U 盤的通用性
8.3 應用前景
作品擁有廣闊的應用前景,能為私人、企業(yè)、政府等機構提供便捷、可靠的 U 盤安全解決方案。加密器與 U 盤相分離,減小指紋信息泄露的威脅,在需要保密的部門更便于安全上的管理,因此將大受歡迎。
評論