江山
摘要:針對數(shù)據(jù)擾亂技術(shù)影響固態(tài)盤閃存數(shù)據(jù)恢復(fù)率的問題,該文提出一種能有效恢復(fù)擾亂閃存數(shù)據(jù)、提高固態(tài)盤數(shù)據(jù)恢復(fù)率的方法。實驗表明,該方法既能在不拆除閃存硬件的前提下獲取到固態(tài)盤閃存的所有數(shù)據(jù),為固態(tài)盤數(shù)據(jù)分析提供了完整的數(shù)據(jù)源,又能生成無擾亂的閃存物理鏡像,使取證數(shù)據(jù)的數(shù)據(jù)恢復(fù)率達到75%以上。
關(guān)鍵詞:固態(tài)盤;NAND閃存;數(shù)據(jù)擾亂;數(shù)據(jù)恢復(fù)
1概述
固態(tài)盤(SSD)是一種基于閃存陣列的硬盤,固態(tài)盤大容量、高密度的數(shù)據(jù)存儲需求促使硬件廠商采用位密度更小的MLC型閃存作為固態(tài)盤的基本存儲單元,固態(tài)盤閃存存儲密度的增加加重了相鄰閃存單元之間的電壓干擾,造成閃存數(shù)據(jù)錯誤率的增大。ECC校驗算法雖然能對錯誤數(shù)據(jù)進行檢測和校驗,但其可校驗的數(shù)據(jù)位個數(shù)是有限的。為了解決該問題,數(shù)據(jù)擾亂技術(shù)被提出并被應(yīng)用于固態(tài)盤主控中。然而,閃存數(shù)據(jù)擾亂技術(shù)的存在破壞了文件的標(biāo)志符特征,使得利用文件標(biāo)志符從物理鏡像中查找文件并重組時無法恢復(fù)出任何有效數(shù)據(jù),給通過文件鏡像方式進行數(shù)據(jù)恢復(fù)帶來了極大的難度。
2閃存數(shù)據(jù)擾亂問題
為了解決因讀寫特殊位模式的數(shù)據(jù)而造成錯誤率升高的問題,數(shù)據(jù)擾亂技術(shù)(data scrambling或data randomization)被提出并被應(yīng)用于MLC閃存的設(shè)備控制器中。該技術(shù)能夠在向物理閃存寫人數(shù)據(jù)之前通過隨機化手段打亂原有數(shù)據(jù)的位模式,減輕相鄰存儲單元之間的電壓干擾,進而降低閃存讀寫數(shù)據(jù)的錯誤率㈣。不同閃存設(shè)備其數(shù)據(jù)擾亂技術(shù)的具體實現(xiàn)不同。一般來說,數(shù)據(jù)擾亂模塊通常由初始擾亂種子寄存器、擾亂密鑰發(fā)生器和異或操作邏輯組成。
在針對閃存進行數(shù)據(jù)恢復(fù)的時候,由于其應(yīng)用了數(shù)據(jù)擾亂技術(shù),通常的技術(shù)手段無法恢復(fù)其原始數(shù)據(jù)或恢復(fù)出來的數(shù)據(jù)為無意義的擾亂數(shù)據(jù),解決該問題的關(guān)鍵是需要還原物理鏡像中的隨機化數(shù)據(jù)。本節(jié)從數(shù)據(jù)擾亂技術(shù)的原理出發(fā),設(shè)計并實現(xiàn)了一種擾亂恢復(fù)方法。通過對閃存數(shù)據(jù)的擾亂恢復(fù)生成還原后的閃存物理鏡像,從而保證用戶原始數(shù)據(jù)的順利讀取。
3擾亂恢復(fù)算法
3.1擾亂恢復(fù)方法的理論分析
根據(jù)數(shù)據(jù)擾亂技術(shù)的基本理論可知,擾亂算法主要分兩步:一步是在寫閃存數(shù)據(jù)之前通過異或操作打亂原有數(shù)據(jù)的位模式,另一步是在讀閃存數(shù)據(jù)之后再次執(zhí)行異或操作從而對打亂的數(shù)據(jù)進行恢復(fù)。前者被稱之為擾亂,后者被稱之為擾亂恢復(fù)。圖1顯示的是數(shù)據(jù)擾亂技術(shù)應(yīng)用于某個固態(tài)盤后盤內(nèi)數(shù)據(jù)的流向和變化,其中虛線箭頭代表寫操作的數(shù)據(jù)流,實線箭頭代表讀操作的數(shù)據(jù)流。如圖所示,原有數(shù)據(jù)在經(jīng)過數(shù)據(jù)擾亂器與擾亂密鑰執(zhí)行位異或操作后變?yōu)楸粩_亂數(shù)據(jù),擾亂數(shù)據(jù)再次經(jīng)過擾亂器與擾亂密鑰進行異或后實現(xiàn)擾亂恢復(fù)。根據(jù)位異或操作的特性可知,要得到與原有數(shù)據(jù)相同的恢復(fù)結(jié)果,參與擾亂恢復(fù)過程的擾亂密鑰必須等于對應(yīng)擾亂過程的擾亂密鑰。
基于上述擾亂恢復(fù)過程的理論分析,恢復(fù)擾亂數(shù)據(jù)的方法實現(xiàn)可能存在兩種途徑:一種是徹底弄清固態(tài)盤主控中數(shù)據(jù)擾亂引擎的具體工作過程,包括知道初始擾亂種子的準(zhǔn)確值、知道生成擾亂密鑰的地址是物理地址還是邏輯地址,知道擾亂密鑰的生成算法以及地址映射表內(nèi)容等信息。在此基礎(chǔ)上用軟件實現(xiàn)數(shù)據(jù)擾亂引擎的硬件功能,進而對獲取到的閃存物理鏡像進行擾亂恢復(fù)。另一種則不需要了解這些具體的實現(xiàn)細節(jié),直接利用固態(tài)盤主控開啟數(shù)據(jù)擾亂引擎的恢復(fù)擾亂功能,通過固態(tài)盤的Boot Loader代碼加載讀取底層閃存數(shù)據(jù)的軟件,利用數(shù)據(jù)擾亂引擎的恢復(fù)擾亂功能還原被擾亂的閃存數(shù)據(jù),從而生成未擾亂的物理鏡像。
對比這兩種實現(xiàn)方法,第二種方法相對容易實現(xiàn),只需識別出初始的擾亂種子值、確定出種子值存入的寄存器地址以及如何利用固態(tài)盤主控開啟數(shù)據(jù)擾亂引擎的擾亂恢復(fù)功能。本文主要介紹第二種數(shù)據(jù)擾亂恢復(fù)方法的實現(xiàn)。為了使研究結(jié)果具有普遍性,本文選擇采用主流主控——Barefoot的固態(tài)盤作為取證研究對象。該主控支持像三星、現(xiàn)代、東芝、美光等主流廠商的多種閃存芯片,廣泛應(yīng)用于固態(tài)硬盤的設(shè)計中。
3.2擾亂恢復(fù)算法實現(xiàn)
由OpenSSD項目提供的技術(shù)參考手冊可知Barefoot主控是通過設(shè)置位標(biāo)志寄存器FCP_OPTION的標(biāo)志位FO_SCRAM-BLE來實現(xiàn)數(shù)據(jù)擾亂引擎開啟的,同時如果該標(biāo)志位在讀請求的響應(yīng)過程中有效,則數(shù)據(jù)擾亂引擎執(zhí)行的就是恢復(fù)擾亂功能。結(jié)合上一小節(jié)識別的初始擾亂種子值和擾亂種子寄存器,即可實現(xiàn)固態(tài)盤閃存數(shù)據(jù)的恢復(fù)擾亂算法并由此生成未擾亂的閃存物理鏡像。
其中setScrambleKey(涵數(shù)的功能是將識別的擾亂種子存人目標(biāo)寄存器,這里scramble_seedlil是一個長度為8的一維數(shù)組,數(shù)組元素是32比特的無符號整數(shù),用來暫存已被識別的擾亂種子值;SCRAMSEED_BASE代表目標(biāo)寄存器的起始地址;send_to_dev()函數(shù)代表將初始種子值寫入固態(tài)盤寄存器硬件。Descrambling()函數(shù)是實現(xiàn)恢復(fù)擾亂算法的主要函數(shù),功能是在讀閃存數(shù)據(jù)后對其進行恢復(fù)擾亂并生成未擾亂的閃存物理鏡像;變量enableScramble是數(shù)據(jù)擾亂引擎的開啟開關(guān),它的不同取值決定標(biāo)志位FO_SCRAMBLE是否有效。ReadPage()是能夠?qū)崿F(xiàn)恢復(fù)擾亂的讀閃存頁函數(shù),WriteFile()函數(shù)實現(xiàn)閃存物理鏡像的生成。
4實驗驗證
為了驗證上述擾亂恢復(fù)算法的有效性,選定3個不同型號的6個固態(tài)盤(主控都是Barefoot)作為實驗對象。其中同一型號的固態(tài)盤有2個,硬件參數(shù)兩兩相同。比如型號是CrucialM225的目標(biāo)固態(tài)盤共2個,分成2組,一個用于Windows XP系統(tǒng),另一個用于Windows 7系統(tǒng)。每個測試盤在Windows XP或Windows 7系統(tǒng)下被格式化為NTFS文件系統(tǒng),分別存人兩個大小是650KB的小文件和一個容量等于800MB的大文件。然后刪除其中的大文件和一個小文件。準(zhǔn)備好后,將測試盤連接到PC機上,分別計算系統(tǒng)元文件、未刪除文件和已刪除文件中提取到的文件頁占對應(yīng)文件頁總數(shù)的比值。
實驗結(jié)果如表1所示,其中A鏡像代表由擾亂數(shù)據(jù)組成的鏡像,B鏡像代表恢復(fù)擾亂數(shù)據(jù)生成的鏡像。表中數(shù)據(jù)顯示對于擾亂數(shù)據(jù)鏡像(A鏡像)而言,不論是文件系統(tǒng)元文件還是用戶自定義文件(包括已刪除和未刪除的)沒有一個數(shù)據(jù)頁被恢復(fù)出來;而對于擾亂恢復(fù)數(shù)據(jù)鏡像(B鏡像)而言,系統(tǒng)元文件和用戶自定義文件中的未刪除文件100%被恢復(fù)出來,該結(jié)果確認了主控為Barefoot的固態(tài)盤采用數(shù)據(jù)擾亂技術(shù)的事實并且驗證了本文提出的擾亂恢復(fù)算法的正確性。
5結(jié)論
本文重點研究了數(shù)據(jù)擾亂技術(shù)對固態(tài)盤閃存數(shù)據(jù)恢復(fù)率的影響。為了解決該問題,本文提出一種通過恢復(fù)擾亂閃存數(shù)據(jù)提高固態(tài)盤數(shù)據(jù)恢復(fù)率的方法。該方法不依賴于數(shù)據(jù)擾亂引擎的實現(xiàn)細節(jié),而是通過反匯編固態(tài)盤的固件鏡像分析出初始擾亂種子值,改寫開源固件代碼實現(xiàn)初始擾亂種子的載人以及數(shù)據(jù)擾亂引擎硬件的開啟,利用數(shù)據(jù)擾亂引擎實現(xiàn)閃存數(shù)據(jù)的恢復(fù)擾亂,從而生成正常的固態(tài)盤閃存物理鏡像。實驗測試表明,該恢復(fù)擾亂方法能正確還原固態(tài)盤的閃存數(shù)據(jù),使被刪除數(shù)據(jù)的數(shù)據(jù)恢復(fù)率提高到75%以上。endprint