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