徐 欣,陳錦飛
(杭州電子科技大學通信工程學院,浙江 杭州 310018)
?
基于Ukey和LiveOS的加密硬盤安全認證方案
徐 欣,陳錦飛
(杭州電子科技大學通信工程學院,浙江 杭州 310018)
針對目前硬盤加密方案通用性較差以及身份認證過程安全性不夠的問題,提出一種全加密固態(tài)硬盤安全認證和可信啟動方案.利用商密Ukey實現(xiàn)秘鑰的安全存儲,利用定制精簡的LiveOS系統(tǒng)實現(xiàn)Ukey和加密硬盤的安全配對、認證、秘鑰傳遞以及硬盤系統(tǒng)的可信啟動.最后提出了一種秘鑰安全恢復方案.方案基于現(xiàn)有安全ASIC芯片構建,并在通用PC系統(tǒng)上驗證通過,具有很好的通用性、安全性及易用性.
加密硬盤;身份認證;可信啟動
在現(xiàn)代信息系統(tǒng)中,用密碼技術對信息保密的安全性取決于對密鑰的安全保護[1].目前,基于硬件實現(xiàn)的硬盤加密方案通常是通過在主機與硬盤的數(shù)據(jù)傳輸鏈路之間串接現(xiàn)場可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)模塊來實現(xiàn)數(shù)據(jù)實時加解密,使用智能卡存儲秘鑰及認證身份[2],但缺乏用戶交互,無法判定智能卡持卡人的身份,且通用性較差.自加密硬盤(Self-Encrypting Drives,SED)在硬盤控制器內(nèi)實現(xiàn)加密引擎,可直接與PC主板對接,通用性較好,但沒有兼顧通用性和安全性的秘鑰管理和身份認證方案.文獻[3]使用ATA硬盤密碼鎖,通過口令驗證用戶身份.口令驗證易被暴力破解,而且能通過搭線攻擊竊取.文獻[4]提出了一種基于Ukey(USB Key)的安全BIOS模型,使用Ukey存儲秘鑰,利用定制BIOS來實現(xiàn)加密硬盤和Ukey的相互認證,但這意味著加密盤只能工作在定制的BIOS環(huán)境下,無法與其它PC環(huán)境兼容,因此通用性大大降低.本文基于Ukey和定制化LiveOS,針對通用性更好的自加密硬盤提出并實現(xiàn)了一種安全認證方案,在保證認證安全性的同時,也具有很好的通用性.
系統(tǒng)框架如圖1所示.采用自加密硬盤的計算機開機后,首先會啟動主板BIOS,然后引導LiveOS從Ukey啟動,實現(xiàn)硬盤對Ukey及用戶身份的認證,認證通過后,LiveOS從Ukey讀取秘鑰注入硬盤,硬盤用此秘鑰實現(xiàn)對數(shù)據(jù)流的實時加密寫和解密讀操作.
硬盤為SATA接口固態(tài)硬盤(Solid State Drives,SSD),主控為專用集成電路(Application Specific Integrated Circuit,ASIC),內(nèi)部結構如圖2所示.主控實現(xiàn)了基本的SATA協(xié)議解析及MMC/eMMC(Embedded Multi Media Card)陣列讀寫控制,同時也集成了各種硬件加密模塊,如RSA/ECC,DES/AES,sha128/256以及商密算法SM2,SM3和SM4.除此之外,主控還支持ISP(In-System Programming),可通過固件(Firmware)靈活控制各模塊的使用,與PC端應用層配合實現(xiàn)安全應用.
商密Ukey集成了商密算法的USBkey,UKey與USB技術,USB主控結構與圖2類似,實現(xiàn)了基本的USB協(xié)議,集成了各種硬件加密模塊,同樣支持ISP.由于加解密運算完全在UKey內(nèi)進行而不會在其他設備上留下任何痕跡[5],因此使用Ukey作為秘鑰存儲和身份認證設備,在保障秘鑰和認證安全性的同時,也具有很好的通用性,可應用于任何留有USB接口的計算機.
RSA,AES等國際加密算法可能存在“后門”風險,為提高安全性,本設計方案中無論自加密硬盤還是Ukey均選擇商密算法來保障數(shù)據(jù)的安全.
圖1 系統(tǒng)框架
圖2 SSD主控芯片結構
LiveOS是一種可在U盤和CD上啟動的系統(tǒng),通常基于Linux內(nèi)核,作為系統(tǒng)維護工具,如恢復磁盤文件、查殺病毒等[6].本文基于Linux內(nèi)核定制出LiveOS,并在其中集成整個認證系統(tǒng),固化于Ukey之中,實現(xiàn)開機引導.Ukey通常在通用系統(tǒng)上與應用層軟件配合實現(xiàn)身份認證,本文首次在Ukey中固化可引導的LiveOS實現(xiàn)認證,相比通用系統(tǒng),定制化的LiveOS不會有病毒木馬的威脅,同時對于全加密硬盤而言,認證通過之前盤內(nèi)系統(tǒng)無法啟動,LiveOS認證相比BIOS認證具有更好的通用性.
LiveOS主要由2部分構成:裁剪的Linux內(nèi)核以及虛擬文件系統(tǒng)initrd(initial RAM Disk).
1)Linux內(nèi)核開放源碼.用戶可根據(jù)自己的需求裁剪和編譯Linux內(nèi)核[7].LiveOS只作為認證平臺,為提高啟動和運行速度,內(nèi)核應盡可能精簡.將最基本的ATA/SCSI驅(qū)動,USB驅(qū)動,F(xiàn)AT/NTFS/EXT3/EXT4文件系統(tǒng)驅(qū)動等編譯成內(nèi)核模塊.為保證安全性,LiveOS應離線運行,因此去除所有網(wǎng)絡驅(qū)動,顯示驅(qū)動保留最基本的文字終端即可.
2)虛擬文件系統(tǒng)initrd(initial RAM Disk)即Linux初始RAM磁盤.其中包含各種可執(zhí)行程序和驅(qū)動程序,在LiveOS中,initrd作為最終的根文件系統(tǒng)被Linux內(nèi)核掛載,整個文件系統(tǒng)均在RAM中運行.Initrd文件目錄遵循FHS(Filesystem Hierarchy Standard)規(guī)范[8].
認證系統(tǒng)隨LiveOS開機啟動,實現(xiàn)Ukey與加密硬盤的初始化配對、認證,秘鑰傳遞以及硬盤系統(tǒng)的可信啟動.認證系統(tǒng)與Ukey及加密硬盤使用SCSI Generic協(xié)議通信,應用層通過ioctl()發(fā)送事先協(xié)商好的命令,設備固件(firmware)響應命令并完成相應操作.
3.1 Ukey和加密硬盤的初始化配對
為保證加密盤內(nèi)數(shù)據(jù)安全,確保只有唯一的Ukey才能解密盤內(nèi)數(shù)據(jù),需要設計一種安全配對機制,防止偽造Ukey破解硬盤.本文通過公鑰交換實現(xiàn)Ukey和加密盤的一一配對.公鑰交換流程如圖3所示.
Ukey和加密硬盤控制IC內(nèi)部均有SM2密鑰對生成模塊,由于密鑰對的唯一性,通過交換公鑰配對,既能對后續(xù)秘鑰傳遞過程進行加密,也可通過SM2簽名實現(xiàn)加密盤對Ukey的認證.設備初始化時生成的SM2私鑰是其唯一性標識,為保障安全,私鑰在任何情況下都只能在設備內(nèi)部使用,對外沒有讀寫接口.
圖3 公鑰交換配對流程
為保證數(shù)據(jù)流的加解密速度,硬盤加密引擎使用對稱加密算法SM4加解密數(shù)據(jù).Ukey和加密盤完成配對后,必須設置一個SM4秘鑰,所有寫入硬盤的數(shù)據(jù)均通過此秘鑰加密.硬盤內(nèi)數(shù)據(jù)的保密性取決于該秘鑰的安全,因此需要將此秘鑰通過安全信道存放于Ukey之中.秘鑰安全存儲流程如圖4所示.
圖4 秘鑰安全存儲過程
加密盤控制IC擁有真隨機數(shù)發(fā)生器TRNG(True Random Number Generator),截取128 bit用作SM4秘鑰.由于配對過程已交換公鑰,SM4秘鑰在加密盤內(nèi)部通過Ukey公鑰加密,再通過認證系統(tǒng)傳遞給Ukey,Ukey用自身私鑰解密存儲.秘鑰加密傳輸保證了SM4秘鑰的安全性.
為驗證Ukey持有者的身份,初始化階段,用戶需設置一個用于身份認證的PIN碼,該PIN碼使用國密哈希算法SM3加密,存儲在Ukey中用于認證階段的第一步認證.
Ukey和加密盤配對完成后,需要各自設置初始化標識,在LiveOS啟動后的認證階段,讀取該標識并進入相應操作.LiveOS關機后,加密盤的秘鑰掉電銷毀,初始化過程完成.
3.2 LiveOS安全認證及硬盤系統(tǒng)可信啟動
加密盤初始化后,硬盤已進入加密狀態(tài),由于加密秘鑰保存在與之配對的Ukey之中,只有從Ukey注入秘鑰到加密盤中,才能進行硬盤讀寫操作,解密數(shù)據(jù)以及硬盤系統(tǒng)的可信啟動.只有通過安全認證才能成功注入正確的秘鑰.整個認證過程分3個階段.
第一階段為PIN碼認證階段,流程如圖5所示.
圖5 PIN碼認證階段
BIOS啟動后,由于加密盤處于加密狀態(tài),盤內(nèi)系統(tǒng)無法啟動,必須插入Ukey啟動LiveOS開啟認證.認證系統(tǒng)會檢查Ukey和加密盤的初始化標識,如果均未初始化,會詢問用戶是否開始Ukey和加密盤的初始化配對;如果只有一方初始化說明Ukey和加密盤必定不是一一配對關系.只有兩者均初始化后才能進行用戶PIN碼驗證,用戶PIN碼傳入Ukey計算SM3哈希值,與Ukey初始化階段存儲的哈希值比較,一致則進行下一步認證,否則認證失敗.
第二階段為加密盤認證Ukey和秘鑰注入階段,流程圖如圖6所示.
身份認證有2種最基本的手段:根據(jù)你所知道的信息來證明你的身份(what you know)及根據(jù)你所擁有的東西來證明你的身份(what you have).
PIN碼是用戶對Ukey所有權的證明,即what you know,而加密盤對Ukey的認證解決的正是what you have的問題.只有唯一與加密盤配對的的Ukey才能注入正確的秘鑰,并解密硬盤.
定制的LiveOS不會有感染木馬病毒的風險,但只能為認證提供一個安全的軟件環(huán)境,由于存在搭線攻擊的可能,即PC主板有可能被植入用于抓取總線數(shù)據(jù)的硬件,從而導致SCSI命令和數(shù)據(jù)流被截獲,攻擊者通過重放命令和數(shù)據(jù)流從而在沒有Ukey的情況下解密硬盤,因此避免重放攻擊至關重要.
在秘鑰注入階段,來自Ukey的加密盤SM4秘鑰在Ukey內(nèi)部通過加密盤自身公鑰加密,密文通過特定的SCSI命令傳輸給加密盤解密,一旦攻擊者重放此命令和密文,加密盤即可解密出正確的數(shù)據(jù)加密秘鑰,攻擊者無需Ukey便可解密硬盤.因此在加密盤固件響應秘鑰注入命令前,應該實施一個與Ukey有關的認證過程,而且同樣應該防止重放攻擊.采用圖6所示的挑戰(zhàn)響應式認證可以有效防止重放攻擊.先由加密盤產(chǎn)生隨機數(shù),該隨機數(shù)送入Ukey,Ukey用自身SM2私鑰對該隨機數(shù)簽名,然后加密盤使用之前與之配對的Ukey SM2公鑰解簽名,解簽成功即可證明Ukey即為加密盤唯一的配對Ukey.由于用于簽名的隨機數(shù)每次均不同,即使攻擊者重放簽名也無法解簽成功.
加密盤解簽成功后通知LiveOS應用層進行下一步操作,同時,加密盤固件產(chǎn)生一個標志位用于證明解簽成功,這一點對防止秘鑰注入階段的重放攻擊也至關重要.在加密盤響應秘鑰注入口令時,必須先檢查該標志位,存在此標志位即證明Ukey認證是通過的,然后解密出正確的秘鑰,否則,不進行解密操作.
第三階段為磁盤數(shù)據(jù)解密和盤內(nèi)系統(tǒng)的可信啟動.
PIN碼和Ukey認證通過后,加密盤即可獲得用于數(shù)據(jù)實時加解密的SM4秘鑰,該秘鑰用來對數(shù)據(jù)流的加密寫和解密讀操作,這對于用戶來說是透明的.LiveOS重啟過程中加密盤不會掉電,因此SM4秘鑰得到保留,如果加密盤內(nèi)預裝有操作系統(tǒng),經(jīng)過MBR和Bootloader階段,系統(tǒng)啟動,啟動后即可對加密盤進行讀寫操作.對windows操作系統(tǒng)而言,其登陸口令易被win PE等工具破解,但對加密硬盤而言,沒有Ukey的認證過程,盤內(nèi)系統(tǒng)將無法啟動.Ukey和LiveOS的認證方案一定程度上實現(xiàn)了硬盤系統(tǒng)的可信啟動.
加密盤內(nèi)數(shù)據(jù)的解密秘鑰存儲在Ukey之中,一旦Ukey丟失,盤內(nèi)數(shù)據(jù)將無法解密,這無疑會造成嚴重的數(shù)據(jù)損失.因此設計一種安全的秘鑰恢復方案顯得尤為重要.本文設計了一種雙因子認證的秘鑰安全恢復方案.
為了恢復秘鑰,秘鑰除了存儲在Ukey之中,還必須加密保存在加密盤內(nèi)的安全存儲區(qū).本文使用雙因子加密備份秘鑰.首先是用戶因子,即在Ukey與加密盤的配對階段,用戶除了設置PIN碼外,也需要設置一個秘鑰恢復密碼Ku,在加密盤內(nèi)部使用Ku對加密盤SM4秘鑰K進行第一次SM4加密.供應商因子是供應商的秘鑰恢復Ukey,在加密盤量產(chǎn)階段,秘鑰恢復Ukey產(chǎn)生128 bit SM4秘鑰Kv,Kv除了存儲在Ukey的特定安全存儲區(qū)外,也會存儲在加密盤的安全存儲區(qū),Kv對外均無讀寫接口.配對階段使用加密盤內(nèi)Kv對SM4秘鑰K進行第二次SM4加密,兩次加密后的秘鑰同樣存儲在加密盤安全存儲區(qū)中用于秘鑰恢復.
Ukey丟失后,用戶需要向加密硬盤供應商提供需要恢復秘鑰的硬盤和秘鑰恢復密碼Ku,同時供應商使用加密盤量產(chǎn)階段的秘鑰恢復Ukey才能恢復出秘鑰.原理如圖7所示.
圖7 秘鑰恢復原理
在秘鑰恢復階段,加密盤內(nèi)部固件程序通過用戶提供的秘鑰恢復密碼Ku以及來自供應商秘鑰恢復Ukey中的秘鑰Kv,對盤內(nèi)加密備份秘鑰進行兩次SM4解密操作,從而恢復出硬盤秘鑰K,然后開始“秘鑰恢復配對”.“秘鑰恢復配對”與正常配對流程少了SM4秘鑰產(chǎn)生過程,即在加密盤與新配對Ukey交換公鑰完成配對后,恢復出的秘鑰K直接存儲在新配對Ukey中,由用戶設置新PIN碼和秘鑰恢復密碼Ku,再次使用Ku和Kv對秘鑰K進行兩次SM4加密,同樣存儲在加密盤安全存儲區(qū)中用于秘鑰恢復.秘鑰恢復配對完成后,盤內(nèi)數(shù)據(jù)即可通過新配對Ukey解密并正常啟動系統(tǒng).
5.1 認證方案安全性分析
1)固件安全性分析
固件程序需要遵循特定的嵌入式編碼規(guī)范,同時通過主控芯片廠商提供的軟件開發(fā)環(huán)境以及硬件開發(fā)板才能正確導入芯片內(nèi)的CODE ROM區(qū),并在芯片內(nèi)部嵌入式CPU上正常運行.因此,對于運行在PC主板CPU上的程序而言,無法對固件程序作出任何修改和破壞.即使LiveOS感染了木馬病毒,木馬程序只能通過通用SATA/USB協(xié)議接口與固件交互,對固件程序本身無任何影響.
2)秘鑰安全性分析
加密盤數(shù)據(jù)加密秘鑰在SSD內(nèi)部生成,且對外無讀寫接口.秘鑰在傳輸過程中均使用公鑰加密,所有加解密操作均在SSD和Ukey內(nèi)部進行.攻擊者無法在驅(qū)動鏈路和內(nèi)存中獲得秘鑰明文.方案中通過挑戰(zhàn)響應式認證有效避免了密文重放攻擊.
5.2 認證方案實現(xiàn)
自加密硬盤(SSD)基于Sage S881 SSD主控[9],商密Ukey基于Sage S261 USB主控[10],認證系統(tǒng)使用C語言編寫,LiveOS.iso大小僅為13.4 MB,從Ukey啟動后立刻進入認證系統(tǒng),啟動過程只需3 s.系統(tǒng)啟動后自動檢測Ukey和加密硬盤,并根據(jù)初始化狀態(tài)進行相應操作.認證系統(tǒng)截圖如圖8所示.
圖8 認證系統(tǒng)
如圖8所示,/dev/sdc,/dev/sdb即為Ukey和加密盤在LiveOS下的設備名,有獨一無二的產(chǎn)品序列號PSN及配對狀態(tài).用戶輸入PIN碼即開始認證流程,認證成功后硬盤“解密”,LiveOS重啟引導盤內(nèi)系統(tǒng)啟動.
本文將Ukey和LiveOS技術相結合,為自加密硬盤提出并實現(xiàn)了一種兼顧安全性和通用性的安全認證方案.本方案可用于任何需要信息保密的計算機系統(tǒng),且無需對系統(tǒng)結構做出任何改變.下一步研究重點是認證系統(tǒng)的功能擴展,滿足用戶更多定制化的安全需求.
[1]鄭東,趙慶蘭,張應輝.密碼學綜述[J].西安郵電大學學報,2013,18(6):1-10.
[2]孫瑜.基于FPGA的數(shù)據(jù)加解密系統(tǒng)設計[D].大連:大連海事大學,2010.
[3]魏東曉,萬海山,王亮.基于國產(chǎn)密碼算法的加密固態(tài)硬盤設計與實現(xiàn)[C]//中國計算機學會信息保密專業(yè)委員會.第二十四屆全國信息保密學術會議(IS2014)論文集,2014:179-188.
[4]HU Y, LV H.Design of Trusted BIOS in UEFI Base on USBKEY[C]//International Conference on Intelligence Science and Information Engineering. IEEE Computer Society, 2011:164-166.
[5]曹喆.基于USBKey的身份認證機制的研究與實現(xiàn)[D].上海:東華大學,2010.
[6]陳柯,劉中山,李航.一種基于Linux Live USB的啟動優(yōu)化研究[J].工業(yè)控制計算機,2014(10):109-110.
[7]張云蓉.基于代碼分析的Linux裁剪技術研究與實現(xiàn)[D].哈爾濱:哈爾濱理工大學,2004.
[8]鐘柏松,張宇成,周明建.Linux虛擬文件系統(tǒng)分析[J].計算機與現(xiàn)代化,2010(9):76-78.
[9]杭州華瀾微電子股份有限公司.PCIe/SATA SSD Controller S88x Datasheet[EB/OL].[2015-12-06].http://www.sage-micro.com.cn/chip-10.html.
[10]杭州華瀾微電子股份有限公司.USB2.0 Flash Memory Controller S261 Datasheet[EB/OL].[2015-12-06]. http://www.sage-micro.com.cn/chip-6.html.
A Secure Authentication Scheme for the Full-encrypted Drives Based on Ukey and LiveOS
XU Xin, CHEN Jinfei
(SchoolofCommunicationEngineering,HangzhouDianziUniversity,HangzhouZhejiang310018,China)
Aiming at the truth that the present disk encrypting schemes have poor versatility and are not secure enough in identity authentication, this paper proposes a secure authentication and trusted boot scheme for the full-encrypted drives(FED). We use Ukey for storing secret key and the custom-made simplified LiveOS for secure pairing, authentication, private key passing and trusted boot for system in the disk. Finally we propose a secure scheme for restoring secret key. The whole scheme is based on the current secure ASIC and is implemented on the general PC system, which has good versatility, security and usability.
encrypted drives; identity authentication; trusted boot
10.13954/j.cnki.hdu.2016.06.004
2016-04-25
徐欣(1975-),男,浙江麗水人,教授,信息系統(tǒng)安全.
TP309.2
A
1001-9146(2016)06-0015-06