專利名稱:一種硬盤扇區(qū)級數(shù)據(jù)加密解密方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及計算機技術中的存儲安全領域,特別涉及一種硬盤扇區(qū)級存儲安全的方法及結構。
背景技術:
數(shù)據(jù)的兩種存在形式,傳輸中的數(shù)據(jù)(Data-in-Flight)和存儲中的數(shù)據(jù)(Data-in-Rest),決定了數(shù)據(jù)安全包含網(wǎng)絡安全和存儲安全兩大領域。相較存儲安全而言,網(wǎng)絡安全已有大量的研究成果,單在網(wǎng)絡安全協(xié)議方面就包括IPSec(IP層安全協(xié)議)、SSL(安全套接字層)、PPTP(點對點隧道協(xié)議)、PEM(秘密增強郵件)和PGP(完美精密保密)等。近年來,隨著越來越多的信息以存儲的形式存在,尤其是隨著網(wǎng)絡存儲(SAN與NAS)的發(fā)展,人們逐漸意識到存儲安全的重要性。除了性能、容量和可靠性外,安全性已經(jīng)成為存儲系統(tǒng)的重要特征。
無論是傳統(tǒng)的存儲系統(tǒng)還是網(wǎng)絡存儲系統(tǒng),都可用分層的方式進行描述。一種通用的描述方式為應用層、操作系統(tǒng)層、存儲協(xié)議與設備模型層和物理層。
在這種分層結構的基礎上,當前主要的存儲安全系統(tǒng)均可歸為基于操作系統(tǒng)層的實現(xiàn),或是基于應用層和操作系統(tǒng)層的混合實現(xiàn)。例如基于Unix的CryptographicFile System、基于Windows的Encrypting File System,以及Secure Drive,Secure FileSystem,PGPdisk等等。雖然操作系統(tǒng)層的實現(xiàn)方案解決了應用層方案的操作復雜性,但由于處在存儲模型較高的層次,因此只能軟件實現(xiàn),由此帶來了加密/解密速度較慢,缺乏透明性,安全性也相對較低等缺點。此外,在存儲系統(tǒng)高層對數(shù)據(jù)做加密操作時,無法實現(xiàn)對所有數(shù)據(jù)的加密,也會降低系統(tǒng)的安全性。
發(fā)明內容
本發(fā)明的目的是克服現(xiàn)有技術在應用層或操作系統(tǒng)層實現(xiàn)數(shù)據(jù)加密操作時所帶來的加密/解密速度較慢,安全性相對較低的缺點,提供一種硬盤扇區(qū)級數(shù)據(jù)加密方法及結構,提高了存儲系統(tǒng)的安全性。
為了實現(xiàn)上述目的,本發(fā)明提供一種硬盤扇區(qū)級數(shù)據(jù)加密解密方法,實現(xiàn)在存儲協(xié)議的設備模型層或物理層對數(shù)據(jù)的加密和解密,包括1)、從具有I2C接口的電可擦寫可編程只讀存儲器中讀取數(shù)據(jù),得到加密或解密的密鑰;2)、根據(jù)密鑰擴展機制,由步驟1)得到的密鑰求得初始密鑰;3)、對扇區(qū)的邏輯地址和存儲設備的序列號做異或操作,并將異或操作的結果移位,得到8個初始化向量,所得初始化向量稱為地址密鑰;4)、利用步驟2)得到的初始密鑰對步驟3)得到的地址密鑰做加密,形成密鑰流;5)、對傳輸過程中的數(shù)據(jù)進行加密或解密,做寫操作時,數(shù)據(jù)從CPU傳出,在步驟4)中得到的密鑰流與數(shù)據(jù)做異或操作,實現(xiàn)數(shù)據(jù)的加密或解密,數(shù)據(jù)加密或解密后直接發(fā)送到存儲設備,做讀操作時,數(shù)據(jù)從存儲設備傳出,在步驟4)中得到的密鑰流與數(shù)據(jù)做異或操作,實現(xiàn)數(shù)據(jù)的加密或解密,數(shù)據(jù)加密或解密后直接發(fā)送到CPU。
上述技術方案中,還包括一種基于密鑰吊銷位圖的在線密鑰吊銷方法,對密鑰變更后的原加密數(shù)據(jù)重新加密,所述的密鑰吊銷位圖用于記錄硬盤扇區(qū)的有效密鑰是否做了修改,在線密鑰吊銷方法具體包括以下步驟2-1)、將密鑰吊銷位圖中的字節(jié)讀入位圖緩沖區(qū)中;2-2)、依次掃描位圖緩沖區(qū)中的各位,檢測其中的零位,計算零位所對應數(shù)據(jù)扇區(qū)的邏輯塊地址;2-3)、用步驟2-2)所得到的邏輯塊地址將扇區(qū)中的數(shù)據(jù)讀出,用原密鑰進行解密,然后用變更后的密鑰進行加密,并將加密的數(shù)據(jù)寫回。
所述的密鑰吊銷方法中,在硬盤的高地址端設置密鑰吊銷位圖區(qū)域14,該區(qū)域用來保存所述的密鑰吊銷位圖,硬盤的其他區(qū)域為密鑰和加密算法保護區(qū)域15,該區(qū)域用來保存數(shù)據(jù);所述的密鑰吊銷位圖中的一位代表一個扇區(qū),用于指示該扇區(qū)的密鑰是原密鑰還是變更后的密鑰。
上述技術方案中,還包括一種低密度加密解密方法,在該方法中定義了密鑰的存儲格式,密鑰在存儲時按照算法編碼、密鑰長度、密鑰值和下一分區(qū)指示標志進行存儲,其中,算法編碼表示分區(qū)使用的加密解密算法的種類,密鑰值是指存儲密鑰的具體數(shù)值,密鑰長度用于指示密鑰值的長度,下一分區(qū)指示標志表示在硬盤中是否還有其他分區(qū);所述的分區(qū)根據(jù)數(shù)據(jù)的加密解密算法種類和密鑰值做區(qū)分,不同分區(qū)的加密解密算法和密鑰值都不相同,若下一分區(qū)指示標志表明不存在下一分區(qū),則硬盤中此分區(qū)后的扇區(qū)全部采用該分區(qū)所指定的密鑰和加密算法。
上述技術方案中,所述的步驟3)中,對地址密鑰的求取過程具體包括首先將扇區(qū)的邏輯地址高位補零擴展為64位,用LBA64表示,將存儲設備的序列號補零擴展為64位,用SS64表示,然后將所得到的結果通過計算得到初始化向量,用IV表示,初始化向量的計算公式如下IVi=(LBA64^SS64)|(i<<61),i=0,1,…,7其中,^表示異或操作,|表示或操作,<<表示左移操作。
上述技術方案中,所述的步驟2)中,所述的密鑰擴展機制是采用了一種(n,k)閾值機制實現(xiàn)的,在(n,k)閾值機制中,用M表示初始密鑰,然后選擇一個比k大的素數(shù)p,構造方程式f(x)=(ak-1xk-1+ak-2xk-2+……+a1x+M)mod(p)其中,a1,a2…ak-1是一組隨機數(shù),mod表示取模運算,將x=1,x=2,…,x=n(n≥k)代入方程得到f(1),f(2),…,f(n),從中任意選擇k個可作為加密算法的密鑰,在所述的步驟2)中,所述的根據(jù)密鑰求初始密鑰就是對從方程f(1),f(2),…,f(n)中任意選取的k個方程求解,所求得的M就是所述的初始密鑰。
一種實施硬盤扇區(qū)級數(shù)據(jù)加密解密方法的系統(tǒng),所述的硬盤扇區(qū)級數(shù)據(jù)加密解密系統(tǒng)由發(fā)送單元10、加密/解密單元11、接收單元12和密鑰流生成單元16組成,其中,密鑰流生成單元16采用2組128位的寄存器組,每組包含8個寄存器,兩組寄存器之間采用ping-Pong結構,用初始密鑰加密地址密鑰后所產(chǎn)生的結果首先存入第一寄存器組中,當數(shù)據(jù)從發(fā)送單元10發(fā)送到加密/解密單元11后,密鑰流生成單元16中的第一寄存器組讀出組中的數(shù)據(jù)形成密鑰流,所生成的密鑰流被傳送到加密/解密單元11上,通過密鑰流中的密鑰與數(shù)據(jù)的異或操作實現(xiàn)數(shù)據(jù)的加密或解密,加密或解密后的數(shù)據(jù)直接送到接收單元12。
本發(fā)明的優(yōu)點在于1、本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密方法在存儲系統(tǒng)的存儲協(xié)議的設備模型層、物理層上對數(shù)據(jù)做加密,有效提高了存儲設備上數(shù)據(jù)的安全性,防止了重要數(shù)據(jù)的泄漏,對于商業(yè)信息的保護以及國家的信息安全都有重要的意義。
2、本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密方法中的直通轉發(fā)方式在數(shù)據(jù)加密或解密操作之前,不需要緩存數(shù)據(jù),從而達到了在增加系統(tǒng)安全性的同時完全不降低系統(tǒng)的性能。
3、本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密方法中對于AES加密算法的改進(地址密鑰以及密鑰擴展等技術)消除了已知明文攻擊的可能性,并且使得窮舉攻擊的難度也大大增加。
4、本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密方法中的低粒度加密方法可以以扇區(qū)為單位建立安全機制,從而增加了安全的靈活性。
圖1為AES算法結構圖;圖2為存儲轉發(fā)結構的示意圖;圖3為本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密解密系統(tǒng)的示意圖;圖4為本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密解密系統(tǒng)中的密鑰流生成單元16的結構圖;圖5為密鑰吊銷示意圖;圖6a為利用正確密鑰讀取數(shù)據(jù)后的結果;圖6b為無法提供正確密鑰時,讀取數(shù)據(jù)的結果;圖7為本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密解密方法在做寫操作時的流程圖;圖8為本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密解密方法在做讀操作時的流程圖。
圖面說明1多輪子字節(jié)變換2移行變換3混列變換 4加輪密鑰變換5發(fā)送單元 6接收單元7加密/解密單元8發(fā)送單元 9接收單元10發(fā)送單元 11加密/解密單元12接收單元 13OFB密鑰流 14密鑰吊銷位圖區(qū)域15密鑰和加密算法保護區(qū)域 16密鑰流生成單元具體實施方式
下面結合附圖和具體實施方式
對本發(fā)明做進一步說明。
一般而言,存儲系統(tǒng)可分為應用層、操作系統(tǒng)層、存儲協(xié)議與設備模型層和物理層。本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密方法,在存儲協(xié)議的設備模型層、物理層實現(xiàn)對數(shù)據(jù)的加密和解密。
本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密方法包括一種改進的AES加密算法、一種將數(shù)據(jù)傳輸與數(shù)據(jù)加/解密同步進行的數(shù)據(jù)傳輸方法、一種基于密鑰吊銷位圖的在線密鑰吊銷機制、一種低密度加密方法和一種基于I2C總線的密鑰策略。
本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密解密方法,實現(xiàn)在存儲協(xié)議的設備模型層或物理層對數(shù)據(jù)的加密和解密,如圖7和圖8所示,它具體包括以下步驟步驟20、從具有I2C接口的電可擦寫可編程只讀存儲器(EEPROM)中讀取數(shù)據(jù),得到加密或解密的密鑰;步驟30、根據(jù)密鑰擴展機制,由步驟20得到的密鑰求得初始密鑰;步驟40、對扇區(qū)的邏輯地址和存儲設備的序列號做異或操作,并將異或操作的結果移位,得到8個初始化向量,所得初始化向量稱為地址密鑰;步驟50、利用步驟30得到的初始密鑰對步驟40得到的地址密鑰做加密,形成密鑰流;步驟60、對傳輸過程中的數(shù)據(jù)進行加密或解密,做寫操作時,數(shù)據(jù)從CPU傳出,在步驟50中得到的密鑰流與數(shù)據(jù)做異或操作,實現(xiàn)數(shù)據(jù)的加密或解密,數(shù)據(jù)加密或解密后直接發(fā)送到存儲設備,做讀操作時,數(shù)據(jù)從存儲設備傳出,在步驟50中得到的密鑰流與數(shù)據(jù)做異或操作,實現(xiàn)數(shù)據(jù)的加密或解密,數(shù)據(jù)加密或解密后直接發(fā)送到CPU。
在加密或解密的過程中涉及到具體的數(shù)據(jù)加密算法,現(xiàn)有技術中有多種數(shù)據(jù)加密算法,選取何種數(shù)據(jù)加密算法是本發(fā)明中必須解決的問題。
數(shù)據(jù)加密標準(DES)算法是迄今為止世界上最為廣泛使用和流行的一種分組密碼算法,由美國IBM公司研制,于1977年被正式批準作為美國聯(lián)邦信息處理標準,即FIPS-46。DES算法的密鑰只有56位,極易受到窮舉攻擊的威脅。出于安全與性能方面的考慮,高級加密標準(AES)算法于1999年被批準為新的加密標準。本發(fā)明選擇AES算法作為數(shù)據(jù)加密的基礎,如圖1所示,該方法的流程圖包括多輪子字節(jié)變換1、移行變換2、混列變換3和加輪密鑰變換4。
存儲設備通常被劃分成具有固定長度的扇區(qū),一個扇區(qū)的典型長度是512字節(jié),而一次數(shù)據(jù)讀寫操作的基本單位就是一個扇區(qū)。由于數(shù)據(jù)存儲的無序性,相鄰的扇區(qū)一般沒有必然的組織邏輯關系,因此加密和解密操作不能跨越扇區(qū)的范圍。此外,密文和明文應當具有相同的長度。
綜上所述,所選擇的密碼算法必須具備分組長度能夠整除4096,且明文長度和密文長度相同的特性。由于4096不能被192整除,所以分組長度為192位的AES算法顯然不適用;另外雖然128位和256位的AES算法都能滿足要求,但是由于256位分組長度的AES算法與128位分組長度的AES算法相比運算速度明顯降低,且128位分組長度的AES算法已能滿足安全需求,因此本發(fā)明選用分組長度為128位的AES算法。
根據(jù)實際應用的具體需要,本發(fā)明還對AES加密算法做了改進,具體包括1)、使用同一密鑰,配合不同的“地址密鑰”,使得不同分組使用不同的密鑰做加密。所述的“地址密鑰”是存儲設備扇區(qū)的邏輯塊地址(以下簡稱LBA)以及存儲設備的序列號與密鑰進行異或操作的結果。使用LBA地址的目的是使得相同的數(shù)據(jù)在不同的扇區(qū)具有不同的密文。使用存儲設備的序列號的目的是使得相同的數(shù)據(jù)在不同的存儲設備上具有不同的密文。
地址密鑰的求取過程如步驟40所述,對扇區(qū)的邏輯地址和存儲設備的序列號做異或操作,并將異或操作的結果移位,得到8個初始化向量。設要做讀寫操作的扇區(qū)的邏輯地址為LBA,在高位補零擴展為64位,記為LBA64;設該儲存設備的序列號為SS,在高位補零擴展為64位,記為SS64。根據(jù)LBA64和SS64生成8個初始化向量(以下簡稱IV向量),它的計算公式如公式(1)所示IVi=(LBA64^SS64)|(i<<61),i=0,1,…,7。(1)其中,^表示異或操作,|表示或操作,<<表示左移操作。
所得到的這8個初始化向量就是所述的地址密鑰。
2)、擴充密鑰長度。在一種加密方法中,密鑰的安全性至關重要,為了增強安全性,在本發(fā)明中還提供了一種(n,k)閾值機制對密鑰進行擴充。假設密碼算法的密鑰長度為N位,經(jīng)過(n,k)閾值機制的擴充,可以使密鑰長度達到kN位,相應的破解難度也從原來的2N擴展到2kN,是原來的2(k-1)N倍。
(n,k)閾值機制的具體實現(xiàn)方法如下。
假設擴充前的密鑰為M,選擇一個比k大的素數(shù)p,構造如公式(2)所示的方程式
f(x)=(ak-1xk-1+ak-2xk-2+……+a1x+M)mod(p)(2)其中,a1,a2…ak-1是一組隨機數(shù),mod表示取模運算。將x=1,x=2,…,x=n(n≥k)代入以上方程得到f(1),f(2),…,f(n),從中任意選擇k個可作為加密算法的密鑰。加密方將新生成的密鑰傳送給解密方后,解密方可通過解方程組得到原密鑰M,實現(xiàn)對數(shù)據(jù)的解密。在步驟30中,由步驟20中的密鑰反求初始密鑰的過程就是解方程組求原密鑰M的過程。在密鑰選擇時,k的值一般小于n,如果有必要,也可等于n。
如步驟60所述,數(shù)據(jù)的加密或解密過程是在數(shù)據(jù)傳輸過程中實現(xiàn)的,在數(shù)據(jù)傳輸過程中涉及到數(shù)據(jù)傳輸結構。本發(fā)明可采用兩種數(shù)據(jù)傳輸結構存儲轉發(fā)結構和直通轉發(fā)結構。數(shù)據(jù)傳輸結構與具體的分組加密算法密切相關,現(xiàn)有的分組加密算法主要有ECB(電碼本模式)、CBC(密碼分組鏈接模式)、CFB(密碼反饋模式)、OFB(輸出反饋模式)。其中,ECB和CBC在數(shù)據(jù)傳輸時采用存儲轉發(fā)結構,而CFB和OFB在數(shù)據(jù)傳輸時采用直通轉發(fā)結構。
由于無論是網(wǎng)絡還是其他數(shù)據(jù)總線的數(shù)據(jù)傳輸都是串行數(shù)據(jù),或者即使是并行數(shù)據(jù),其數(shù)據(jù)寬度也會遠遠小于分組算法的分組長度。如果使用ECB或者CBC模式則必須對數(shù)據(jù)進行緩沖,以便數(shù)據(jù)累積到分組長度才進行相應的加密/解密操作,從表面上看是個延遲的問題,但是實際上會給設計增加很大的復雜度。緩沖會造成發(fā)送方和接收方的不同步,從而需要模擬接收方的操作,從發(fā)送方接受數(shù)據(jù);緩存到一定程度要模擬發(fā)送方,發(fā)送給真正的接收方。CFB與OFB都可以不用緩沖,但是CFB的缺點是數(shù)據(jù)率被降低。
基于ECB/CBC的存儲轉發(fā)結構,如圖2所示,包括發(fā)送單元5、接收單元6、加密/解密單元7、發(fā)送單元8和接收單元9。發(fā)送單元5將數(shù)據(jù)發(fā)送到接收單元6,接收單元6接收到與加密算法的分組長度相同的數(shù)據(jù)后,將這些數(shù)據(jù)統(tǒng)一發(fā)送到加密/解密單元7,在加密/解密單元7中完成加密或解密操作,加密或解密后的數(shù)據(jù)送入發(fā)送單元8中并緩存,當發(fā)送單元8中所保存的數(shù)據(jù)長度與分組長度相同時,由發(fā)送單元8將數(shù)據(jù)發(fā)送到接收單元9中。
基于OFB/CFB的直通轉發(fā)結構,如圖3所示,包括發(fā)送單元10、加密/解密單元11和接收單元12。以基于OFB的直通轉發(fā)結構為例,發(fā)送單元10將數(shù)據(jù)發(fā)送到加密/解密單元11中,加密/解密單元11根據(jù)OFB密鑰流13對數(shù)據(jù)做加密或解密操作,整個加密過程中,無需對數(shù)據(jù)做緩存操作,加密或解密后的數(shù)據(jù)直接發(fā)送到接收單元12中。上述直通轉發(fā)結構中的各個邏輯單元的硬件實現(xiàn)在不同的情況下各有不同,在進行寫操作時,發(fā)送單元10采用ATA控制器,接收單元12是ATA存儲設備,當進行讀操作時,發(fā)送單元10采用ATA存儲設備,接收單元12采用ATA控制器。
在基于OFB/CFB的直通轉發(fā)結構中,密鑰流的生成是該結構的重點。以OFB模式為例,OFB密鑰流13由密鑰流生成單元16產(chǎn)生。如圖4所示,密鑰流生成單元16采用了2組128位的寄存器組,每組包含8個寄存器,將寄存器1到寄存器8所在的寄存器組稱為寄存器組a,將標記為寄存器9到寄存器F所在的寄存器組稱為寄存器組b。這兩組寄存器組間采用Ping-Pong結構。如前所述,在本發(fā)明中,對數(shù)據(jù)做加密時增加了“地址密鑰”,將代表地址密鑰的8個IV向量經(jīng)過分組算法的加密存入寄存器組a,當實際數(shù)據(jù)讀寫發(fā)生時,用該寄存器中的數(shù)據(jù)構成OFB密鑰流,與存儲總線上的數(shù)據(jù)進行異或運算,然后送到存儲設備完成寫操作或者處理器完成讀操作。當該寄存器組中的密鑰流將要結束時,啟動分組算法,將寄存器組中的所有數(shù)據(jù)進行加密寫入寄存器組b,當寄存器組a構成的密鑰流使用完畢,使用寄存器組b構成的密鑰流。當寄存器組b中的密鑰流使用完畢后,再使用寄存器組a中重新生成的數(shù)據(jù)。如此循環(huán)直到該扇區(qū)加密或者解密完畢。
從上面的分析可以看出,在直通轉發(fā)結構中,加密/解密操作與數(shù)據(jù)傳輸操作可同步進行。
下面分別對存儲轉發(fā)結構和直通轉發(fā)結構的性能與效率進行比較。
對于存儲轉發(fā)結構(非流水)分別進行512B,1KB,2KB,4KB,8KB,16KB,32KB,64KB和128KB等情況下的測試,測試結果如表1所示。其中IOps表示每秒發(fā)送存儲命令次數(shù),MBps表示每秒的兆字節(jié)數(shù),CPU%表示CPU的利用率,AIOt表示平均I/O響應時間(單位為ms),MaxIOt表示最大I/O響應時間(單位為ms)。
表1
在同等情況下對直通轉發(fā)結構做測試,測試結果如表2所示表2
通過上述的兩組對比,直通轉發(fā)結構相對于存儲轉發(fā)結構有更高的性能。對于設計實現(xiàn)來說,存儲轉發(fā)結構相對于直通轉發(fā)結構更復雜,因為在存儲轉發(fā)結構中不但要重新設計數(shù)據(jù)的發(fā)送器也要設計數(shù)據(jù)的接收器。對于讀操作來說,發(fā)送器相當于控制器,接收器相當于設備;對于寫操作來說,發(fā)送器相當于設備,接收器相當于控制器。因此,本發(fā)明采用直通轉發(fā)結構更為合適。
加密后的數(shù)據(jù)基于各種原因可能需要更換加密算法的密鑰,并對原來的內容重新加密,這種情況稱為密鑰吊銷。密鑰吊銷對于網(wǎng)絡安全來說只要舍棄密鑰,下次通信時重新建立新的密鑰即可。而對存儲安全來說,密鑰的丟失就意味著數(shù)據(jù)的丟失。在存儲安全中,目前有兩種密鑰吊銷的策略懶吊銷和激進吊銷。當使用懶吊銷策略時,并不立即對舊密鑰加密的數(shù)據(jù)用新密鑰重新加密,而是等到下次訪問的時候才重新加密。由于替換密鑰的原因一般是該密鑰已經(jīng)被盜或者有潛在的危險,所以懶吊銷策略雖然是一種很經(jīng)濟的辦法,但是具有很大的安全隱患。相反,激進吊銷立即用新密鑰替換舊密鑰進行重新加密,來保障數(shù)據(jù)的安全。但是這種機制卻很有可能使得系統(tǒng)拒絕服務。針對現(xiàn)有的密鑰吊銷策略各自存在的不足,本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密解密方法還提供了一種在線吊銷(Revocation-On-Fly)方法,使得它既有激進吊銷的優(yōu)點,又可以以后臺的方式進行。
在在線吊銷方法中,如圖5所示,存儲設備的高地址端開辟出一個密鑰吊銷位圖區(qū)域14,存儲設備中的其余區(qū)域為密鑰和加密算法保護區(qū)域15。
密鑰吊銷位圖(Bit-Map)用于紀錄對應的扇區(qū)的有效密鑰是舊的還是新的。其結構如表3所示表3
其中,0代表相應的扇區(qū)對應的密鑰是舊的,1代表相應的扇區(qū)對應的密鑰是新的。以120GB的存儲設備為例,扇區(qū)數(shù)目為251658240,位表的大小應為251658240位,需要61440個扇區(qū)進行存儲。在存儲安全控制器中可以用位圖緩沖區(qū)(Cachebit-map)的機制,以提高訪問速度。
存儲安全控制器可以利用數(shù)據(jù)操作的空閑時間完成新舊密鑰的替換,當有數(shù)據(jù)操作到來時,可以中止密鑰替換操作,直到下一個數(shù)據(jù)操作空閑。
下面給出密鑰吊銷位圖的具體使用方式當需要進行密鑰替換時,安全存儲控制器置密鑰吊銷位圖中所有的位為0。全零的密鑰吊銷位圖意味著所有的扇區(qū)都需要用新的密鑰重新加密。
1)、將密鑰吊銷位圖中的某512字節(jié)(一個扇區(qū)的大小)讀入位圖緩沖區(qū)中。
2)、依次掃描位圖緩沖區(qū)中的各位,檢測其中的零位,并計算對應的數(shù)據(jù)扇區(qū)。
假設有N個扇區(qū)用來記錄位圖,讀到位圖緩沖區(qū)的是第K個扇區(qū),并且監(jiān)測到其中的第T位為零,則其對應的數(shù)據(jù)扇區(qū)的邏輯塊地址的計算公式如公式(3)所示L=(K-1)*4096+T(3)3)、將邏輯塊地址為L的扇區(qū)讀出,用舊密鑰進行解密;然后用新的密鑰進行加密,并將加密的數(shù)據(jù)寫回。
為了方便對數(shù)據(jù)的保護,經(jīng)過擴充的密鑰存儲在具有I2C(串行數(shù)據(jù)總線)接口的電可擦寫可編程只讀存儲器(EEPROM)上,加密的設備(ASIC/FPGA)實時讀取EEPROM中的數(shù)據(jù)作為加密解密的密鑰,如果不能有效提供密鑰,則無法正確讀取存儲在ATA設備上的數(shù)據(jù)。在步驟20中,從電可擦寫可編程只讀存儲器上讀取的數(shù)據(jù)就是加密解密的密鑰。如圖6a所示,為提供正確密鑰讀取數(shù)據(jù)后的結果,如圖6b所示,則為無法提供正確密鑰時,讀取數(shù)據(jù)的結果。
本發(fā)明的硬盤扇區(qū)級數(shù)據(jù)加密解密方法還提供了一種低密度加密解密方法,所述的低密度加密解密方法通過對存儲設備上的不同分區(qū)設置不同的加密解密密鑰和加密解密算法,提高了安全性和靈活性。低密度加密解密方法的實現(xiàn)是通過密鑰存儲格式的設置而實現(xiàn)的。存儲在EEPROM上的密鑰格式如表4所示表4
其中的算法編碼表明該分區(qū)使用的加密解密算法,例如,用0x01指代DES算法,0x02指代AES算法,0x03指代3DES算法,0x04指代IDEA算法,0x05指代用戶自定義算法,0x06-0xff暫時保留。
密鑰長度指示接下來的密鑰值長度是多少,單位為字節(jié)。例如0x08表示密鑰為64位。下一分區(qū)指示標志用來說明存儲設備的扇區(qū)中是否還有其他加密解密算法不同、密鑰不同的分區(qū)。如果下一分區(qū)值為0x33表示下面還有一個分區(qū),否則此分區(qū)后面的扇區(qū)全部采用該分區(qū)指定的密鑰和算法。
通過該格式,可以支持以分區(qū)為單位的低粒度加密或解密,可以為不同的ATA設備分區(qū)選擇不同的加密解密算法以及不同的加密解密密鑰。
權利要求
1.一種硬盤扇區(qū)級數(shù)據(jù)加密解密方法,實現(xiàn)在存儲協(xié)議的設備模型層或物理層對數(shù)據(jù)的加密和解密,包括1)、從具有I2C接口的電可擦寫可編程只讀存儲器中讀取數(shù)據(jù),得到加密或解密的密鑰;2)、根據(jù)密鑰擴展機制,由步驟1)得到的密鑰求得初始密鑰;3)、對扇區(qū)的邏輯地址和存儲設備的序列號做異或操作,并將異或操作的結果移位,得到8個初始化向量,所得初始化向量稱為地址密鑰;4)、利用步驟2)得到的初始密鑰對步驟3)得到的地址密鑰做加密,形成密鑰流;5)、對傳輸過程中的數(shù)據(jù)進行加密或解密,做寫操作時,數(shù)據(jù)從CPU傳出,在步驟4)中得到的密鑰流與數(shù)據(jù)做異或操作,實現(xiàn)數(shù)據(jù)的加密或解密,數(shù)據(jù)加密或解密后直接發(fā)送到存儲設備,做讀操作時,數(shù)據(jù)從存儲設備傳出,在步驟4)中得到的密鑰流與數(shù)據(jù)做異或操作,實現(xiàn)數(shù)據(jù)的加密或解密,數(shù)據(jù)加密或解密后直接發(fā)送到CPU。
2.根據(jù)權利要求1所述的硬盤扇區(qū)級數(shù)據(jù)加密解密方法,其特征在于,還包括一種基于密鑰吊銷位圖的在線密鑰吊銷方法,對密鑰變更后的原加密數(shù)據(jù)重新加密,所述的密鑰吊銷位圖用于記錄硬盤扇區(qū)的有效密鑰是否做了修改,在線密鑰吊銷方法具體包括以下步驟2-1)、將密鑰吊銷位圖中的字節(jié)讀入位圖緩沖區(qū)中;2-2)、依次掃描位圖緩沖區(qū)中的各位,檢測其中的零位,計算零位所對應數(shù)據(jù)扇區(qū)的邏輯塊地址;2-3)、用步驟2-2)所得到的邏輯塊地址將扇區(qū)中的數(shù)據(jù)讀出,用原密鑰進行解密,然后用變更后的密鑰進行加密,并將加密的數(shù)據(jù)寫回。
3.根據(jù)權利要求2所述的硬盤扇區(qū)級數(shù)據(jù)加密解密方法,其特征在于,在硬盤的高地址端設置密鑰吊銷位圖區(qū)域(14),該區(qū)域用來保存所述的密鑰吊銷位圖,硬盤的其他區(qū)域為密鑰和加密算法保護區(qū)域(15),該區(qū)域用來保存數(shù)據(jù);所述的密鑰吊銷位圖中的一位代表一個扇區(qū),用于指示該扇區(qū)的密鑰是原密鑰還是變更后的密鑰。
4.根據(jù)權利要求1所述的硬盤扇區(qū)級數(shù)據(jù)加密解密方法,其特征在于,還包括一種低密度加密解密方法,在該方法中定義了密鑰的存儲格式,密鑰在存儲時按照算法編碼、密鑰長度、密鑰值和下一分區(qū)指示標志進行存儲,其中,算法編碼表示分區(qū)使用的加密解密算法的種類,密鑰值是指存儲密鑰的具體數(shù)值,密鑰長度用于指示密鑰值的長度,下一分區(qū)指示標志表示在硬盤中是否還有其他分區(qū);所述的分區(qū)根據(jù)數(shù)據(jù)的加密解密算法種類和密鑰值做區(qū)分,不同分區(qū)的加密解密算法和密鑰值都不相同,若下一分區(qū)指示標志表明不存在下一分區(qū),則硬盤中此分區(qū)后的扇區(qū)全部采用該分區(qū)所指定的密鑰和加密算法。
5.根據(jù)權利要求1所述的硬盤扇區(qū)級數(shù)據(jù)加密解密方法,其特征在于,所述的步驟3)中,對地址密鑰的求取過程具體包括首先將扇區(qū)的邏輯地址高位補零擴展為64位,用LBA64表示,將存儲設備的序列號補零擴展為64位,用SS64表示,然后將所得到的結果通過計算得到初始化向量,用IV表示,初始化向量的計算公式如下IVi=(LBA64^SS64)|(i<<61),i=0,1,…,7其中,^表示異或操作,|表示或操作,<<表示左移操作。
6.根據(jù)權利要求1所述的硬盤扇區(qū)級數(shù)據(jù)加密解密方法,其特征在于,所述的步驟2)中,所述的密鑰擴展機制是采用了一種(n,k)閾值機制實現(xiàn)的,在(n,k)閾值機制中,用M表示初始密鑰,然后選擇一個比k大的素數(shù)p,構造方程式f(x)=(ak-1xk-1+ak-2xk-2+……+a1x+M)mod(p)其中,a1,a2…ak-1是一組隨機數(shù),mod表示取模運算,將x=1,x=2,…,x=n(n≥k)代入方程得到f(1),f(2),…,f(n),從中任意選擇k個可作為加密算法的密鑰,在所述的步驟2)中,所述的根據(jù)密鑰求初始密鑰就是對從方程f(1),f(2),…,f(n)中任意選取的k個方程求解,所求得的M就是所述的初始密鑰。
7.一種權利要求1所述的硬盤扇區(qū)級數(shù)據(jù)加密解密方法的專用系統(tǒng),由發(fā)送單元(10)、加密/解密單元(11)、接收單元(12)和密鑰流生成單元(16)組成;其特征在于,所述的密鑰流生成單元(16)采用2組128位的寄存器組,每組包含8個寄存器,兩組寄存器之間采用Ping-Pong結構;在數(shù)據(jù)的加密或解密過程中,數(shù)據(jù)從發(fā)送單元(10)發(fā)出,傳送到加密/解密單元(11),密鑰流生成單元(16)生成的密鑰流發(fā)送到加密/解密單元(11)上,密鑰流中的密鑰與數(shù)據(jù)做異或操作,加密或解密后的數(shù)據(jù)直接發(fā)送到接收單元(12)。
全文摘要
本發(fā)明公開一種硬盤扇區(qū)級數(shù)據(jù)加密解密方法,實現(xiàn)在存儲協(xié)議的設備模型層或物理層對數(shù)據(jù)的加密和解密,包括從具有I2C接口的電可擦寫可編程只讀存儲器中讀取數(shù)據(jù),得到密鑰;根據(jù)密鑰擴展機制,由密鑰求初始密鑰;對扇區(qū)邏輯地址和存儲設備序列號做異或操作,并將結果移位,得到初始化向量,稱為地址密鑰;利用初始密鑰對地址密鑰做加密,形成密鑰流;對傳輸過程中的數(shù)據(jù)進行加密或解密,做寫操作時,數(shù)據(jù)從CPU傳出,將密鑰流與數(shù)據(jù)做異或操作,實現(xiàn)數(shù)據(jù)的加密或解密,數(shù)據(jù)加密或解密后直接發(fā)送到存儲設備,做讀操作時,則相反。本發(fā)明的優(yōu)點在于提高了存儲設備上數(shù)據(jù)的安全性,防止了重要數(shù)據(jù)的泄漏。
文檔編號H04L9/00GK1936870SQ200510086510
公開日2007年3月28日 申請日期2005年9月23日 優(yōu)先權日2005年9月23日
發(fā)明者馬士超, 王貞松 申請人:中國科學院計算技術研究所