馬建鵬,姚智慧,趙明亮
(中國(guó)航天科工集團(tuán)二院706所,北京100854)
作為數(shù)據(jù)存儲(chǔ)載體的存儲(chǔ)設(shè)備,如何保證數(shù)據(jù)能夠訪(fǎng)問(wèn)受控,使得存儲(chǔ)設(shè)備即使在丟失、不受控等狀態(tài)下,依然保證其存儲(chǔ)數(shù)據(jù)不為非法用戶(hù)獲取,成為數(shù)據(jù)安全研究的重要內(nèi)容之一。SATA (serial ATA)接口是當(dāng)前主流的串行硬盤(pán)接口,具有傳輸速率高、可靠性高、連線(xiàn)簡(jiǎn)單等優(yōu)勢(shì)。然而由于SATA 協(xié)議實(shí)現(xiàn)復(fù)雜度高和安全技術(shù)硬件實(shí)現(xiàn)比較困難等原因,國(guó)內(nèi)只有少數(shù)科研機(jī)構(gòu)展開(kāi)了基于SATA 接口的安全存儲(chǔ)控制研究,且相關(guān)研究多是基于控制原語(yǔ)和數(shù)據(jù)的完全轉(zhuǎn)發(fā)開(kāi)展,其實(shí)現(xiàn)較為簡(jiǎn)單,不能自主完成對(duì)主機(jī)或硬盤(pán)的交互,難以快速對(duì)傳輸狀態(tài)的變化及異常做出響應(yīng),可靠性較低。本文針對(duì)安全存儲(chǔ)自主創(chuàng)新的需求,在深入研究SATA 協(xié)議和信息安全技術(shù)的基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)了一種基于SATA 接口的安全存儲(chǔ)控制系統(tǒng)。經(jīng)過(guò)FPGA 上的測(cè)試,該系統(tǒng)能自主完成對(duì)主機(jī)和硬盤(pán)的交互,快速處理異常,準(zhǔn)確提取信息,并實(shí)現(xiàn)數(shù)據(jù)加解密和身份認(rèn)證等安全功能。
SATA 協(xié)議體系[1-3]采用典型層次結(jié)構(gòu),分為四層:物理層、鏈路層、傳輸層和應(yīng)用層。物理層負(fù)責(zé)與電氣相關(guān)的特性,主要完成差分信號(hào)和OOB信號(hào)的收發(fā)、上電復(fù)位及初始化、電源管理、速率協(xié)商、串并/并串轉(zhuǎn)換和數(shù)據(jù)對(duì)齊等功能;鏈路層負(fù)責(zé)鏈路上幀的發(fā)送與接收,主要完成通過(guò)握手建立和釋放鏈路、幀定界、CRC 校驗(yàn)與生成、沖突仲裁、流量控制、8b/10b編碼與解碼、加解擾等功能;傳輸層負(fù)責(zé)FIS相關(guān)的事務(wù),主要完成FIS的產(chǎn)生與解析、差錯(cuò)處理和流量控制等功能;應(yīng)用層負(fù)責(zé)各種命令的執(zhí)行以及相關(guān)寄存器的訪(fǎng)問(wèn)。
本 系 統(tǒng) 實(shí) 現(xiàn) 于Xilinx Virtex-6 系 列[4,5]FPGA。該 系 列FPGA具有先進(jìn)的架構(gòu)和極高的性能,是業(yè)界首批采用40納米級(jí)工藝的FPGA。其可提供多達(dá)758,784 個(gè)邏輯單元,1200個(gè)I/O引腳,具備強(qiáng)大的時(shí)鐘管理能力,能夠滿(mǎn)足本系統(tǒng)的資源需求。其中,Virtex-6中的高速串行收發(fā)器RocketIO GTX 包括8b/10b編解碼器、極性控制器、FIFO、CRC模塊、串化/解串器、接收/發(fā)送緩沖器、預(yù)加重模塊、時(shí)鐘生成器、時(shí)鐘恢復(fù)器等模塊,并具有高效的可配置性和與FPGA 可編程邏輯資源緊密結(jié)合的特點(diǎn),可滿(mǎn)足各種不斷發(fā)展的高速串行協(xié)議的需要。通過(guò)調(diào)用RocketIO GTX 模塊,正確的配置模塊參數(shù),可以實(shí)現(xiàn)系統(tǒng)存儲(chǔ)控制模塊中物理層功能模塊的部分功能,從而簡(jiǎn)化系統(tǒng)設(shè)計(jì)。
本系統(tǒng)橋接于主機(jī)硬盤(pán)之間,由存儲(chǔ)控制模塊和加密認(rèn)證模塊兩部分組成[6],如圖1 所示。傳輸鏈路建立后,流經(jīng)系統(tǒng)的信息分為控制原語(yǔ)、加密幀和非加密幀,系統(tǒng)對(duì)不同的信息采用不同的處理方式。其中存儲(chǔ)控制模塊即時(shí)響應(yīng)控制原語(yǔ),同時(shí)觸發(fā)內(nèi)部狀態(tài)機(jī)的跳轉(zhuǎn);對(duì)其它信息,經(jīng)過(guò)串并轉(zhuǎn)換、解碼、數(shù)據(jù)提取甄別等操作,將識(shí)別出的非加密幀再經(jīng)重新裝幀、編碼、并串轉(zhuǎn)換等操作直接轉(zhuǎn)發(fā),對(duì)識(shí)別出的加密幀遞交加密認(rèn)證模塊做加密處理。
圖1 系統(tǒng)框架
系統(tǒng)詳細(xì)實(shí)現(xiàn)結(jié)構(gòu)如圖2所示。
2.3.1 存儲(chǔ)控制模塊
存儲(chǔ)控制模塊由物理層子模塊、鏈路層子模塊和路徑選擇子模塊三部分構(gòu)成。其中物理層子模塊和鏈路層子模塊分為主機(jī)端物理層子模塊和鏈路層子模塊,以及設(shè)備端物理層子模塊和鏈路層子模塊,分別用于完成對(duì)硬盤(pán)和主機(jī)的交互,實(shí)現(xiàn)協(xié)議物理層和鏈路層中規(guī)定功能;路徑選擇子模塊完成對(duì)鏈路層子模塊提取數(shù)據(jù)的甄別,決定數(shù)據(jù)是否加密,同時(shí)負(fù)責(zé)數(shù)據(jù)緩存和流量控制信號(hào)的生成。
(1)物理層子模塊
主機(jī)端物理層子模塊和設(shè)備端物理層子模塊在功能與實(shí)現(xiàn)上基本相同。本系統(tǒng)主要通過(guò)完成Xilinx GTX IP核的配置和OOB控制器的設(shè)計(jì)2個(gè)部分的工作來(lái)實(shí)現(xiàn)物理層的相關(guān)功能[7]。
通過(guò)使用ISE軟件提供的Core Generator工具配置Xi-
圖2 系統(tǒng)結(jié)構(gòu)
linx Virtex-6FPGA 內(nèi)嵌的硬核GTX 的參數(shù),使其正確完成高速串行比特的發(fā)射和接收、OOB 信號(hào)檢測(cè)、時(shí)鐘數(shù)據(jù)恢復(fù)、時(shí)鐘補(bǔ)償、預(yù)加重、去加重、串并/并串轉(zhuǎn)換和極性檢測(cè)等功能;同時(shí)基于Xilinx提供的數(shù)字時(shí)鐘管理器實(shí)現(xiàn)了時(shí)鐘輸出和時(shí)鐘倍頻;并通過(guò)FPGA 的動(dòng)態(tài)配置端口實(shí)現(xiàn)GTX 模塊屬性的配置。配置如圖3所示。
圖3 GTX 模塊配置
OOB (out of band)信 號(hào) 是 一 種 與 正 常 數(shù) 據(jù) 信 號(hào) 峰 峰值不同的差分信號(hào),主要用于物理層鏈路的初始化,由數(shù)據(jù)和空閑兩部分組成,并根據(jù)空閑時(shí)間的不同分為COMINIT、COMRESET 和COMWAKE 這3 種 類(lèi) 型。OOB 控制器通過(guò)控制OOB信號(hào)的發(fā)送接收,完成如圖4所示鏈路初始化過(guò)程,來(lái)實(shí)現(xiàn)物理層的上電初始化功能。
(2)鏈路層子模塊
主機(jī)端鏈路層子模塊和設(shè)備端鏈路層子模塊僅在幀發(fā)送沖突時(shí)的處理上有差異,其它實(shí)現(xiàn)相同。因?yàn)殒溌穼幼幽K的實(shí)現(xiàn)較為復(fù)雜,本系統(tǒng)將其功能實(shí)現(xiàn)部分與控制部分分開(kāi)實(shí)現(xiàn),簡(jiǎn)化設(shè)計(jì)。
圖4 物理層上電初始化
鏈路層子模塊的功能主要分為控制原語(yǔ)的收發(fā)、CRC校驗(yàn)和擾碼生成三部分。其中控制原語(yǔ)是用來(lái)控制和維持串行鏈路數(shù)據(jù)傳輸狀態(tài)的一系列信息原語(yǔ),是由4個(gè)字節(jié)組成的鏈路層信息字,包括用于幀定界的SOF和EOF、流量控制的HOLD 和HOLDA、接收反饋的R_OK 和R_ERR 等18種原語(yǔ)。CRC 即循環(huán)冗余校驗(yàn),是一種檢錯(cuò)能力強(qiáng)、計(jì)算開(kāi)銷(xiāo)小、易于編碼實(shí)現(xiàn)的校驗(yàn)算法。在鏈路層子模塊中,通過(guò)采用生成多項(xiàng)式G (X)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1,對(duì)信息幀中的起始原語(yǔ)SOF 和結(jié)束原語(yǔ)EOF 之間所有的有效數(shù)據(jù)進(jìn)行串行CRC 校驗(yàn),來(lái)檢測(cè)信息的傳輸錯(cuò)誤。擾碼是在8b/10b編碼基礎(chǔ)上,通過(guò)使用線(xiàn)性反饋移位寄存器來(lái)實(shí)現(xiàn)擾碼生成多項(xiàng)式G (X)=X16+X15+X13+X4+1,進(jìn)一步調(diào)整連續(xù)的1或0信號(hào),最大程度地避免連續(xù)信號(hào)在傳輸過(guò)程中所受到的干擾。鏈路層子模塊通過(guò)原語(yǔ)的解析、CRC檢測(cè)和解擾,以及原語(yǔ)的生成、CRC 生成和加擾等過(guò)程,實(shí)現(xiàn)鏈路信息的接收和發(fā)送。
圖5 鏈路層狀態(tài)遷移
鏈路層子模塊使用狀態(tài)機(jī)來(lái)控制其功能實(shí)現(xiàn),使鏈路層子模塊能夠正確有序完成一幀數(shù)據(jù)從SOF 原語(yǔ)、數(shù)據(jù)、CRC 到EOF 原語(yǔ)的發(fā)送與接收,正確完成對(duì)數(shù)據(jù)部分CRC校驗(yàn)和數(shù)據(jù)加解擾,以及流量控制實(shí)現(xiàn)等。其根據(jù)接收信息以及路徑選擇子模塊的反饋信息來(lái)控制發(fā)送與接收時(shí)序,并生成差錯(cuò)管理相關(guān)的控制信號(hào),來(lái)實(shí)現(xiàn)對(duì)鏈路狀態(tài)的控制。鏈路狀態(tài)機(jī)的狀態(tài)遷移如圖5所示。
(3)路徑選擇子模塊
路徑選擇子模塊處理的數(shù)據(jù)結(jié)構(gòu)在協(xié)議中稱(chēng)為幀信息結(jié)構(gòu) (frame information structure,F(xiàn)IS),是協(xié)議鏈路層中幀結(jié)構(gòu)去除幀頭、幀尾以及流量控制原語(yǔ)后的信息。該數(shù)據(jù)結(jié)構(gòu)負(fù)責(zé)陰影寄存器 (shadow register)內(nèi)容、ATA 命令、數(shù)據(jù)傳輸?shù)慕⑿畔?、?shù)據(jù)、自測(cè)試啟動(dòng)指令和固定FIS種類(lèi)值等信息的傳輸。路徑選擇子模塊通過(guò)解析FIS頭部的類(lèi)型 (type)字段,甄別FIS種類(lèi),同時(shí)界定FIS中數(shù)據(jù)起始位置;而后根據(jù)主機(jī)到硬盤(pán)的Register FIS中的命令(command)字段判斷是否加密。若需加密,則寄存其后Data FIS頭部 (head),并將FIS中數(shù)據(jù)部分送入加密認(rèn)證模塊,加密完成后將數(shù)據(jù)與頭部拼接,送至鏈路層子模塊處理;若無(wú)需加密,則直接傳送鏈路層子模塊。同時(shí),在FIFO 中緩存FIS數(shù)據(jù),并生成流量控制信號(hào),完成通路上的流量控制。
2.3.2 加密認(rèn)證模塊
加密認(rèn)證模塊由加密子模塊、身份認(rèn)證子模塊和用戶(hù)UKey三部分構(gòu)成。其中加密認(rèn)證子模塊負(fù)責(zé)加密數(shù)據(jù)格式的轉(zhuǎn)換和AES 256 算法的實(shí)現(xiàn);身份認(rèn)證子模塊和用戶(hù)UKey共同完成用戶(hù)的身份認(rèn)證功能。
(1)加密子模塊
AES算法,是一種使用迭代型分組密碼的對(duì)稱(chēng)加密算法,其分組長(zhǎng)度和密鑰長(zhǎng)度均可在128位、192位和256位中作選擇,如圖6所示是本系統(tǒng)所使用的128位分組長(zhǎng)度、256位密鑰AES 算法加解密過(guò)程示意圖。256 位密鑰的AES算法使用14輪迭代運(yùn)算,其中前13輪迭代完全相同,依次經(jīng)過(guò)字節(jié)替換 (substitute bytes)、行移位變換 (shift rows)、列混合變換(mix columns)和輪密鑰加(add round keys)4 個(gè)步驟,而最后一輪迭代則跳過(guò)列混合變換。其加密過(guò)程是基于4X4的字節(jié)矩陣運(yùn)作的。其中每一輪迭代使用的子密鑰均是原始密鑰通過(guò)Key Expansion密鑰擴(kuò)展算法與字節(jié)矩陣共同生成;字節(jié)替換是使用非線(xiàn)性的替換函數(shù),通過(guò)查找表的方式將各個(gè)字節(jié)替換;行移位變換將矩陣中的各行進(jìn)行循環(huán)移位;列混合變換則通過(guò)線(xiàn)性轉(zhuǎn)換混合矩陣中各個(gè)直行。在本系統(tǒng)的加密算法實(shí)現(xiàn)中,對(duì)密鑰擴(kuò)展運(yùn)算做出優(yōu)化:對(duì)運(yùn)算出的各輪次密鑰做緩存,此后使用不再運(yùn)算,直接查找;同時(shí),將算法的迭代過(guò)程分為14段,進(jìn)行14級(jí)流水操作[8]。
加密子模塊處理的原始數(shù)據(jù),是經(jīng)過(guò)8b/10b解碼和數(shù)據(jù)解擾的加密FIS數(shù)據(jù)部分,也是無(wú)加密時(shí)最終存儲(chǔ)在硬盤(pán)上的數(shù)據(jù)。加密子模塊在實(shí)現(xiàn)加密算法前,使用輸入緩存和輸出緩存,完成存儲(chǔ)控制模塊中的32位位寬數(shù)據(jù),與加密算法中的128位位寬數(shù)據(jù),2種不同位寬數(shù)據(jù)格式的轉(zhuǎn)換;同時(shí),使用2個(gè)緩存完成由于加解密延遲所產(chǎn)生的流量控制。
圖6 AES算法加解密流程
(2)身份認(rèn)證子模塊和用戶(hù)UKey
身份認(rèn)證子模塊和用戶(hù)UKey共同完成基于非對(duì)稱(chēng)密鑰體制的雙向身份認(rèn)證。
非對(duì)稱(chēng)密鑰加密是指對(duì)信息的加密和解密使用不同密鑰的加密過(guò)程,其由一個(gè)公開(kāi)的公鑰和一個(gè)私有的私鑰構(gòu)成一對(duì)密鑰,且互為唯一解開(kāi)對(duì)方加密數(shù)據(jù)的密鑰。在加密認(rèn)證模塊中,用戶(hù)UKey擁有自己的私鑰Kd1和身份認(rèn)證子模塊的公鑰Ke2,模塊擁有自己的私鑰kd2 和用戶(hù)UKey的公鑰Ke1,且Kd1、Ke1、Kd2、Ke2 均不公開(kāi)。用戶(hù)UKey對(duì)模塊進(jìn)行認(rèn)證時(shí),首先用戶(hù)UKey生成一串隨機(jī)數(shù)X,并用自己的私鑰Kd1 對(duì)數(shù)據(jù)加密DKd1 (X),然后將密文發(fā)送給模塊,模塊用用戶(hù)UKey的公鑰Ke1解密密文EKe1 (DKd1 (X)),再用自己的私鑰Kd2 進(jìn)行加密DKd2 (Eke1 (DKd1 (X))),并返回給用戶(hù)UKey,最后用戶(hù)UKey用模塊的公鑰Ke2 解密Eke2 (DKd2 (Eke1(DKd1 (X)))),然后與最初生成的隨機(jī)數(shù)X 進(jìn)行對(duì)比,如果Eke2 (DKd2 (Eke1 (DKd1 (X))))=X,則說(shuō)明模塊身份正確,否則不正確。同樣模塊也對(duì)用戶(hù)UKey進(jìn)行相同的認(rèn)證過(guò)程[9]。其中非對(duì)稱(chēng)加密算法的實(shí)現(xiàn),使用第三方提供的芯片完成。
加密子模塊的密鑰存儲(chǔ)于用戶(hù)UKey的ROM 中。當(dāng)身份認(rèn)證子模塊和用戶(hù)UKey成功完成上述認(rèn)證過(guò)程后,用戶(hù)UKey將自己私鑰Kd1加密過(guò)的密鑰傳輸給身份認(rèn)證子模塊,身份認(rèn)證子模塊將用戶(hù)UKey公鑰Ke1解密后的密鑰傳輸給加密子模塊,完成密鑰的傳輸。至此,數(shù)據(jù)通路連通,加密子模塊激活。
本系統(tǒng)經(jīng)過(guò)模塊級(jí)和系統(tǒng)級(jí)仿真,以及Xilinx ML623開(kāi)發(fā)板的板級(jí)驗(yàn)證。其中模塊與系統(tǒng)級(jí)仿真使用Mentor公司開(kāi)發(fā)的主機(jī)行為模型,及實(shí)驗(yàn)室自主研發(fā)的硬盤(pán)行為模型構(gòu)成的仿真環(huán)境,并在Synopsys公司的VCS軟件中進(jìn)行了功能仿真;測(cè)試環(huán)境由搭載Virtex-6 FPGA 芯片的ML623開(kāi)發(fā)板,使用SATA 線(xiàn)纜與ML623開(kāi)發(fā)板相連的SATA 接口硬盤(pán)與計(jì)算機(jī)A,以及使用JTAG 線(xiàn)纜與ML623開(kāi)發(fā)板相連的計(jì)算機(jī)B構(gòu)成,計(jì)算機(jī)B上ISE 軟件通過(guò)JTAG 下載線(xiàn)將生成的BIT 文件下載至FPGA 中,輔助Xilinx推出的用于FPGA 產(chǎn)品的Chipscope在線(xiàn)邏輯分析儀工具以及SATA 協(xié)議分析儀,完成系統(tǒng)的板級(jí)驗(yàn)證。
如圖7所示為常用DMA 加密命令,WRITE DMA (用于主機(jī)寫(xiě)入指定扇區(qū)數(shù)據(jù),加密命令)命令的系統(tǒng)仿真。
圖7 加密命令系統(tǒng)仿真
HDTune軟件對(duì)系統(tǒng)進(jìn)行的性能測(cè)試結(jié)果如圖8所示。
圖8 系統(tǒng)性能對(duì)比
本文在深入分析研究SATA 協(xié)議和存儲(chǔ)安全控制技術(shù)的基礎(chǔ)上,提出并實(shí)現(xiàn)了SATA 接口存儲(chǔ)設(shè)備的安全控制技術(shù)設(shè)計(jì),并通過(guò)系統(tǒng)仿真,以及基于ML623 開(kāi)發(fā)板和virtex-6FPGA 芯片的半實(shí)物驗(yàn)證,詳盡的測(cè)試和驗(yàn)證了存儲(chǔ)控制、用戶(hù)身份認(rèn)證和數(shù)據(jù)加解密等功能,使得存儲(chǔ)安全控制技術(shù)設(shè)計(jì)在確保主機(jī)和硬盤(pán)正常進(jìn)行存儲(chǔ)數(shù)據(jù)加密、非存儲(chǔ)數(shù)據(jù)正常交互的同時(shí),降低其對(duì)主機(jī)與存儲(chǔ)設(shè)備間數(shù)據(jù)傳輸帶寬的影響,提高SATA接口存儲(chǔ)安全控制技術(shù)的可用性。
[1]ANSI INCITS 397-2005,AT attachment with packet interface-7volume 1 [S].
[2]ANSI INCITS 397-2005,AT attachment with packet interface-7volume 2 [S].
[3]ANSI INCITS 397-2005,AT attachment with packet interface-7volume 3 [S].
[4]Xilinx,inc.Virtex-6family overview [EB/OL]. [2012-01-19].http://www.xilinx.com/support/documentation/data_sheets/ds150.pdf.
[5]Xilinx,inc.Virtex-6packaging and pinout specification [EB/OL].[2011-11-23].http://www.xilinx.com/support/documentation/user_guides/ug365.pdf.
[6]LONG Yu.Design of SATA 2.0interface hard disk encryption and decryption chip data path and implementation on FPGA[D].Chengdu:University of Electronic Science and Technology of China,2009 (in Chinese).[龍羽.SATA 2.0硬盤(pán)加解密接口芯片數(shù)據(jù)通路的設(shè)計(jì)與FPGA 實(shí)現(xiàn) [D].成都:電子科技大學(xué),2009.]
[7]LIU Yang.Physical layer design and system debugging of SATA II interface encryption and decryption chip [D].Chengdu:University of Electronic Science and Technology of China,2009(in Chinese).[劉洋.SATA II加解密接口芯片的物理層設(shè)計(jì)與系統(tǒng)調(diào)試 [D].成都:電子科技大學(xué),2009.]
[8]FENG Zhixing.Research and hardware design of AES in mobile memory encryption system [D].Shanghai:Shanghai Jiao Tong University,2009 (in Chinese). [馮志興.AES算法在移動(dòng)存儲(chǔ)加密系統(tǒng)中的硬件設(shè)計(jì) [D].上海:上海交通大學(xué),2009.]
[9]Douglas R Stinson.Cryptography theory and practice [M].3rd ed.Beijing:Publishing House of Electronics Industry,2009 (in Chinese). [Douglas R Stinson.密碼學(xué)原理與實(shí)踐[M].3版:北京:電子工業(yè)出版社,2009.]
[10]LI Cui,REN Jie,YU Bin.Design and implementation of USB IP core with identity authentication function [J].Journal of Hefei University of Technology (Natural Science),2013,36 (5):580-585 (in Chinese).[李翠,任杰,郁濱.一種具有身份認(rèn)證功能的USB IP核設(shè)計(jì)與實(shí)現(xiàn) [J].合肥工業(yè)大學(xué)學(xué)報(bào) (自然科學(xué)版),2013,36 (5):580-585.]