??? 摘? 要: 一種基于對稱加密體制的光纖通道加密卡密鑰管理方案該方案將獨立的密鑰管理中心、USB Key、硬件安全設(shè)備等有效地應(yīng)用于密鑰管理的各個重要環(huán)節(jié),可以讓用戶以最小的安全風(fēng)險和管理代價來管理密鑰信息的產(chǎn)生、分發(fā)、備份及恢復(fù)過程,從而確保存儲數(shù)據(jù)安全。?
??? 關(guān)鍵詞: 密鑰管理; 密鑰管理中心; USB key; 硬件安全設(shè)備
?
??? 近年來,網(wǎng)絡(luò)存儲技術(shù)已被應(yīng)用到各個行業(yè)。網(wǎng)絡(luò)存儲又被譽為第三次IT浪潮[1]。FC-SAN(Fiber Channel- Storage Area Network)網(wǎng)絡(luò)是當(dāng)前最主流的SAN結(jié)構(gòu),它采用高速的光纖通道構(gòu)架存儲網(wǎng)絡(luò),并用FCP(Fibre Channel Protocol)協(xié)議傳輸SCSI命令和數(shù)據(jù)。由于光纖通道的遠距離連接能力以及高速的傳輸能力,使得FC-SAN的性能非凡,被業(yè)界普遍采用。隨著SAN網(wǎng)絡(luò)的日益普及,網(wǎng)絡(luò)存儲數(shù)據(jù)的安全問題也受到了人們的廣泛關(guān)注。存儲加密是保護數(shù)據(jù)的普遍做法。目前,存儲系統(tǒng)中數(shù)據(jù)加密技術(shù)的實現(xiàn)分成基于主機層、網(wǎng)絡(luò)層及存儲層的3類。由于內(nèi)建加密功能的存儲設(shè)備才剛推出,目前企業(yè)應(yīng)用的加密產(chǎn)品以主機或網(wǎng)絡(luò)型產(chǎn)品為主流?;谥鳈C層加密是在前端欲加密的主機上安裝加密軟件進行加密。但軟件加密的缺點是面對企業(yè)達到TB甚至PB級數(shù)據(jù)量,加密運算將極大增加系統(tǒng)負擔(dān),影響效能,而且密鑰檔的保管也相當(dāng)麻煩,可能會遭到非法復(fù)制和遺失?;诰W(wǎng)絡(luò)層加密是通過在存儲網(wǎng)絡(luò)中插入特殊加密硬件進行加密,但網(wǎng)絡(luò)帶寬會受影響。硬件方法將加/解密對性能的影響降到最低,可以做到對用戶透明,并且可以避免軟件方法固有的安全隱患,最大限度地保證整個系統(tǒng)的安全性。綜合考慮,在主機上安裝硬件加密裝置是較好的選擇。?
??? 出于對加/解密性能的考慮,目前大多采用實現(xiàn)方法相對簡單的對稱加密體制。由于加/解密都要使用相同的密鑰,因此密鑰的存儲和備份便成了該加密體系中最薄弱的環(huán)節(jié)。用專門的硬件設(shè)備來存儲和分享密鑰,就可以極大地提高密鑰系統(tǒng)的安全性。目前流行的USB Key是一種在高安全領(lǐng)域內(nèi)廣泛使用的標(biāo)準(zhǔn)USB接口的設(shè)備,能夠?qū)τ脩裘荑€提供多層的安全保護。使用USB Key除了可以保證用戶密鑰信息的安全性以外,同時也在管理上以一種“硬件持有物”的方式,使得用戶對虛擬的“數(shù)字身份”有了物理上的掌握與控制。此外,為防止一些特權(quán)用戶,如管理員私自復(fù)制密鑰,一個較好的解決辦法是研制多密鑰系統(tǒng)。使用一套密鑰加密數(shù)據(jù),使用另一套密鑰對管理員進行身份識別。管理員絕不會真正看到用來加密數(shù)據(jù)的密鑰,從而降低了系統(tǒng)風(fēng)險。對SAN網(wǎng)絡(luò)而言,完善的密鑰管理系統(tǒng)的研究與開發(fā)是一個十分重要的課題。?
??? 本文在對稱加密體制的基礎(chǔ)上,將USB Key用于密鑰存儲和身份認證,結(jié)合密鑰共享和多密鑰加密技術(shù),設(shè)計并實現(xiàn)了一種FC加密卡的密鑰管理系統(tǒng),較好地實現(xiàn)了密鑰的產(chǎn)生、分發(fā)、備份和恢復(fù)功能,滿足了FC-SAN用戶數(shù)據(jù)存儲的安全需要。?
1 FC加密卡的密鑰管理設(shè)計?
??? 為避免系統(tǒng)過于復(fù)雜,且實現(xiàn)起來更加簡單容易,在實際使用的系統(tǒng)中,根據(jù)用戶要求和系統(tǒng)規(guī)模采用使系統(tǒng)結(jié)構(gòu)更加緊湊的二種密鑰。一種是主密鑰, 用于保護其他密鑰;另一種是工作密鑰, 用于保護數(shù)據(jù)。密鑰采用了三層結(jié)構(gòu), 如圖1所示。其中,每一層密鑰用于對下一層密鑰進行加密保護。同時,為提高安全性,加密算法采用早已集成到硬件中并得到廣泛應(yīng)用的AES[2]-256算法。當(dāng)然,對數(shù)據(jù)的加密應(yīng)該是連貫的隔離操作,純軟件的加密系統(tǒng)難以做到,因而將采用單獨的硬件安全設(shè)備,即利用位于FC HBA卡和交換機FC接口之間的加密卡完成對進出磁盤陣列的SCSI數(shù)據(jù)的加解密。另外,為確保對用戶身份的驗證,需要向用戶分發(fā)認證密鑰,密鑰的存儲采用安全性很高的USB Key[3]。?
1.1 密鑰的產(chǎn)生和分發(fā)?
??? 密鑰管理中心的密鑰生成模塊采用基于混沌理論的密鑰生成方法來實現(xiàn)。具體描述如下:?
??? 混沌對非線性方程初值敏感,由混沌獲得的隨機序列可確定數(shù)學(xué)形式理論上不可預(yù)測的混亂結(jié)果。表現(xiàn)混沌現(xiàn)象的標(biāo)準(zhǔn)蟲口方程(Logistic一維迭代方程)為:?
?????
??? 在非線性作用下,當(dāng)μ從0趨向4時,其動力學(xué)性態(tài)的復(fù)雜性逐步增加,即從定態(tài)變?yōu)橹芷谛詰B(tài),通過周期倍化級聯(lián)而到達混沌性態(tài),μ=3.58左右,這種分裂突然呈現(xiàn)崩潰之勢,周期性態(tài)就變成混沌,蟲口的漲落再也不會確定下來,即蟲口的逐年變化完全變?yōu)殡S機。在具體應(yīng)用中取μ=3.6,利用式(1)生成224位密鑰,隨后每7位插入一位奇偶校驗位(這里使用奇校驗),從而生成最后的256位的AES密鑰。而初始種子通過對當(dāng)前系統(tǒng)時間加以簡單的線性變換得到。用此方法可以產(chǎn)生工作密鑰,密鑰的產(chǎn)生均由密鑰管理中心(KMC)自動完成。?
??? 在存儲加密設(shè)備中,存儲加密的安全性與處理性能的瓶頸主要在密鑰的管理與加/解密算法上。由于加解密算法的性能一般是固定的,不容易改變,所以性能的瓶頸主要存在于密鑰的管理方面。因此,安全與性能是一對需要解決的矛盾,當(dāng)強調(diào)高安全則會降低性能,而當(dāng)強調(diào)高性能則會降低安全性。為了平衡設(shè)備的安全性與性能,本方案采用基于LUN(邏輯單元號)的加密技術(shù)。此技術(shù)將所有的LUN分成多個加密區(qū),每個加密分區(qū)使用一個不同的密鑰進行加密,這樣存儲加密過程中只需要有限多個密鑰就能實現(xiàn)對存儲子系統(tǒng)中所有數(shù)據(jù)塊的加密。每個密鑰長度為32 B,工作密鑰保存在加密卡上,使用RAM很容易存儲。這樣一方面減少了密鑰表的大小,加快了密鑰的查找速度,提高了數(shù)據(jù)加密的性能;另一方面由于采用了多個密鑰對存儲子系統(tǒng)的多個區(qū)域進行了加密,與單一固定密鑰的方法相比,提高了加密數(shù)據(jù)被破解的難度,增強了數(shù)據(jù)加密的安全性。為進一步確保密鑰安全,可以用AES-256算法以軟件方式對工作密鑰加密,并將其連同主密鑰、認證密鑰一起存入USB Key中,利用用戶PIN確保了其安全。?
1.2 密鑰的備份和恢復(fù)?
??? 密鑰管理中心完成密鑰備份和恢復(fù)過程。在密鑰備份過程中采用秘密共享方案對主密鑰、工作密鑰、認證密鑰進行保存。在密鑰管理體系模型中,秘密共享理論主要用來保護敏感密鑰。采用秘密共享方案使得原來應(yīng)該由一個人承擔(dān)保密安全的責(zé)任分攤到若干個個體上,并且減少了密鑰丟失的風(fēng)險。(t,n)門限秘密共享方案將一個秘密由n個參與者所共享,只有t個或t個以上的參與者可以聯(lián)合重構(gòu)該秘密,而(t-1)個或更少的參與者不能得到該秘密的任何信息。本系統(tǒng)采用文獻[5]中提出的基于Lagrange插值多項式的(t,n)門限方案,實現(xiàn)對管理員方密鑰的安全存儲。其中t是重構(gòu)密鑰所需的密鑰影子個數(shù), n為產(chǎn)生的影子總數(shù)。選擇一個隨機素數(shù)p,使之比可能的影子數(shù)目和最大可能秘密都大,但需保存。共享密鑰K時,需構(gòu)造一個次數(shù)最多為t-1的任意多項式:?
?????
??? 為秘密地隨機選取的元素,每個參與者對應(yīng)a(x)所確定的曲線上的一個點(xi,yi), 1≤i≤n,并存于n個USB Key中,其中xi應(yīng)互不相同。當(dāng)獲取其中t份密鑰影子時,(xm1,ym1),(xm2,ym2),…(xmt,ymt),其中m[1,n],由插值公式:?
?????
??? 對用戶方密鑰采用備份機備份,備份流程如圖2所示。?
?
?
??? 密鑰恢復(fù)分用戶方和管理員方密鑰恢復(fù)。?
??? (1)用戶方存儲在USB Key內(nèi)的密鑰恢復(fù)流程:發(fā)出密鑰恢復(fù)申請→進行身份認證→認證成功→從密鑰備份機內(nèi)調(diào)出密鑰再分發(fā)給用戶USB Key。?
??? (2)管理員方密鑰的恢復(fù):由于加密密鑰在存儲備份時采用秘密共享方案,所以在恢復(fù)時亦需要t個以上管理員持有的密鑰影子才可以恢復(fù)。密鑰恢復(fù)流程:發(fā)出密鑰恢復(fù)申請→進行t個管理員身份認證→認證成功→t份子密鑰恢復(fù)出密鑰再分發(fā)到管理員USB Key。?
1.3 身份認證?
??? 基于USB Key的身份認證方式是近幾年發(fā)展起來的一種方便、安全的身份認證技術(shù)。它采用軟硬件相結(jié)合、一次一密的強雙因子認證模式,很好地解決了安全性與易用性之間的矛盾。USB Key可以存儲用戶的認證密鑰,利用USB Key內(nèi)置的密碼算法實現(xiàn)對用戶身份的認證。在登錄認證過程中通常是采用基于沖擊/響應(yīng)的認證模式,同時還設(shè)置了用戶PIN碼的最大可重試次數(shù)。當(dāng)PIN碼連續(xù)輸入錯誤達到最大可重試次數(shù)時,將會自動死鎖,這樣就成功地防范了窮舉攻擊方式。當(dāng)PIN碼被鎖死時,需要KMC重新進行解鎖。 ?
??? 在實際的實現(xiàn)過程中,需要在服務(wù)器端加入登錄認證程序模塊,并且要獲取USB Key中存放的用戶身份ID、讀寫權(quán)限等信息,以便FC加密卡根據(jù)該ID號進行訪問控制。登錄認證模塊的關(guān)鍵流程如下:?
??? (1) 用戶插入USB Key,輸入用戶ID、口令,向服務(wù)器發(fā)出登錄認證請求。 ?
??? (2)服務(wù)器接到此請求后生成一個隨機數(shù)R并傳輸給USB Key(此為沖擊)。 ?
??? (3) USB Key使用該隨機數(shù)R、口令和存儲在USB Key中的認證密鑰進行HMAC-MD5(隨機數(shù)R、口令、認證密鑰)運算并得到一個結(jié)果作為認證證據(jù)傳給服務(wù)器(此為響應(yīng))。 ?
??? (4)與此同時,服務(wù)器也使用該隨機數(shù)R與存儲在服務(wù)器數(shù)據(jù)庫中的該客戶認證密鑰進行HMAC-MD5(隨機數(shù)R,口令,認證密鑰)運算。如果服務(wù)器的運算結(jié)果與客戶端傳回的響應(yīng)結(jié)果相同,則認為客戶端是一個合法用戶,否則返回第1步。?
??? (5) 保存用戶ID、讀寫權(quán)限等重要信息,進入系統(tǒng)。?
??? 其實現(xiàn)流程如圖3所示。?
?
?
2 加密卡密鑰管理系統(tǒng)實現(xiàn)方案?
??? 本密鑰管理系統(tǒng)主要由密鑰管理中心、FC加密卡和USB Key三部分實現(xiàn)。系統(tǒng)總體框圖如圖4所示。?
?
?
??? 密鑰管理中心是單獨的一套系統(tǒng),需由專人進行維護管理。密鑰管理中心主要由密鑰產(chǎn)生、密鑰分發(fā)、密鑰備份、密鑰恢復(fù)等幾個功能模塊構(gòu)成。密鑰管理中心產(chǎn)生主密鑰、被加密的工作密鑰,以及用戶身份認證密鑰和訪問控制信息等,同時產(chǎn)生存儲加密設(shè)備管理員用戶的認證信息等;然后將密鑰、身份認證信息等分發(fā)到USB Key中,并對所有密鑰信息進行備份。一個密鑰管理中心可以管理多個存儲加密設(shè)備的密鑰。采用密鑰和存儲加密設(shè)備相分離的管理方式,即使存儲加密設(shè)備丟失,只要USB Key保存完好,存儲加密設(shè)備都是不可工作的,這樣就保證了存儲池中加密數(shù)據(jù)的安全性。KMC備份和恢復(fù)工作流程如圖5所示。FC加密卡的加密密鑰采用USB Key以密文的形式注入,配合主機輸入的解密密鑰將工作密鑰解密。根據(jù)主機設(shè)定的控制策略,對進出磁盤陣列的有效數(shù)據(jù)進行加解密。FC加密卡作為一種加密設(shè)備,為使用該加密卡的磁盤陣列提供加密服務(wù)。用戶的權(quán)限受到主機的控制。非授權(quán)用戶無法讀或?qū)懴嚓P(guān)的加密文檔。磁盤的丟失也不會造成數(shù)據(jù)的丟失。密鑰的丟失會造成數(shù)據(jù)可能的失密,所以應(yīng)妥善保管。用戶登錄采用USB Key加口令認證方式。?
?
?
??? FC加密卡包含一塊加密卡硬件和相應(yīng)的驅(qū)動程序及設(shè)備管理程序。加密卡通過PCI-E接口連接到計算機主板。設(shè)備管理程序完成設(shè)備狀態(tài)檢測、顯示和日志記錄等功能。同時,密鑰的注入也由設(shè)備管理程序來完成。?
??? 系統(tǒng)工作流程如下:?
??? (1) KMC向管理員和用戶分發(fā)USB Key并做好相關(guān)備份工作。?
??? (2)管理員啟動設(shè)備時,要求必須插入管理員USB Key,并輸入用戶名和口令進行身份認證,通過認證后設(shè)備才能啟動。設(shè)備在啟動后要求插入存放密鑰的USB Key,將密鑰注入加密卡。主機將USB Key中的工作密鑰傳送給加密卡通信控制器寫入,經(jīng)過解密后保存在RAM中,然后開始第二次密鑰注入過程。兩次傳輸?shù)拿荑€一致后寫入密鑰/控制表,完成后返回確認信息,加密卡即可進入正常工作模式,否則加密卡處在監(jiān)聽轉(zhuǎn)發(fā)模式,密鑰注入過程完成。在此期間,管理員無法獲取密鑰任何信息。密鑰置入成功后,必須拔下存放密鑰的USB Key。當(dāng)加密卡掉電后里面的所有密鑰信息丟失,需要重新注入密鑰。FC加密卡中密鑰的注入流程都是通過FPGA實現(xiàn)的,由于流程在FPGA內(nèi)部實現(xiàn),所以具有很高的安全性。?
??? (3) 用戶插入用戶USB Key,并輸入用戶名和口令進行身份認證,通過認證后將訪問控制表注入加密卡,然后設(shè)備才進入正常工作狀態(tài),此時用戶可以進行正常的磁盤文件訪問。?
??? (4) 加密卡查詢設(shè)備ACL(訪問控制列表),判斷用戶是否有相關(guān)權(quán)限(讀、寫),最后再將具有權(quán)限的用戶請求發(fā)送給存儲加密功能模塊對數(shù)據(jù)凈荷加解密,將處理后的數(shù)據(jù)轉(zhuǎn)發(fā)出去,不允許的訪問請求將被阻斷。?
3 分析與展望?
??? (1)加密數(shù)據(jù),尤其在SAN對于大數(shù)據(jù)量的加密,用軟件加密盡管實現(xiàn)起來相對容易,但是會加重服務(wù)器的工作負荷,影響系統(tǒng)整體性能。采用硬件安全設(shè)備加密,由于很多算法都是面向bit串操作,因而實現(xiàn)速度快。試驗表明,該系統(tǒng)能達到較高的數(shù)據(jù)吞吐量,同時具備向更高數(shù)據(jù)吞吐量升級的能力。硬件加密安全性好,相對而言,軟件不可能實現(xiàn)物理保護,攻擊者可以利用各種調(diào)試軟件來修改算法。?
??? (2)采用USB Key進行身份認證與密鑰存儲,由于它采用軟硬件相結(jié)合、一次一密的強雙因子認證模式,認證服務(wù)器與客戶端之間的數(shù)據(jù)往來每次都不相同,如黑客簡單截獲到認證過程的數(shù)據(jù)仍無法在網(wǎng)絡(luò)中冒充客戶端。算法采用的是值得信賴的MD5 HMAC算法,這樣,算法、密鑰、運算三個因素都是安全的,從而確保了整個認證過程的安全。?
??? (3) 對密鑰更新,目前的設(shè)計是由KMC設(shè)立專門的密鑰數(shù)據(jù)庫,當(dāng)需要吊銷或銷毀舊密鑰時,由KMC進行相關(guān)登記,并分發(fā)新的USB Key;然后由加密卡自動完成更新。但是牽涉到如何更新用舊密鑰加密的數(shù)據(jù)等一系列問題。由于舊數(shù)據(jù)的更新也可由加密卡完成,所以完全可以利用某種控制算法來自動啟動數(shù)據(jù)的更新,這樣可以省去很多問題。由于密鑰更新算法研究也是系統(tǒng)安全性得以提高的一個很重要方面,所以可把工作重點轉(zhuǎn)到密鑰更新算法研究。?
參考文獻?
[1] 王峰.網(wǎng)絡(luò)存儲在互聯(lián)網(wǎng)行業(yè)的應(yīng)用[J].中國傳媒科技,2007,10:46-48.?
[2] NIST. FIPS PUB 197: Advanced Encryption Standard(AES)[S]. http://csrc.nist.gov/publications/, 2001.?
[3] 嚴波,郭莉,潘棕強.基于USB Key的身份鑒別技術(shù)研究與應(yīng)用[J]. 高性能計算技術(shù),2005(3):36.?
[4] SHAMIR A. How to share a secret communications of the ACM,1979(22):612-613.?