光纖通道存儲區(qū)域網(wǎng)絡(luò)上的FC加密卡設(shè)計
出處:zou132 發(fā)布于:2009-11-02 10:31:31
0引言
9.11帶來的教訓是慘痛的,尤其是那些在世貿(mào)中心的IT企業(yè),因為它們的數(shù)據(jù)損失是災難性的,這在幾年內(nèi)都會對它們的業(yè)務產(chǎn)生影響.所以企業(yè)信息數(shù)據(jù)存儲安全的重要性越來越被認可。而近年來的一些沒有技術(shù)含量的失竊事件,反而讓大眾認識到為數(shù)據(jù)加密的重要性。
目前已經(jīng)有多家廠商致力于存儲加密標準,希望讓存儲安全工具更容易和多種存儲架構(gòu)一同工作。
有關(guān)加密技術(shù)的實現(xiàn)可根據(jù)不同廠商與產(chǎn)品分成三類:基于主機、基于網(wǎng)絡(luò)(數(shù)據(jù)傳輸)以及基于磁帶機。這有點類似實現(xiàn)虛擬存儲的劃分方式。
本文所介紹的FC加密卡是基于網(wǎng)絡(luò)層的,這是在設(shè)備I/O端口外接的一個硬件加密裝置。本FC加密卡的主要功能有存儲加密、基于主機的身份、訪問控制和安全日志等,同時還可以支持多種操作系統(tǒng)的服務器主機以及FC協(xié)議,并具有安全、方便的管理配置界面,能可靠的接人到FC-SAN的應用環(huán)境。
1FC加密卡的應用環(huán)境
本FC加密卡主要用于采用光纖通道技術(shù)的FC-SAN中,可安裝在存儲服務器上的FC HBA卡和交換機/磁盤陣列FC接口之間。主要功能是完成進出磁盤陣列的SCSI數(shù)據(jù)的加解密。FC加密卡的加密密鑰采用USB KEY并以密文的形式注入,以配合主機輸入的解密密鑰將工作密鑰解密。同時也可以根據(jù)主機設(shè)定的控制策略,對進出磁盤陣列的有效數(shù)據(jù)進行加解密。本加密卡的應用方式如圖1所示。

2總體硬件設(shè)計
2.1 FC加密卡硬件設(shè)計
FC加密卡系統(tǒng)的總體結(jié)構(gòu)如圖2所示。該加密卡包含一塊加密卡硬件和相應的驅(qū)動程序以及設(shè)備管理程序,同時包含2個2 GB的FC光收發(fā)模塊,可用于連接HBA卡和磁盤陣列。此外,該加密卡還可通過PCI-E接口連接到計算機主板,然后通過設(shè)備管理程序完成設(shè)備狀態(tài)的檢測、顯示和日志記錄等功能。密鑰的注入也是設(shè)備管理程序的工作,而驅(qū)動程序則可用于完成與下層驅(qū)動程序的接口功能。本FC加密卡硬件的總體結(jié)構(gòu)如圖3所示。本加密卡主要由三部分組成:光收發(fā)器、大容量FPGA和外圍附加電路。其中光收發(fā)模塊可完成光電信號的轉(zhuǎn)換功能,設(shè)計時可采用能支持2 Gbps的FC用光收發(fā)模塊,該模塊支持熱插拔,所以可將其中的一路光收發(fā)模塊與服務器的HBA卡光接口相連,而將另一路與磁盤陣列的光接口相連。

FPGA是卡上功能重要的一個器件,用于完成加密卡數(shù)據(jù)凈荷的加解密。FPGA可選用Xilinx公司的高端FPGA—V5LX50T,F(xiàn)PGA本身能支持2 Gbps速率的串并變換高速接口。并可完成8B/10B變換,同時可提供PCI—E接口硬核。若按邏輯功能劃分,F(xiàn)PGA上主要有DMA處理模塊、密鑰交互模塊、同步與解復用模塊、幀解析模塊、密鑰管理模塊、成幀模塊、轉(zhuǎn)發(fā)調(diào)度模塊以及復用模塊。
通過DMA處理模塊可調(diào)用PCI—E IPCORE,以通過DMA數(shù)據(jù)傳輸方式實現(xiàn)主機與FPGA的數(shù)據(jù)交互。本FC加密卡主要傳輸三種數(shù)據(jù),即經(jīng)過加密的AES密鑰、解密密鑰、數(shù)據(jù)。
密鑰交互模塊主要通過與DMA處理模塊交互,來得到經(jīng)過加密的AES密鑰與解密密鑰,然后通過解密程序解出加密數(shù)據(jù)所用的AES密鑰,并存在RAM中,以供密鑰管理模塊調(diào)用。
同步與解復用模塊主要用于完成20 bit到33bit的數(shù)據(jù)轉(zhuǎn)換、字同步、去除IDLE原語。以及數(shù)據(jù)時鐘域轉(zhuǎn)換,也就是將線路時鐘數(shù)據(jù)轉(zhuǎn)換為本地時鐘數(shù)據(jù)。
幀解析模塊主要用于解析線路中傳輸?shù)脑Z序列或幀數(shù)據(jù)。通常幀中會有4種FCP信息單元。即命令服務請求(FCP_CMND)、數(shù)據(jù)傳送請求、數(shù)據(jù)傳送請求(FCP_XFER_RDY)、數(shù)據(jù)傳送工作(FCP_DATA)、命令服務響應(FCP_RSP),系統(tǒng)首先需要將幀同原語序列解析出來,然后還要將各種幀類型解析出來。
圖4所示是一個幀報頭的格式,由圖4可見。在幀頭中,有足夠的信息來解析各信息單元。其幀類型定義如表1所列。

在命令幀中可提取LUN、讀寫信息.而將其他的命令幀轉(zhuǎn)發(fā)至轉(zhuǎn)發(fā)調(diào)度模塊。并將數(shù)據(jù)送人加密模塊處理。
密鑰管理模塊的作用是在鏈路建立前完成密鑰表的建立。并在主機與FPGA交互完畢并解出AES密鑰后,將其存人RAM中。在FCP_CMND解析后,可得出讀寫信息,如果讀、寫信號任一有效或同時有效,則還應根據(jù)LUN號從RAM中提取密鑰并輸入AES加密模塊。
AES加密模塊的作用是通過收到的加密密鑰,并使甩AES-256計數(shù)器模式進行加密,然后蔣計數(shù)器值加密后送到成幀模塊。
成幀模塊可在對數(shù)據(jù)凈荷進行加,解密之前進行CRC校驗,如果接收幀正確,則在加密后重新計算一個正確的CRC;若接收幀錯誤,則在計算新的CRC值時添加錯誤的CRC。由于FCP協(xié)議中規(guī)定:在每發(fā)送完一個幀之后,發(fā)送機的RD值應保持為負。所以必須計算加/解密幀從SOF到CRC的RD值。添加一個合適的EOF。
轉(zhuǎn)發(fā)調(diào)度模塊的主要作用是在將幀解析模塊的輸出和加/解密模塊的輸出都發(fā)送到轉(zhuǎn)發(fā)調(diào)度模塊后,通過調(diào)度模塊來調(diào)度兩路信號并將其輸出至復用模塊。而且在無有效數(shù)據(jù)輸入時,它可發(fā)送IDLE原語。
復用模塊可將輸入的33bit信號轉(zhuǎn)換為20 bit信號。
外圍附加電路包括晶振、電源電路和FPGA加載芯片。其中晶振可提供高的106.25 MHz時鐘作基準時鐘,通過FPGA內(nèi)的時鐘分配電路產(chǎn)生各個模塊工作所需要的時鐘。電源電路負責從PCI-E接口接入主機的3.3 V電源,并生成FPGA所需的1 V、2.5 V電壓以供應FPGA和光模塊。
2.2 PCI-E接口控制模塊
PCI-E接口控制模塊用于完成PCI-E硬核的調(diào)用和頂層TLP包的組裝和拆分工作,為上層通信控制器提供正確的通信通道。圖5所示是PCI-E接口硬核的結(jié)構(gòu)功能框圖。

3 軟件設(shè)計
3.1 PCI-E驅(qū)動程序
PCI是一組完全規(guī)范,它定義了計算機的不同部分是如何交互的。PCI規(guī)范覆蓋了與計算機接口相關(guān)的絕大多數(shù)方面,PCI外設(shè)由一個總線號、一個設(shè)備號和一個功能號確定。
PCI或PCI-E設(shè)備上有三種地址空間:PCI的I/O空間、PCI的存儲空間和PCI的配置空間。CPU可以訪問PCI設(shè)備上的所有地址空問,其中I/O空間和存儲空間提供給設(shè)備驅(qū)動程序使用.而配置空間則由Linux內(nèi)核中的PCI初始化代碼使用。內(nèi)核在啟動時負責對所有PCI設(shè)備進行初始化,并配置好所有的PCI設(shè)備,包括中斷號以及I/O基址,然后在文件/proc/pci中列出所有找到的PCI設(shè)備,以及這些設(shè)備的參數(shù)和屬性。
Linux驅(qū)動程序通常使用結(jié)構(gòu)(struct)來表示一種設(shè)備。結(jié)構(gòu)體中的變量代表某一具體設(shè)備。該變量存放了與該設(shè)備相關(guān)的所有信息。
3.2設(shè)備驅(qū)動程序
本設(shè)計中的設(shè)備驅(qū)動程序也就是USB-Key的驅(qū)動,它類似于USB的驅(qū)動,其設(shè)計思想是在USB驅(qū)動上做一個修改和擴充。
首先應獲得LISB-Key的硬件信息,并將其填進USB驅(qū)動框架里。
Linux的USB內(nèi)核系統(tǒng)中提供了與設(shè)備驅(qū)動程序開發(fā)直接相關(guān)的數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)在整個設(shè)備驅(qū)動程序的框架中起著重大的作用。其中在
3.3設(shè)備管理程序
設(shè)備管理程序分為下面幾個部分:
(1)用戶驗證程序User_confirm()。用戶啟動設(shè)備時,要求必須插入USB—Key,并輸入用戶名和口令以進行身份,通過后,設(shè)備才能啟動。
(2)獲得USB—Key屬性以及信息的程序Usb—key_get_info()。用戶調(diào)用該程序可以獲得USB—Key的基本信息和存儲區(qū)間的情況。
(3)對USB-Key的操作程序模塊Usb-key execute(),該模塊主要完成對存儲密鑰的讀寫、更改和刪除操作,并提供相應的管理界面。
(4)安全日志模塊Security_diary(),安全日志可記錄所有的訪問信息,包括成功或不成功。用戶可以通過操作來查看這些信息。
4仿真與測試
本方案可以verilog語言來實現(xiàn),可選用Xilinx公司的vitex5 lx50T芯片。測試可采用環(huán)回方式并通過加密后的數(shù)據(jù)直接環(huán)回至解密模塊,這樣便于數(shù)據(jù)比較。圖6所示是本設(shè)計的FC加密卡的邏輯仿真圖。圖中,rbca為線路輸入時鐘,rxda為線路輸入數(shù)據(jù)。通常先輸入原語序列以用于建立鏈路,然后輸入命令幀,再提取lun號與讀寫使能,然后輸入數(shù)據(jù)幀。

對數(shù)據(jù)幀進行加密后,txda為加密后的數(shù)據(jù):txda是數(shù)據(jù)加密后環(huán)回至解密模塊的數(shù)據(jù)。經(jīng)過測試,輸入的數(shù)據(jù)在經(jīng)過模塊加密處理后,能實現(xiàn)正確的轉(zhuǎn)發(fā)調(diào)度以及解密處理,從而實現(xiàn)了預期的目的。
現(xiàn)階段的測試環(huán)境包括兩臺PC機,一個HBA卡,一個交換機,一塊ML555開發(fā)板。測試時,先將程序生成的bit文件到開發(fā)板中,再由主機通過PCI-E接口向FPGA寫入加密后的AES密鑰和加密密鑰,然后由HBA卡通過光纖把數(shù)據(jù)發(fā)送到開發(fā)板,經(jīng)過處理后再轉(zhuǎn)發(fā)回HBA卡,由HBA卡的指示燈以及chipscope進行數(shù)據(jù)顯示。該方法能正確的處理數(shù)據(jù),并能觀察到明文和密文的區(qū)別。
5 結(jié)束語
本設(shè)計在經(jīng)過基本的測試后證明:其能實現(xiàn)對類磁盤陣列數(shù)據(jù)的加密。在加密卡和磁盤陣列中傳輸?shù)撵o態(tài)數(shù)據(jù)都是以密文的形式存在。由于密鑰與加密設(shè)備是分開管理的,因此,即使被攻擊者*到線路數(shù)據(jù)或者盜取了磁盤陣列,也無法獲得有用信息,有效的保護了數(shù)據(jù)。
版權(quán)與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 工業(yè)5G技術(shù)在智能制造中的應用與實踐解析2025/12/31 10:57:21
- 工業(yè)以太網(wǎng)交換機選型與現(xiàn)場應用技術(shù)指南2025/12/18 10:48:14
- 無線傳輸電路基礎(chǔ),射頻前端設(shè)計、天線匹配與鏈路預算計算2025/10/27 13:55:50
- ASK 解調(diào)的核心要點與實現(xiàn)方式2025/9/5 16:46:17
- 雙偶極子天線:結(jié)構(gòu)、特性與應用全解析2025/9/3 10:29:21









