鄧宗永 張鵬
摘要:為了保護(hù)固態(tài)硬盤上的敏感數(shù)據(jù),可以采取數(shù)據(jù)銷毀技術(shù)對(duì)敏感數(shù)據(jù)進(jìn)行安全清除。但固態(tài)硬盤采用了與機(jī)械硬盤完全不同的閃存介質(zhì)進(jìn)行數(shù)據(jù)存儲(chǔ),導(dǎo)致固態(tài)硬盤在數(shù)據(jù)讀寫方面與機(jī)械硬盤存在很明顯的區(qū)別,因此需要根據(jù)閃存的特點(diǎn)和固態(tài)硬盤的結(jié)構(gòu)設(shè)計(jì)適用于固態(tài)硬盤的數(shù)據(jù)銷毀技術(shù),本文在研究固態(tài)硬盤的存儲(chǔ)特點(diǎn)的基礎(chǔ)上,對(duì)不同層次的固態(tài)硬盤數(shù)據(jù)銷毀方法進(jìn)行了總結(jié)。
關(guān)鍵字:固態(tài)硬盤; 數(shù)據(jù)銷毀; 閃存
中圖法分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)28-0239-02
1固態(tài)硬盤的結(jié)構(gòu)
固態(tài)硬盤(Solid State Disk,SSD)是一種以固態(tài)半導(dǎo)體芯片為存儲(chǔ)介質(zhì)的大容量存儲(chǔ)器。它主要使用兩種固態(tài)半導(dǎo)體進(jìn)行數(shù)據(jù)存儲(chǔ),一種是DRAM(易失性存儲(chǔ)器),另一種是NAND Flash(閃存)。前者的優(yōu)點(diǎn)在于存取速度較高,但需要獨(dú)立電源。后者的優(yōu)點(diǎn)在于無(wú)須獨(dú)立電源即可工作,但存取速度相對(duì)較低。由于目前常見的固態(tài)硬盤主要以NAND Flash為存儲(chǔ)介質(zhì),因此本文討論的數(shù)據(jù)銷毀方式僅適用于以NAND Flash為存儲(chǔ)介質(zhì)的固態(tài)硬盤。
固態(tài)硬盤由控制芯片、緩存芯片和閃存芯片三部分構(gòu)成??刂菩酒淖饔檬呛侠碚{(diào)配數(shù)據(jù)在各個(gè)芯片上的負(fù)荷, 連接閃存芯片和SATA 接口。緩存芯片的作用與機(jī)械硬盤類似,主要完成讀寫數(shù)據(jù)的緩沖、存儲(chǔ)最近訪問(wèn)數(shù)據(jù)等功能。閃存芯片的作用是存儲(chǔ)用戶數(shù)據(jù),根據(jù)每單元(Cell)存儲(chǔ)數(shù)據(jù)量的多少可分為SLC(Single-Level Cells)、MLC(Multi-Level Cells)和TLC(Trinary-Level Cell)三種。其中,SLC每單元存儲(chǔ)1位數(shù)據(jù),擦寫壽命約為10萬(wàn)次,MLC每單元存儲(chǔ)2位數(shù)據(jù),擦寫壽命約為3000-10000次,TLC每單元存儲(chǔ)3位數(shù)據(jù),擦寫壽命約500-1000次。
固態(tài)硬盤不僅在存儲(chǔ)介質(zhì)上與機(jī)械硬盤有所不同,在管理和存儲(chǔ)數(shù)據(jù)的方式上也有區(qū)別。固態(tài)硬盤維持了一個(gè)在操作系統(tǒng)存取數(shù)據(jù)的邏輯塊地址和原始數(shù)據(jù)閃存地址的間接層來(lái)轉(zhuǎn)換物理數(shù)據(jù)的儲(chǔ)存。通過(guò)隱藏閃存特殊的接口和管理每個(gè)塊的寫入和擦除次數(shù),該間接層增強(qiáng)了固態(tài)硬盤的存取性能和可靠性并大大提高了flash的使用壽命,但是它也產(chǎn)生了對(duì)于用戶不可見的副本數(shù)據(jù),而攻擊者卻可用其進(jìn)行數(shù)據(jù)的恢復(fù),對(duì)數(shù)據(jù)的安全造成極大隱患。
2固態(tài)硬盤的數(shù)據(jù)銷毀技術(shù)
近年來(lái), 針對(duì)硬盤的數(shù)據(jù)安全刪除方法已經(jīng)很成熟, 但由于SSD 和硬盤存在許多的不同, 所以現(xiàn)有的硬盤安全刪除方法并不全都適合運(yùn)用到SSD. 目前,針對(duì)固態(tài)硬盤的數(shù)據(jù)銷毀技術(shù)可以分為三類:
2.1控制器層數(shù)據(jù)銷毀技術(shù)
傳統(tǒng)的NAND存儲(chǔ)介質(zhì)的數(shù)據(jù)銷毀方式主要利用內(nèi)置于閃存設(shè)備固件中的數(shù)據(jù)清理機(jī)制,但是數(shù)據(jù)銷毀的可靠性無(wú)法保證。如果繞開固件直接對(duì)閃存芯片進(jìn)行讀取,可以發(fā)現(xiàn)雖然已經(jīng)執(zhí)行了數(shù)據(jù)銷毀,但是很多數(shù)據(jù)還完好的保留在閃存上。
除此之外,目前還有一種利用加密技術(shù)進(jìn)行數(shù)據(jù)銷毀的方法。用戶的機(jī)密文件以加密的方式進(jìn)行存儲(chǔ),當(dāng)用戶希望銷毀數(shù)據(jù)時(shí),直接刪除密鑰。由于密鑰一般較小,因此數(shù)據(jù)銷毀可以在很短的時(shí)間內(nèi)完成。然而該方式主要存在兩個(gè)問(wèn)題:第一是針對(duì)閃存芯片的側(cè)信道攻擊(Side Channel Attack)可能允許攻擊者可以恢復(fù)出密鑰和相關(guān)數(shù)據(jù);第二是密鑰管理不善也會(huì)給數(shù)據(jù)銷毀方法的實(shí)現(xiàn)帶來(lái)非常嚴(yán)重的安全漏洞。
Swanson[1]等結(jié)合以上兩種數(shù)據(jù)銷毀技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了一種可驗(yàn)證的,效率較高的數(shù)據(jù)銷毀方法SAFE(Scramble and Finally Erase)。該方法完成數(shù)據(jù)銷毀需要兩個(gè)步驟,首先SAFE先將密鑰數(shù)據(jù)進(jìn)行銷毀,然后SAFE再對(duì)NAND的每一個(gè)物理頁(yè)進(jìn)行垃圾數(shù)據(jù)覆蓋。通過(guò)執(zhí)行SAFE后對(duì)NAND的檢查,Swanson等證實(shí)了SAFE可以安全地銷毀指定數(shù)據(jù)。
2.2文件系統(tǒng)層數(shù)據(jù)銷毀技術(shù)
閃存的讀寫單位為頁(yè),根據(jù)芯片的不同一般大小為4KB或8KB,但是操作系統(tǒng)讀寫數(shù)據(jù)是按照HDD(Hard Disk Drive)的扇區(qū)尺寸進(jìn)行的,一般為512Byte。更麻煩的是,閃存數(shù)據(jù)的寫入需要先執(zhí)行擦除動(dòng)作,而擦除是以塊為單位。這些與HDD明顯不同的差異導(dǎo)致操作系統(tǒng)對(duì)閃存設(shè)備的管理必須采取一些不同的方法。一種是閃存設(shè)備通過(guò)在自身的固件(主控)程序?qū)崿F(xiàn)一個(gè)FTL(Flash Translation Layer)層[2],其中功能如圖1所示,將閃存設(shè)備“虛擬”成一個(gè)類似于HDD的塊設(shè)備,將文件系統(tǒng)對(duì)扇區(qū)的操作 “翻譯”成對(duì)閃存的操作。這種方法的優(yōu)點(diǎn)在于操作系統(tǒng)不需要做出任何改變,只需要按照HDD的方法管理SSD即可。
1 FTL功能
另一種方法是設(shè)計(jì)專用于閃存的文件系統(tǒng),如UBIFS、YAFFS。在專用的文件系統(tǒng)中已經(jīng)設(shè)計(jì)了通過(guò)軟件實(shí)現(xiàn)的FTL層,因此操作系統(tǒng)也可以直接將SSD視為HDD,對(duì)SSD進(jìn)行“扇區(qū)”操作即可。FTL會(huì)將扇區(qū)的LBA地址翻譯成SSD閃存中的物理地址。
從圖1中可以看到,當(dāng)文件系統(tǒng)發(fā)送指令要寫入或者更新一個(gè)特定的邏輯頁(yè)時(shí),它會(huì)采用如日志結(jié)構(gòu)的寫入方式,F(xiàn)TL實(shí)際上是把數(shù)據(jù)寫入到一個(gè)空閑物理頁(yè)并更新映射表,當(dāng)從邏輯塊地址寫入一個(gè)新數(shù)據(jù)時(shí),舊數(shù)據(jù)將失效但是會(huì)保留在存儲(chǔ)設(shè)備中,成為冗余的數(shù)據(jù)。為了加速這個(gè)掃面的進(jìn)程,F(xiàn)TL儲(chǔ)存了一個(gè)包含整個(gè)文件塊的摘要信息在每個(gè)塊的最后一頁(yè)。當(dāng)需要再次寫入到一個(gè)閃存塊時(shí),就需要先把塊上的有效數(shù)據(jù)合并到一個(gè)空白塊上再進(jìn)行擦除,這個(gè)操作就是GC(Garbage collection)垃圾回收。也可發(fā)送Trim指令給SSD主控,通知它哪些數(shù)據(jù)占用的地址是無(wú)效的,從而提高GC的效率,一次擦除多個(gè)無(wú)效塊。
FTL在提高了閃存設(shè)備存取性能和閃存芯片使用壽命的同時(shí),也使得找到實(shí)際物理存儲(chǔ)區(qū)域變得困難,也導(dǎo)致數(shù)據(jù)銷毀技術(shù)中對(duì)于HDD的覆寫刪除單個(gè)文件的方法不能直接應(yīng)用于SDD。Lee[3]等人提出一種利用加密技術(shù)的數(shù)據(jù)銷毀方法,該方法用唯一的密鑰加密每個(gè)文件,密鑰存儲(chǔ)在相應(yīng)的文件頭里,操作系統(tǒng)只需要在儲(chǔ)存所有文件頭的擦除塊中將其銷毀就可使得所有數(shù)據(jù)的安全刪除。
Wei[4]等人在實(shí)證評(píng)估基于驅(qū)動(dòng)器的SSD內(nèi)置清掃命令和軟件方式對(duì)于SSD的擦除效果后發(fā)現(xiàn):(1)大多數(shù)ATA命令運(yùn)行正確,但有些可能包含幾個(gè)bug,導(dǎo)致整個(gè)待擦除數(shù)據(jù)完好的保留在了驅(qū)動(dòng)器中。(2)對(duì)于基于軟件的整個(gè)磁盤的擦除方式,該技術(shù)并不總是有效,測(cè)試顯示數(shù)據(jù)模式可能對(duì)覆寫的有效性產(chǎn)生影響。(3)軟件在SSD上對(duì)單個(gè)文件的擦除總是失敗??煽康膯挝募脸蟾淖冮W存FTL層,該結(jié)論使用他們開始研究如何設(shè)計(jì)支持單文件擦除的FTL組件。
他們發(fā)現(xiàn)雖然從一個(gè)塊中擦除某些頁(yè)是困難的,但是編程單個(gè)文件確是可行的,所以一個(gè)可選的擦除方式是對(duì)頁(yè)進(jìn)行再編程使頁(yè)中冗余數(shù)據(jù)從1變?yōu)?。根據(jù)使用環(huán)境的不同,擦洗又分為三種方式,即刻安全擦洗(immediate scrubbing)、后臺(tái)式擦洗(background scrubbing)和基于掃描的擦洗(scan-based scrubbing)。其中即刻安全擦洗提供了最高級(jí)別的安全性,因?yàn)橹钡紽TL擦洗以前頁(yè)中包含的陳舊數(shù)據(jù)完成后,寫操作才會(huì)完成;后臺(tái)式擦洗提供了更高的性能通過(guò)允許寫操作完成后在后臺(tái)執(zhí)行擦洗工作;基于掃描的擦洗在沒有寫入工作時(shí)通過(guò)添加一個(gè)命令來(lái)擦除一個(gè)范圍的LBA到0,然后通過(guò)查找邏輯地址物理地址的映射表來(lái)擦洗存儲(chǔ)了冗余數(shù)據(jù)的頁(yè),在該方式中FTL將讀取每個(gè)塊中的摘要表來(lái)確定其中的頁(yè)是否包含了失效數(shù)據(jù)。擦洗操作的不足在于對(duì)于MLC(Multi-Level Cell)一個(gè)存儲(chǔ)器存儲(chǔ)單元存放了2位元(bit)的芯片,擦洗單個(gè)頁(yè)總是會(huì)造成幾個(gè)錯(cuò)誤到另一頁(yè),這個(gè)bug是因?yàn)镸LC存儲(chǔ)單元陣列中,每個(gè)晶體管總是包含屬于不同頁(yè)的兩位。
2.3用戶應(yīng)用程序?qū)拥臄?shù)據(jù)銷毀
用戶應(yīng)用程序?qū)拥膭h除,可以很容易地刪除特定數(shù)據(jù)對(duì)象,但保證數(shù)據(jù)不可恢復(fù)的程度最小,且會(huì)帶來(lái)很高的磨損?,F(xiàn)有的數(shù)據(jù)安全刪除方法,一般都是通過(guò)塊擦除或零覆寫和隨機(jī)數(shù)據(jù)覆蓋的方法實(shí)現(xiàn)該目的。
塊擦除是通過(guò)擦除整塊的密鑰或原始數(shù)據(jù),該方法可用于大量數(shù)據(jù)的刪除,但是當(dāng)塊上含有有效密鑰或數(shù)據(jù)時(shí),就需要先將有效密鑰或數(shù)據(jù)復(fù)制到有效頁(yè),然后擦除,必須導(dǎo)致額外的時(shí)間開銷和更多設(shè)備磨損。零覆寫是指通過(guò)將頁(yè)中的位全部置零實(shí)現(xiàn)數(shù)據(jù)安全刪除,比較著名的有Gutmann[5]算法和美國(guó)國(guó)防部US DoD 5220-22.M[6]算法。
Gutmann方法的核心是增加數(shù)據(jù)覆蓋的次數(shù),按照古特曼教授的理論,在刪除數(shù)據(jù)時(shí),用特定的數(shù)據(jù)片段覆蓋原始數(shù)據(jù)35次,從而有效避免任何形式的數(shù)據(jù)還原。但是,在增加覆蓋次數(shù)的同時(shí),該方法也會(huì)耗費(fèi)相當(dāng)長(zhǎng)的時(shí)間。另外,古特曼方法不考慮全面性,只考慮數(shù)據(jù)銷毀的徹底性。
US DoD 5220-22.M方法是美國(guó)國(guó)防部標(biāo)準(zhǔn)中的一部分,這種方法僅僅需要覆蓋數(shù)據(jù)幾次,安全性沒有古特曼方法高,但耗費(fèi)的時(shí)間卻相對(duì)較少。對(duì)于覆蓋使用的數(shù)據(jù),標(biāo)準(zhǔn)中也相應(yīng)給出相應(yīng)的建議,比如使用補(bǔ)碼或隨機(jī)數(shù)字等。
3總結(jié)
由于固態(tài)硬盤和傳統(tǒng)機(jī)械硬盤在存儲(chǔ)介質(zhì)和數(shù)據(jù)存取方式上存在明顯不同,很多應(yīng)用于機(jī)械硬盤的數(shù)據(jù)銷毀方法對(duì)固態(tài)硬盤不再適用。本文在分析固態(tài)硬盤結(jié)構(gòu)的基礎(chǔ)上,分別對(duì)控制器層面、文件系統(tǒng)層面和用戶應(yīng)用程序?qū)用婢哂写硇缘臄?shù)據(jù)安全銷毀方法進(jìn)行了總結(jié)。
參考文獻(xiàn):
[1] Swanson S, Wei M. Safe: Fast, verifiable sanitization for ssds[J]. San Diego, CA: University of California-San Diego, 2010.
[2] Qin Z, Wang Y, Liu D, et al. MNFTL: An efficient flash translation layer for MLC NAND flash memory storage systems[C]. Proceedings of the 48th Design Automation Conference, 2011: 17-22.
[3] Lee J, Yi S, Heo J, et al. An Efficient Secure Deletion Scheme for Flash File Systems[J]. J. Inf. Sci. Eng., 2010, 26(1): 27-38.
[4] Wei M Y C, Grupp L M, Spada F E, et al. Reliably Erasing Data from Flash-Based Solid State Drives[C]. FAST, 2011: 8-8.
[5] Gutmann P. Secure deletion of data from magnetic and solid-state memory[C]. Proceedings of the Sixth USENIX Security Symposium, San Jose, CA, 1996: 77-89.
[6] Garfinkel S. Anti-forensics: Techniques, detection and countermeasures[C]. 2nd International Conference on i-Warfare and Security, 2007: 77-84.
【通聯(lián)編輯:光文玲】