本發(fā)明屬于信息安全技術(shù)領(lǐng)域,具體涉及一種高速網(wǎng)絡(luò)存貯加密機(jī)。
背景技術(shù):
在存儲領(lǐng)域中,F(xiàn)C SAN(光纖存儲局域網(wǎng))基于其先天的高性能、穩(wěn)定性一直占據(jù)著大部分市場。隨著近年來各種信息安全事件的爆發(fā),人們迫切需要有一種途徑來保障自己的數(shù)據(jù)安全,尤其是像銀行等單位。針對用戶的FC存儲網(wǎng)絡(luò)系統(tǒng)的應(yīng)用環(huán)境、FC協(xié)議特點(diǎn)和高可用性需求,如何穩(wěn)定可靠、安全可控、快速高效地解決用戶存儲網(wǎng)絡(luò)數(shù)據(jù)的保密問題以及密鑰管理問題,正是研制高速網(wǎng)絡(luò)存貯加密機(jī)的背景和意義所在。高速網(wǎng)絡(luò)存儲加密機(jī)主要通過一種基于FC協(xié)議的數(shù)據(jù)加解密機(jī)制,解析FC SAN網(wǎng)絡(luò)中的應(yīng)用服務(wù)器(以下稱服務(wù)器端)和磁盤陣列(以下稱存儲器端)之間的FC協(xié)議,對于服務(wù)器端與存儲器端之間傳輸?shù)臄?shù)據(jù)進(jìn)行加解密。網(wǎng)絡(luò)存儲加密機(jī)采用透明傳輸?shù)姆绞郊尤刖W(wǎng)絡(luò),除提供上述實(shí)時(shí)加解密FCP協(xié)議中的扇區(qū)數(shù)據(jù)的主要功能,還支持高可用性、日志審計(jì)、磁盤管理、密鑰管理、訪問控制等功能。設(shè)計(jì)先進(jìn)、集成合理、穩(wěn)定可靠、安全可控、快速高效、安全強(qiáng)度高,是符合國家商用密碼技術(shù)規(guī)范及管理要求的、可用于FC網(wǎng)絡(luò)存儲加解密的、具有自主知識產(chǎn)權(quán)的安全保密設(shè)備。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問題,本發(fā)明提供一種高速網(wǎng)絡(luò)存貯加密機(jī),所述加密機(jī)用于完成應(yīng)用服務(wù)器從磁盤陣列讀取數(shù)據(jù)的解密工作、應(yīng)用服務(wù)器向磁盤陣列寫入數(shù)據(jù)的加密工作和接受密鑰管理中心的統(tǒng)一管理,所述加密機(jī)包括接口板FPGA、接口板CPU、XAUI配置通路和XAUI數(shù)據(jù)通路,所述接口板FPGA和接口板CPU通過XAUI配置通路和XAUI數(shù)據(jù)通路進(jìn)行連接;
進(jìn)一步地,所述接口板FPGA包括接口模塊、合路器模塊、協(xié)議解析模塊、磁盤映射表模塊、會話表模塊、上行模塊、下行模塊、接口板FPGA配置通路、異常通路和XAUI收發(fā)模塊;
接口模塊,所述接口模塊用于接收和發(fā)送FC幀;
合路器模塊,所述合路器模塊用于數(shù)據(jù)幀的分路和合路;
協(xié)議解析模塊,所述協(xié)議解析模塊用于解析FC-2層的FC幀和FC-4層的FCP幀;
磁盤映射表模塊,所述磁盤映射表模塊用于根據(jù)磁盤陣列的FCID查詢對應(yīng)的設(shè)備編號;
會話表模塊,所述會話表模塊用于維護(hù)以{S_ID,D_ID,OX_ID}為會話關(guān)鍵字和以{LUN,LBA,Device_ID}會話信息的會話表,提供創(chuàng)建,查找,刪除的接口;
上行模塊,所述上行模塊用于更新會話表并將FC數(shù)據(jù)幀按512字節(jié)進(jìn)行拆分后封裝自定義的PDU頭,其它FC幀直接封裝自定義的PDU頭,連接XAUI收發(fā)模塊并進(jìn)行發(fā)送;
下行模塊,所述下行模塊用于將數(shù)據(jù)從自定義的PDU報(bào)文中取出并合并為一個完整的FC幀,按照token大小,保序發(fā)送至合路器模塊;
接口板FPGA配置通路,所述接口板FPGA配置通路用于接收接口板CPU的配置管理命令,并給予回復(fù);
異常通路,所述異常通路用于將需要由接口板CPU處理的幀異常給接口板CPU,并接收接口板CPU處理的結(jié)果;
XAUI收發(fā)模塊,所述XAUI收發(fā)模塊用于將封裝好的PDU報(bào)文發(fā)送到加解密板,同時(shí)計(jì)算CRC校驗(yàn)和;并從加解密板接收自定義PDU報(bào)文,同時(shí)檢查CRC校驗(yàn)和;
進(jìn)一步地,所述合路器模塊一端通過接口模塊連接FC接口,另一端分別連接協(xié)議解析模塊和下行模塊,所述協(xié)議解析模塊還分別連接加解密模塊、上行模塊、磁盤映射表模塊、會話表模塊和異常通路,所述異常通路一端連接接口板CPU,另一端分別連接加解密模塊和協(xié)議解析模塊;
進(jìn)一步地,所述接口板CPU包括Web配置界面、Web服務(wù)程序、Web配置庫、接口板守護(hù)程序、FPGA配置庫、FPGA通信庫、FPGA加載接口、密鑰管理和身份認(rèn)證;Web配置頁面,所述Web配置頁面通過瀏覽器進(jìn)行系統(tǒng)配置,組成方式包括HTML網(wǎng)頁、JavaScript腳本、CSS樣式以及圖片;
Web服務(wù)程序,所述Web服務(wù)程序用于為URL注冊不同的GET或POST處理函數(shù),所述處理函數(shù)調(diào)用Web配置庫,與接口板守護(hù)程序進(jìn)行通信;
Web配置庫,所述Web配置庫用于提供動態(tài)庫供Web服務(wù)程序調(diào)用;
接口板守護(hù)程序,所述接口板守護(hù)程序用于將來自UDS客戶端的請求轉(zhuǎn)發(fā)到各個模塊進(jìn)行處理,并返回其處理結(jié)果;
FPGA配置庫,所述FPGA配置庫用于封裝FPGA的配置處理接口,定義FPGA中給出的寄存器接口;
FPGA通信庫,所述FPGA通信庫用于提供接口板CPU與FPGA之間的通訊接口;
FPGA加載接口,所述FPGA加載接口用于通過從串口加載FPGA;
密鑰管理,所述密鑰管理用于將加密機(jī)的設(shè)備根密鑰由KMC生成后分為三份S1,S2,S3,其中S1在生產(chǎn)時(shí)固化在加密機(jī)內(nèi)部的安全芯片中;S2保存在USB 分量key1中;S3保存在USB 分量key2中;
身份認(rèn)證,所述身份認(rèn)證通過密鑰管理生成的密鑰進(jìn)行身份認(rèn)證,使加密機(jī)進(jìn)入正常工作狀態(tài);
進(jìn)一步地,所述接口模塊通過GTX核從FC接口接收和發(fā)送FC幀,具體包括識別幀和原語信號幀、幀有效長度判斷、幀起始和結(jié)束判斷、8B/10B位寬轉(zhuǎn)換、網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換、發(fā)送方向插入idle序列、CRC校驗(yàn)及其計(jì)算和對接收的幀分配令牌;
進(jìn)一步地,所述協(xié)議解析模塊解析過程具體包括FCP讀命令幀和寫命令幀、FCP讀數(shù)據(jù)幀和寫數(shù)據(jù)幀、FCP讀響應(yīng)幀和寫響應(yīng)幀、FLOGI幀及其回復(fù)幀F(xiàn)LOGI_ACC、PLOGI幀及其回復(fù)幀PLOGI_ACC,所述協(xié)議解析模塊從每個關(guān)心的FC幀中提取S_ID,D_ID,OX_ID信息,并從FCP讀、寫命令幀中提取LUN,LBA信息,供后續(xù)操作磁盤映射表、會話表及封裝自定義PDU;
進(jìn)一步地,所述Web配置頁面具體包括系統(tǒng)狀態(tài)顯示、磁盤陣列管理、安全策略配置、通信接口管理、高可用性設(shè)置、系統(tǒng)設(shè)置、幫助和技術(shù)支持文檔;
進(jìn)一步地,所述接口板守護(hù)程序中來自UDS客戶端的請求包括到CPU系統(tǒng)的配置請求、到FPGA的配置請求和到密管中心的請求數(shù)據(jù);
進(jìn)一步地,所述寄存器接口包括端口的使能寄存器、端口統(tǒng)計(jì)的讀寄存器和密鑰的寫配置接口;
進(jìn)一步地,所述FPGA通信庫通過Tilera CPU的mPIPE用戶態(tài)接口完成XAUI接口的數(shù)據(jù)收發(fā);
本發(fā)明的有益效果如下:
1)采用jHash作為哈希算法,使用4GB的DDR3,總的哈希地址為64M個,每一個hash地址存儲2條,即可以沖突1次,最多支持128M條會話;
2)Web配置庫降低了配置頁面和接口板守護(hù)程序的耦合度,在增加配置系統(tǒng)功能時(shí)非常方便;
3)本發(fā)明采取軟硬件結(jié)合的方式,硬件完成所有FCP的數(shù)據(jù)幀轉(zhuǎn)發(fā)、加解密,軟件完成配置和管理;
4)FPGA內(nèi)部采取多條64位突發(fā)流水線,根據(jù)任務(wù)的不同進(jìn)行獨(dú)立突發(fā)處理,工序節(jié)點(diǎn)合成結(jié)果,有效的解決了接入處理能力;
5)加密機(jī)使用接口FPGA做數(shù)據(jù)流調(diào)度,實(shí)現(xiàn)了數(shù)據(jù)均衡算法,在多個加密芯片芯片間平衡分配數(shù)據(jù)流,最大限度發(fā)揮多加密芯片的處理能力。
附圖說明
圖1為本發(fā)明所述加密機(jī)的接口板FPGA結(jié)構(gòu)圖;
圖2為本發(fā)明所述加密機(jī)的接口板CPU結(jié)構(gòu)圖;
圖3為本發(fā)明所述加密機(jī)硬件結(jié)構(gòu)圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)描述。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,并不用于限定本發(fā)明。相反,本發(fā)明涵蓋任何由權(quán)利要求定義的在本發(fā)明的精髓和范圍上做的替代、修改、等效方法以及方案。進(jìn)一步,為了使公眾對本發(fā)明有更好的了解,在下文對本發(fā)明的細(xì)節(jié)描述中,詳盡描述了一些特定的細(xì)節(jié)部分。對本領(lǐng)域技術(shù)人員來說沒有這些細(xì)節(jié)部分的描述也可以完全理解本發(fā)明。
下面結(jié)合附圖和具體實(shí)施例對本發(fā)明作進(jìn)一步說明,但不作為對本發(fā)明的限定。下面為本發(fā)明的舉出最佳實(shí)施例:
如圖1-圖3所示,本發(fā)明提供一種高速網(wǎng)絡(luò)存貯加密機(jī),所述加密機(jī)用于完成應(yīng)用服務(wù)器從磁盤陣列讀取數(shù)據(jù)的解密工作、應(yīng)用服務(wù)器向磁盤陣列寫入數(shù)據(jù)的加密工作和接受密鑰管理中心的統(tǒng)一管理,所述加密機(jī)包括接口板FPGA、接口板CPU、XAUI配置通路和XAUI數(shù)據(jù)通路,所述接口板FPGA和接口板CPU通過XAUI配置通路和XAUI數(shù)據(jù)通路進(jìn)行連接,所述接口板FPGA包括接口模塊、合路器模塊、協(xié)議解析模塊、磁盤映射表模塊、會話表模塊、上行模塊、下行模塊、接口板FPGA配置通路、異常通路和XAUI收發(fā)模塊;
接口模塊,所述接口模塊用于接收和發(fā)送FC幀;
合路器模塊,所述合路器模塊用于數(shù)據(jù)幀的分路和合路;
協(xié)議解析模塊,所述協(xié)議解析模塊用于解析FC-2層的FC幀和FC-4層的FCP幀;
磁盤映射表模塊,所述磁盤映射表模塊用于根據(jù)磁盤陣列的FCID查詢對應(yīng)的設(shè)備編號;
會話表模塊,所述會話表模塊用于維護(hù)以{S_ID,D_ID,OX_ID}為會話關(guān)鍵字和以{LUN,LBA,Device_ID}會話信息的會話表,提供創(chuàng)建,查找,刪除的接口;
上行模塊,所述上行模塊用于更新會話表并將FC數(shù)據(jù)幀按512字節(jié)進(jìn)行拆分后封裝自定義的PDU頭,其它FC幀直接封裝自定義的PDU頭,連接XAUI收發(fā)模塊并進(jìn)行發(fā)送;
下行模塊,所述下行模塊用于將數(shù)據(jù)從自定義的PDU報(bào)文中取出并合并為一個完整的FC幀,按照token大小,保序發(fā)送至合路器模塊;
接口板FPGA配置通路,所述接口板FPGA配置通路用于接收接口板CPU的配置管理命令,并給予回復(fù);
異常通路,所述異常通路用于將需要由接口板CPU處理的幀異常給接口板CPU,并接收接口板CPU處理的結(jié)果;
XAUI收發(fā)模塊,所述XAUI收發(fā)模塊用于將封裝好的PDU報(bào)文發(fā)送到加解密板,同時(shí)計(jì)算CRC校驗(yàn)和;并從加解密板接收自定義PDU報(bào)文,同時(shí)檢查CRC校驗(yàn)和。
所述合路器模塊一端通過接口模塊連接FC接口,另一端分別連接協(xié)議解析模塊和下行模塊,所述協(xié)議解析模塊還分別連接加解密模塊、上行模塊、磁盤映射表模塊、會話表模塊和異常通路,所述異常通路一端連接接口板CPU,另一端分別連接加解密模塊和協(xié)議解析模塊所述接口板CPU包括Web配置界面、Web服務(wù)程序、Web配置庫、接口板守護(hù)程序、FPGA配置庫、FPGA通信庫、FPGA加載接口、密鑰管理和身份認(rèn)證;
Web配置頁面,所述Web配置頁面通過瀏覽器進(jìn)行系統(tǒng)配置,組成方式包括HTML網(wǎng)頁、JavaScript腳本、CSS樣式以及圖片。
Web服務(wù)程序,所述Web服務(wù)程序用于為URL注冊不同的GET或POST處理函數(shù),所述處理函數(shù)調(diào)用Web配置庫,與接口板守護(hù)程序進(jìn)行通信;
Web配置庫,所述Web配置庫用于提供動態(tài)庫供Web服務(wù)程序調(diào)用;
接口板守護(hù)程序,所述接口板守護(hù)程序用于將來自UDS客戶端的請求轉(zhuǎn)發(fā)到各個模塊進(jìn)行處理,并返回其處理結(jié)果;
FPGA配置庫,所述FPGA配置庫用于封裝FPGA的配置處理接口,定義FPGA中給出的寄存器接口;
FPGA通信庫,所述FPGA通信庫用于提供接口板CPU與FPGA之間的通訊接口;
FPGA加載接口,所述FPGA加載接口用于通過從串口加載FPGA;
密鑰管理,所述密鑰管理用于將加密機(jī)的設(shè)備根密鑰由KMC生成后分為三份S1,S2,S3,其中S1在生產(chǎn)時(shí)固化在加密機(jī)內(nèi)部的安全芯片中;S2保存在USB 分量key1中;S3保存在USB 分量key2中;
身份認(rèn)證,所述身份認(rèn)證通過密鑰管理生成的密鑰進(jìn)行身份認(rèn)證,使加密機(jī)進(jìn)入正常工作狀態(tài),所述接口模塊通過GTX核從FC接口接收和發(fā)送FC幀,具體包括識別幀和原語信號幀、幀有效長度判斷、幀起始和結(jié)束判斷、8B/10B位寬轉(zhuǎn)換、網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換、發(fā)送方向插入idle序列、CRC校驗(yàn)及其計(jì)算和對接收的幀分配令牌,所述協(xié)議解析模塊解析過程具體包括FCP讀命令幀和寫命令幀、FCP讀數(shù)據(jù)幀和寫數(shù)據(jù)幀、FCP讀響應(yīng)幀和寫響應(yīng)幀、FLOGI幀及其回復(fù)幀F(xiàn)LOGI_ACC、PLOGI幀及其回復(fù)幀PLOGI_ACC,所述協(xié)議解析模塊從每個關(guān)心的FC幀中提取S_ID,D_ID,OX_ID信息,并從FCP讀、寫命令幀中提取LUN,LBA信息,供后續(xù)操作磁盤映射表、會話表及封裝自定義PDU,所述Web配置頁面具體包括系統(tǒng)狀態(tài)顯示、磁盤陣列管理、安全策略配置、通信接口管理、高可用性設(shè)置、系統(tǒng)設(shè)置、幫助和技術(shù)支持文檔,所述接口板守護(hù)程序中來自UDS客戶端的請求包括到CPU系統(tǒng)的配置請求、到FPGA的配置請求和到密管中心的請求數(shù)據(jù),所述寄存器接口包括端口的使能寄存器、端口統(tǒng)計(jì)的讀寄存器和密鑰的寫配置接口,所述FPGA通信庫通過Tilera CPU的mPIPE用戶態(tài)接口完成XAUI接口的數(shù)據(jù)收發(fā)。
本發(fā)明所述網(wǎng)絡(luò)存儲加密機(jī)的CPU軟件系統(tǒng)主要由Web配置界面、Web服務(wù)程序、Web配置庫、接口板守護(hù)程序、FPGA配置庫、FPGA通信庫、FPGA加載接口、密鑰管理、身份認(rèn)證等組成。與硬件配合實(shí)現(xiàn)本節(jié)所述其他的功能。
所述Web配置頁面模塊通過瀏覽器(IE、Firefox、Chrome等)進(jìn)行系統(tǒng)配置,由HTML網(wǎng)頁和相關(guān)JavaScript腳本、CSS樣式、圖片等組成。配置頁面主要功能包括系統(tǒng)狀態(tài)顯示、磁盤陣列管理、安全策略配置、通信接口管理、高可用性設(shè)置、系統(tǒng)設(shè)置等,還包括其它一些幫助和技術(shù)支持文檔。
所述Web服務(wù)程序由一系列Lua模塊組成,包括copas,coxpcall,lpeg,luafilesystem,luajson,luasocket,luasql,orbit,wsapi,xavante等。Web服務(wù)程序根據(jù)瀏覽器請求的地址以及上傳的數(shù)據(jù)調(diào)用不同的處理函數(shù),返回HTML頁面供瀏覽器顯示。Web服務(wù)器程序?yàn)槊總€URL注冊不同的GET或POST處理函數(shù),每個處理函數(shù)會進(jìn)一步調(diào)用Web配置庫,與接口板守護(hù)程序進(jìn)行通信。
所述Web配置庫提供動態(tài)庫供Web服務(wù)程序調(diào)用,該動態(tài)庫將每個接口函數(shù)封裝為一個Lua可以識別的命令,并明確地定義了接口的輸入輸出參數(shù)。Web服務(wù)程序在接收到瀏覽器的請求后,在Web服務(wù)程序中調(diào)用動態(tài)庫中封裝的命令,然后將返回結(jié)果通過HTML的形式返回給瀏覽器。Web配置庫通過UDS(Unix Domain Socket)與接口板守護(hù)進(jìn)程進(jìn)行通信。本模塊降低了配置頁面和接口板守護(hù)程序的耦合度,在增加配置系統(tǒng)功能時(shí)非常方便。
運(yùn)行在所述接口板CPU上的后臺守護(hù)進(jìn)程,是所有狀態(tài)和命令的收集和轉(zhuǎn)發(fā)中心,屬于總控樞紐守護(hù)進(jìn)程。該程序?qū)碜訳DS客戶端的請求轉(zhuǎn)發(fā)到各個模塊進(jìn)行處理,并返回其處理結(jié)果。主要包括到CPU系統(tǒng)的配置請求、到FPGA的配置請求、到密管中心的請求數(shù)據(jù)等。另外還包括HA模塊和來自FPGA的異常幀(主要有FLOGI、PLOGI、ACC幀及Debug幀)處理模塊。
所述FPGA配置庫封裝FPGA的配置處理接口,定義了FPGA中給出的所有寄存器接口,例如端口的使能寄存器、端口統(tǒng)計(jì)的讀寄存器、密鑰的寫配置接口等。
所述FPGA通信庫提供與FPGA之間的通訊接口,包括所有配置報(bào)文請求和回復(fù)及異常報(bào)文的接收。該模塊采用Tilera CPU提供的mPIPE用戶態(tài)接口來完成XAUI接口的數(shù)據(jù)收發(fā)。
所述FPGA加載接口實(shí)現(xiàn)了通過從串口加載FPGA的功能。
密鑰管理:網(wǎng)絡(luò)存儲加密機(jī)的設(shè)備根密鑰由KMC生成后分為三份S1,S2,S3,其中S1在生產(chǎn)時(shí)固化在網(wǎng)絡(luò)存儲加密機(jī)內(nèi)部的安全芯片中,不可銷毀也不可更新;S2保存在USB 分量key1中;S3保存在USB 分量key2中。網(wǎng)絡(luò)存儲加密機(jī)設(shè)備身份密鑰由自己生成也可以通過USB key注入,其中私鑰保存在安全芯片F(xiàn)LASH中,公鑰可以通過USB接口或配置管理口導(dǎo)出。網(wǎng)絡(luò)存儲加密機(jī)工作密鑰由自己生成也可以通過USB key注入,用戶在添加磁盤陣列LUN信息時(shí),加密機(jī)調(diào)用安全芯片的密鑰獲取接口,安全芯片從兩個WNG9隨機(jī)數(shù)發(fā)生器獲取兩個隨機(jī)數(shù),將兩個隨機(jī)數(shù)的異或結(jié)果作為LUN的工作密鑰,然后使用設(shè)備根密鑰進(jìn)行加密后返回給加密機(jī),最后存儲到數(shù)據(jù)庫中。
身份認(rèn)證:網(wǎng)絡(luò)存儲加密機(jī)上電后,CPU上的Linux操作系統(tǒng)立即加載啟動,Linux操作系統(tǒng)起來后并不下載FPGA程序,檢測USB分量Key1是否在線。用戶插入U(xiǎn)SB分量Key1之后,Linux操作系統(tǒng)從分量key1中獲取設(shè)備公鑰,將一段隨機(jī)數(shù)使用設(shè)備身份密鑰私鑰進(jìn)行簽名后的簽名值使用USB分量Key1中的設(shè)備公鑰對該段隨機(jī)數(shù)進(jìn)行驗(yàn)簽,查看驗(yàn)簽結(jié)果;若驗(yàn)簽成功,從USB分量key1中獲取設(shè)備根密鑰分量S2。
USB分量Key1驗(yàn)證成功后必須在5分鐘內(nèi)插入U(xiǎn)SB分量Key2,Linux操作系統(tǒng)從USB分量Key2中獲取設(shè)備公鑰,將一段隨機(jī)數(shù)使用設(shè)備身份密鑰私鑰進(jìn)行簽名后的簽名值使用USB分量Key2中的設(shè)備公鑰進(jìn)行驗(yàn)簽;若驗(yàn)簽成功,從USB分量Key2中獲取設(shè)備根密鑰分量S3,然后比較通過三部分設(shè)備根密鑰計(jì)算出來的 SHA256 摘要與 FLASH中的 SHA256 摘要,如果不相等則認(rèn)證失敗。
認(rèn)證成功后,將FPGA程序(密文)使用設(shè)備根密鑰進(jìn)行解密,得到可用的FPGA程序,然后再進(jìn)行從串加載。加密機(jī)進(jìn)入正常工作狀態(tài)。
接口模塊采用GTX核實(shí)現(xiàn)從FC接口接收和發(fā)送FC幀,主要功能包括識別幀和原語信號幀(primitive signal)、幀有效長度判斷、幀起始和結(jié)束判斷(傳輸字校驗(yàn))、8B/10B位寬轉(zhuǎn)換、網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換、發(fā)送方向插入idle序列、CRC校驗(yàn)及其計(jì)算、對接收的幀分配令牌(用于幀保序發(fā)送)等功能。
合路器模塊實(shí)現(xiàn)數(shù)據(jù)幀的分路和合路功能,將來自接口模塊、下行模塊的幀發(fā)送給其它模塊。
協(xié)議解析模塊用于解析FC-2層的FC幀和FC-4層的FCP幀。識別出加解密需要的FC幀(FCP讀命令幀和寫命令幀、FCP讀數(shù)據(jù)幀和寫數(shù)據(jù)幀、FCP讀響應(yīng)幀和寫響應(yīng)幀、FLOGI幀及其回復(fù)幀F(xiàn)LOGI_ACC、PLOGI幀及其回復(fù)幀PLOGI_ACC),不再此列的所有FC幀直接透傳。
協(xié)議解析模塊從每個關(guān)心的FC幀中提取S_ID,D_ID,OX_ID信息,并需要從FCP讀、寫命令幀中提取LUN,LBA信息,供后續(xù)操作磁盤映射表、會話表及封裝自定義PDU。
磁盤映射表模塊根據(jù)磁盤陣列的FCID查詢對應(yīng)的設(shè)備編號。內(nèi)外網(wǎng)接口板CPU軟件通過用戶配置的磁盤描述表,以及從FLOGI_ACC或PLOGI_ACC幀中解析出來的磁盤陣列WWNN和FCID,得出磁盤陣列的FCID和WWNN的映射關(guān)系。
會話表模塊維護(hù)以{S_ID,D_ID,OX_ID}為會話關(guān)鍵字和以{LUN,LBA,Device_ID}會話信息的會話表,提供創(chuàng)建,查找,刪除的接口。采用jHash作為哈希算法,使用4GB的DDR3,總的哈希地址為64M個,每一個hash地址存儲2條,即可以沖突1次,最多支持128M條會話。
創(chuàng)建會話時(shí)先拿對應(yīng)地址的時(shí)間信息與當(dāng)前時(shí)間作比較,如果該會話超時(shí)則直接覆蓋;如果未超時(shí),則創(chuàng)建失敗。查詢會話時(shí)直接返回對應(yīng)地址中的LUN,LBA,Device_ID信息即可。
上行模塊,在此模塊更新會話表(同一會話表1s更新一次,超時(shí)時(shí)間設(shè)置為2s),然后將FC數(shù)據(jù)幀按512字節(jié)進(jìn)行拆分后封裝自定義的PDU頭,其它FC幀直接封裝自定義的PDU頭,交給XAUI收發(fā)模塊進(jìn)行發(fā)送。
下行模塊,在此模塊將數(shù)據(jù)從自定義的PDU報(bào)文中取出并合并為一個完整的FC幀,按照token大小,保序發(fā)送至合路模塊。
配置通路接收來自接口板CPU的配置管理請求,并給予回復(fù)。
異常通路將需要由接口板CPU處理的幀異常給接口板CPU,并接收CPU處理的結(jié)果。
XAUI收發(fā)模塊將封裝好的PDU報(bào)文發(fā)送到加解密板,同時(shí)計(jì)算CRC校驗(yàn)和;并從加解密板接收自定義PDU報(bào)文,同時(shí)檢查CRC校驗(yàn)和。
本發(fā)明所述加密機(jī)數(shù)據(jù)加密方法具體如下:
在磁盤寫的過程中,寫命令和寫數(shù)據(jù)在設(shè)備內(nèi)部都是由接口板FPGA外網(wǎng)接收后,發(fā)送到加解密模塊,對需要加密的數(shù)據(jù)進(jìn)行加密后,再發(fā)送到接口板FPGA內(nèi)網(wǎng)。其對應(yīng)的會話記錄在外網(wǎng)接口板。該流程主要分為以下幾個步驟:
1)服務(wù)器發(fā)送FCP_CMMD寫命令幀。
2)接口板FPGA外網(wǎng)的接口模塊接收到FCP_CMMD寫命令幀后,通過合路器發(fā)送到協(xié)議解析模塊。
3)接口板FPGA外網(wǎng)在協(xié)議解析模塊識別該幀為FCP_CMMD寫命令幀,并提取幀頭中的S_ID,D_ID,OX_ID信息,以及FC幀載荷中的LUN和LBA信息。
4)接口板FPGA外網(wǎng)在磁盤映射表模塊使用D_ID查找相應(yīng)的Device_ID。
5)接口板FPGA外網(wǎng)在會話表模塊以{S_ID,D_ID,OX_ID}為關(guān)鍵字創(chuàng)建一條會話,同時(shí)在會話中記錄{LUN,LBA,Device_ID}信息。
6)接口板FPGA外網(wǎng)在上行模塊將FCP_CMMD寫命令幀使用自定義PDU封裝后交給XAUI收發(fā)模塊,最后發(fā)送到加解密模塊。
7)加解密模塊將該P(yáng)DU報(bào)文透傳發(fā)送到接口板FPGA內(nèi)網(wǎng)。
8)接口板FPGA內(nèi)網(wǎng)的XAUI收發(fā)模塊從加解密模塊收到該P(yáng)DU報(bào)文后,交給下行模塊處理。
9)接口板FPGA內(nèi)網(wǎng)的下行模塊從PDU報(bào)文中取出FCP_CMMD寫命令幀后,通過合路器發(fā)送到接口模塊,最后發(fā)送到磁盤陣列。
10)磁盤陣列回復(fù)FCP_XFER_RDY傳輸準(zhǔn)備幀。
11)接口板FPGA內(nèi)網(wǎng)的接口模塊接收到FCP_XFER_RDY傳輸準(zhǔn)備幀后,通過合路器發(fā)送到協(xié)議解析模塊。
12)接口板FPGA內(nèi)網(wǎng)的協(xié)議解析模塊識別該幀為FCP_XFER_RDY傳輸準(zhǔn)備幀,然后發(fā)送到上行模塊。
13)接口板FPGA內(nèi)網(wǎng)的上行模塊將FCP_XFER_RDY幀使用自定義PDU進(jìn)行封裝,發(fā)送到XAUI收發(fā)模塊,最后發(fā)送到加解密模塊。
14)加解密模塊將該P(yáng)DU報(bào)文透傳發(fā)送到接口板FPGA外網(wǎng)。
15)接口板FPGA外網(wǎng)的XAUI收發(fā)模塊從加解密模塊收到該P(yáng)DU報(bào)文后,交給下行模塊處理。
16)接口板FPGA外網(wǎng)的下行模塊從PDU報(bào)文中取出FCP_XFER_RDY傳輸準(zhǔn)備幀后,通過合路器發(fā)送到接口模塊,最后發(fā)送到服務(wù)器。
17)服務(wù)器接收到FCP_XFER_RDY傳輸準(zhǔn)備幀之后,發(fā)送FCP_DATA寫數(shù)據(jù)幀。
18)接口板FPGA外網(wǎng)的接口模塊接收到FCP_DATA寫數(shù)據(jù)幀后,通過合路器發(fā)送到協(xié)議解析模塊。
19)接口板FPGA外網(wǎng)的協(xié)議解析模塊識別該幀為FCP_DATA寫數(shù)據(jù)幀,并提取幀頭中的S_ID,D_ID,OX_ID信息。
20)接口板FPGA外網(wǎng)在會話表模塊以{S_ID,D_ID,OX_ID}為關(guān)鍵字進(jìn)行查找,查找到會話后,獲得會話信息{LUN,LBA, Device_ID}。
21)接口板FPGA外網(wǎng)在上行模塊將FCP_DATA寫數(shù)據(jù)幀按512字節(jié)進(jìn)行拆分,將每個片段使用自定義PDU進(jìn)行封裝,發(fā)送到XAUI收發(fā)模塊,最后發(fā)送到加解密模塊。
22)加解密模塊對PDU報(bào)文中的數(shù)據(jù)進(jìn)行加密后,發(fā)送到接口板FPGA內(nèi)網(wǎng)。
23)接口板FPGA內(nèi)網(wǎng)的XAUI收發(fā)模塊從加解密模塊收到該P(yáng)DU報(bào)文后,交給下行模塊處理。
24)接口板FPGA內(nèi)網(wǎng)的下行模塊從PDU報(bào)文中取出FCP_DATA寫數(shù)據(jù)幀,如果不是最后一個分片,將該分片緩存后不再進(jìn)行后續(xù)流程的處理。
25)接口板FPGA內(nèi)網(wǎng)的下行模塊接收到最后一個分片后將所有FCP_DATA片段拼接為一個完整的FCP_DATA寫數(shù)據(jù)幀,然后通過合路器發(fā)送到接口模塊,最后發(fā)送到磁盤陣列。
26)反復(fù)步驟17-25,處理多個FCP_DATA寫數(shù)據(jù)幀。
27)磁盤陣列發(fā)送FCP_RSP寫響應(yīng)幀。
28)接口板FPGA內(nèi)網(wǎng)的接口模塊接收到FCP_RSP寫響應(yīng)幀后,通過合路器發(fā)送到協(xié)議解析模塊。
29)接口板FPGA內(nèi)網(wǎng)的協(xié)議解析模塊識別該幀為FCP_RSP寫響應(yīng)幀,并提取幀頭中的S_ID,D_ID,OX_ID信息。
30)接口板FPGA內(nèi)網(wǎng)在會話表模塊以{S_ID,D_ID,OX_ID}為關(guān)鍵字進(jìn)行關(guān)閉連接的操作。
31)接口板FPGA內(nèi)網(wǎng)的上行模塊將FCP_RSP寫響應(yīng)幀使用自定義PDU進(jìn)行封裝,發(fā)送到XAUI收發(fā)模塊,最后發(fā)送到加解密模塊。
32)加解密模塊將該P(yáng)DU報(bào)文透傳發(fā)送到接口板FPGA外網(wǎng)。
33)接口板FPGA外網(wǎng)的XAUI收發(fā)模塊從加解密模塊收到該P(yáng)DU報(bào)文后,交給下行模塊處理。
34)接口板FPGA外網(wǎng)的下行模塊從PDU報(bào)文中取出FCP_RSP寫響應(yīng)幀后,通過合路器發(fā)送到接口模塊,最后發(fā)送到服務(wù)器。
35)服務(wù)器完成一次寫操作。
本發(fā)明所述加密機(jī)解密過程具體如下:
在磁盤讀的過程中,讀命令在設(shè)備內(nèi)部是由接口板FPGA外網(wǎng)接收后,發(fā)送到加解密模塊,直接透傳到接口板FPGA內(nèi)網(wǎng);讀數(shù)據(jù)則是由接口板FPGA內(nèi)網(wǎng)接收,發(fā)送到加解密模塊進(jìn)行解密后,再發(fā)送到接口板FPGA外網(wǎng)。該流程主要分為以下幾個步驟:
1)服務(wù)器發(fā)送FCP_CMMD讀命令幀。
2)接口板FPGA外網(wǎng)的接口模塊接收到FCP_CMMD讀命令幀后,通過合路器發(fā)送到協(xié)議解析模塊。
3)接口板FPGA外網(wǎng)在協(xié)議解析模塊識別該幀為FCP_CMMD讀命令幀,將該幀發(fā)送到上行模塊。
4)接口板FPGA外網(wǎng)在上行模塊將FCP_CMMD讀命令幀使用自定義PDU封裝后交給XAUI收發(fā)模塊,最后發(fā)送到加解密模塊。
5)加解密模塊將該P(yáng)DU報(bào)文透傳發(fā)送到接口板FPGA內(nèi)網(wǎng)。
6)接口板FPGA內(nèi)網(wǎng)的XAUI收發(fā)模塊從加解密模塊收到該P(yáng)DU報(bào)文后,從PDU報(bào)文中取出FCP_CMMD讀命令幀后,發(fā)送到協(xié)議解析模塊。
7)接口板FPGA內(nèi)網(wǎng)在協(xié)議解析模塊提取FCP_CMMD讀命令幀頭中的S_ID,D_ID,OX_ID信息,以及FC幀載荷中的LUN和LBA信息。
8)接口板FPGA內(nèi)網(wǎng)在磁盤映射表模塊使用D_ID查找相應(yīng)的Device_ID。
9)接口板FPGA內(nèi)網(wǎng)在會話表模塊以{S_ID,D_ID,OX_ID}為關(guān)鍵字創(chuàng)建一條會話,同時(shí)在會話中記錄{LUN, LBA, Device_ID}信息。
10)接口板FPGA內(nèi)網(wǎng)創(chuàng)建完會話后,將FCP_CMMD讀命令幀發(fā)送到下行模塊,然后通過合路器發(fā)送到接口模塊,最后發(fā)送到磁盤陣列。
11)磁盤陣列回復(fù)FCP_XFER_RDY傳輸準(zhǔn)備幀。
12)接口板FPGA內(nèi)網(wǎng)的接口模塊接收到FCP_XFER_RDY傳輸準(zhǔn)備幀后,通過合路器發(fā)送到協(xié)議解析模塊。
13)接口板FPGA內(nèi)網(wǎng)的協(xié)議解析模塊識別該幀為FCP_XFER_RDY傳輸準(zhǔn)備幀,然后發(fā)送到上行模塊。
14)接口板FPGA內(nèi)網(wǎng)的上行模塊將FCP_XFER_RDY幀使用自定義PDU進(jìn)行封裝,發(fā)送到XAUI收發(fā)模塊,最后發(fā)送到加解密模塊。
15)加解密模塊將該P(yáng)DU報(bào)文透傳發(fā)送到接口板FPGA外網(wǎng)。
16)接口板FPGA外網(wǎng)的XAUI收發(fā)模塊從加解密模塊收到該P(yáng)DU報(bào)文后,交給下行模塊處理。
17)接口板FPGA外網(wǎng)的下行模塊從PDU報(bào)文中取出FCP_XFER_RDY傳輸準(zhǔn)備幀后,通過合路器發(fā)送到接口模塊,最后發(fā)送到服務(wù)器。
18)服務(wù)器接收到FCP_XFER_RDY傳輸準(zhǔn)備幀之后,準(zhǔn)備接收FCP_DATA讀數(shù)據(jù)幀。
19)磁盤陣列發(fā)送FCP_DATA讀數(shù)據(jù)幀。
20)接口板FPGA內(nèi)網(wǎng)的接口模塊接收到FCP_DATA讀數(shù)據(jù)幀后,通過合路器發(fā)送到協(xié)議解析模塊。
21)接口板FPGA內(nèi)網(wǎng)的協(xié)議解析模塊識別該幀為FCP_DATA讀數(shù)據(jù)幀,并提取幀頭中的S_ID,D_ID,OX_ID信息。
22)接口板FPGA內(nèi)網(wǎng)在會話表模塊以{S_ID,D_ID,OX_ID}為關(guān)鍵字進(jìn)行查找,查找到會話后,獲得會話信息{LUN,LBA, Device_ID}。
23)接口板FPGA內(nèi)網(wǎng)在上行模塊將FCP_DATA讀數(shù)據(jù)幀按512字節(jié)進(jìn)行拆分,將每個片段使用自定義PDU進(jìn)行封裝,發(fā)送到XAUI收發(fā)模塊,最后發(fā)送到加解密模塊。
24)加解密模塊對PDU報(bào)文中的數(shù)據(jù)進(jìn)行解密后,發(fā)送到接口板FPGA外網(wǎng)。
25)接口板FPGA外網(wǎng)的XAUI收發(fā)模塊從加解密模塊收到該P(yáng)DU報(bào)文后,交給下行模塊處理。
26)接口板FPGA外網(wǎng)的下行模塊從PDU報(bào)文中取出FCP_DATA讀數(shù)據(jù)幀,如果不是最后一個分片,將該分片緩存后不再進(jìn)行后續(xù)流程的處理。
27)接口板FPGA外網(wǎng)的下行模塊接收到最后一個分片后將所有FCP_DATA片段拼接為一個完整的FCP_DATA讀數(shù)據(jù)幀,然后通過合路器發(fā)送到接口模塊,最后發(fā)送到服務(wù)器。
28)反復(fù)步驟19-27,處理多個FCP_DATA讀數(shù)據(jù)幀。
29)磁盤陣列發(fā)送FCP_RSP讀響應(yīng)幀。
30)接口板FPGA內(nèi)網(wǎng)的接口模塊接收到FCP_RSP寫響應(yīng)幀后,通過合路器發(fā)送到協(xié)議解析模塊。
31)接口板FPGA內(nèi)網(wǎng)的協(xié)議解析模塊識別該幀為FCP_RSP寫響應(yīng)幀,并提取幀頭中的S_ID,D_ID,OX_ID信息。
32)接口板FPGA內(nèi)網(wǎng)在會話表模塊以{S_ID,D_ID,OX_ID}為關(guān)鍵字進(jìn)行關(guān)閉連接的操作。
33)接口板FPGA內(nèi)網(wǎng)的上行模塊將FCP_RSP寫響應(yīng)幀使用自定義PDU進(jìn)行封裝,發(fā)送到XAUI收發(fā)模塊,最后發(fā)送到加解密模塊。
34)加解密模塊將該P(yáng)DU報(bào)文透傳發(fā)送到接口板FPGA外網(wǎng)。
35)接口板FPGA外網(wǎng)的XAUI收發(fā)模塊從加解密模塊收到該P(yáng)DU報(bào)文后,交給下行模塊處理。
36)接口板FPGA外網(wǎng)的下行模塊從PDU報(bào)文中取出FCP_RSP寫響應(yīng)幀后,通過合路器發(fā)送到接口模塊,最后發(fā)送到服務(wù)器。
37)服務(wù)器完成一次讀操作。
本發(fā)明功能模塊對應(yīng)的硬件結(jié)構(gòu)如下:
網(wǎng)絡(luò)存儲加密機(jī)硬件平臺由一個FPGA底板和一塊CPU板構(gòu)成。
FPGA底板集成了Xilinx公司的Vetex7-330T芯片,用于FC協(xié)議的解析和磁盤數(shù)據(jù)的加解密實(shí)現(xiàn);集成TCAM芯片,用于FCID映射表、LUN密鑰表以及LUN查找表;集成DDR3內(nèi)存條用于保存FC讀寫會話;集成GS8182QXX (18Mbits、36Mbits兼容)系列的QDR2芯片,用于FC幀緩存;集成CPLD芯片,用于FPGA從串加載,CPLD芯片通過接插件與CPU板的GPIO接口進(jìn)行通信;集成8G FC光模塊;集成密鑰管理模塊;另外還集成Nand Flash芯片,用作CPU的數(shù)據(jù)存儲區(qū)。
密鑰管理模塊通過SPI接口與CPLD進(jìn)行通信,完成密鑰管理的密鑰存儲、數(shù)據(jù)加解密及隨機(jī)數(shù)發(fā)生器功能。其中集成了北京宏思電子技術(shù)有限公司的安全芯片HA32U2-K,商密型號為SSX0912-B,完成對SM2、SM3、SM4算法的調(diào)用;集成了2塊WNG9隨機(jī)數(shù)發(fā)生器芯片,用于隨機(jī)數(shù)提取。安全芯片通過GPIO接口與2塊噪聲源芯片進(jìn)行通信。
CPU底板集成了Tilera公司的9核芯片,構(gòu)成CPU子卡,用于完成設(shè)備的配置管理內(nèi)容的處理功能,通過XAUI接口與底板的FPGA進(jìn)行通信。USB Key驅(qū)動器通過USB2.0接口與CPU連接,用于設(shè)備的身份認(rèn)證管理和密鑰恢復(fù)管理;毀密接口和密管狀態(tài)指示均通過GPIO與CPU連接,分別實(shí)現(xiàn)毀密信號的采集和密管狀態(tài)的指示;CPU對外提供一個千兆以太網(wǎng)口用于配置管理。
以上所述的實(shí)施例,只是本發(fā)明較優(yōu)選的具體實(shí)施方式的一種,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進(jìn)行的通常變化和替換都應(yīng)包含在本發(fā)明的保護(hù)范圍內(nèi)。