專利名稱:一種ntfs文件系統(tǒng)的數(shù)據(jù)擦除方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)擦除方法,特別涉及一種針對NTFS文件系統(tǒng)的數(shù)據(jù)擦除方法。
背景技術(shù):
隨著信息技術(shù)的飛速發(fā)展,信息安全越發(fā)引起人們的關(guān)注。數(shù)據(jù)安全更是信息安全中ー個重要的組成部分,特別是各種個人隱私數(shù)據(jù)或商業(yè)機(jī)密信息,比如私人、商業(yè)電子信函、商業(yè)合同、私人照片等,往往成為 被竊取的對象。而導(dǎo)致數(shù)據(jù)泄露的ー個重要原因是用戶數(shù)據(jù)擦除不徹底問題。對于不再需要的數(shù)據(jù),不再有保留的價值,并且泄漏出去會導(dǎo)致造成很大的損失,便需要進(jìn)行數(shù)據(jù)的擦除。目前的數(shù)據(jù)擦除措施分為兩類ー種是物理銷毀,通常采用物理粉碎、使用腐蝕性溶劑腐蝕存儲介質(zhì);另ー種是需要保留數(shù)據(jù)存儲介質(zhì)的擦除數(shù)據(jù),此時便需要使用軟件擦除的方法,采取的方式一般為通過操作系統(tǒng)提供的接ロ獲取文件數(shù)據(jù)的位置,從而對其進(jìn)行擦除處理。普通用戶通常簡單的使用Windows操作系統(tǒng)實現(xiàn)數(shù)據(jù)的軟件擦除,但是在Windows下正常刪除文件并不能將文件徹底從硬盤中清除棹,使用數(shù)據(jù)恢復(fù)軟件很容易將其恢復(fù),用戶的重要數(shù)據(jù)存在被恢復(fù)的可能。針對ー些重要數(shù)據(jù),用戶有時會采用專門的數(shù)據(jù)銷毀軟件。目前市面上的數(shù)據(jù)銷毀軟件大都是暴力的將整個磁盤的空間都擦寫一遍,或者將磁盤的空余空間擦寫一遍,以確保沒有已經(jīng)被刪除的信息數(shù)據(jù)被泄露。這種方法要花費大量的時間,増加磁盤的損耗。對于單個文件的擦除,雖然市面上有些文件銷毀軟件也能做到這一點,但是大多是通過操作系統(tǒng)的應(yīng)用程序編程接ロ獲取文件的邏輯位置,從而對這個位置進(jìn)行擦除處理。這種方法的實現(xiàn)在很大程度上受到操作系統(tǒng)的文件系統(tǒng)的限制,例如操作系統(tǒng)可能屏蔽掉對某些文件的訪問,可能致使獲取的信息有誤等。而且這種數(shù)據(jù)擦除只是把文件的實體數(shù)據(jù)內(nèi)容擦除,并不能保證文件的所有屬性都被擦除或者處理掉,可能遺漏部分關(guān)鍵數(shù)據(jù),而很多時候這種情況是不能容忍的。例如NTFS在存儲ー個文件的時候需要將很多能夠表示數(shù)據(jù)文件信息的數(shù)據(jù)(如文件建立的時間、最后訪問時間、文件大小和文件名等等,對于圖片來說甚至還有縮略圖)存在許多其他的位置,這些冗余數(shù)據(jù)保證了操作系統(tǒng)的文件系統(tǒng)的查詢、讀寫文件的效率,但是如果只刪除文件實體數(shù)據(jù),而不清除這些文件屬性信息的話將會導(dǎo)致重大的數(shù)據(jù)泄露。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供ー種在NTFS文件系統(tǒng)下快速、方便、徹底擦除文件和文件相關(guān)信息的方法。本發(fā)明基于的思想是從底層磁盤數(shù)據(jù)中直接解析文件系統(tǒng),而不是使用操作系統(tǒng)提供的API函數(shù)查詢關(guān)于文件的相關(guān)信息,這樣可以直接訪問到磁盤上所有文件的數(shù)據(jù),而不受操作系統(tǒng)的影響,從而對磁盤上的文件數(shù)據(jù)獲得最高權(quán)限,因為操作系統(tǒng)可能屏蔽掉對某些文件的訪問,可能致使獲取的信息有誤。通過對文件系統(tǒng)的解析,得到文件在磁盤上存儲的位置,從而可以通過反復(fù)覆寫的方法把文件本身及其相關(guān)信息完全擦除掉,保證了文件數(shù)據(jù)不能被恢復(fù)。本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的ー種NTFS文件系統(tǒng)的數(shù)據(jù)擦除方法,包括以下步驟一、根據(jù)所要刪除文件或文件夾的 路徑,獲得該文件所在的卷,在Windows下,使用CreateFile以形如“\\. \X ”的字符串作為名字打開X盤即NTFS的卷;然后使用ReadFile讀取該卷的前512字節(jié),即起始扇區(qū),獲得以下參數(shù)姆個扇區(qū)的字節(jié)數(shù)、姆個簇所含的扇區(qū)數(shù)、主MFT所在的邏輯簇號、文件記錄(File Record)的簇數(shù)、索引記錄(IndexRecord)的簇數(shù);ニ、根據(jù)所要刪除文件的路徑,查找該文件ID 根據(jù)所要刪除文件的路徑,在由文件或文件夾MFT項構(gòu)成的B+樹中定位到相應(yīng)的文件或文件夾,并獲得該文件的文件ID ;三、擦除文件相關(guān)信息在獲得了文件ID之后,根據(jù)以下公式定位文件MFT項在磁盤上的位置文件MFT項偏移量=文件ID*每個MFT項的字節(jié)數(shù)+主MFT的邏輯簇號*每個簇的字節(jié)數(shù);然后根據(jù)文件MFT項頭的結(jié)構(gòu),將第0x17個字節(jié)與0x02個字節(jié)按位與,結(jié)果如果是O則判斷為文件,否則判斷為文件夾;如果是文件,則執(zhí)行把文件在磁盤上分配的所有碎片通過指定的覆寫方法進(jìn)行擦除,使得文件主體數(shù)據(jù)被徹底擦除,不能恢復(fù);如果是文件夾,則需要先把文件夾中的子文件和文件夾刪除,最后刪除該文件夾。有益效果 本發(fā)明從底層磁盤數(shù)據(jù)中直接解析文件系統(tǒng),可以直接訪問到磁盤上所有文件的數(shù)據(jù),而不受操作系統(tǒng)的影響,從而對磁盤上的文件數(shù)據(jù)獲得最高權(quán)限,保證了文件數(shù)據(jù)的刪除以及不能被恢復(fù)。
圖I為實施例中數(shù)據(jù)擦除方法的流程具體實施例方式下面結(jié)合附圖,具體說明本發(fā)明的優(yōu)選實施方式。本實施例中實現(xiàn)了一種數(shù)據(jù)擦除方法,包括以下步驟一、根據(jù)所要刪除文件或文件夾的路徑,獲得該文件所在的卷,在Windows下,使用CreateFile以形如“\\. \X ”的字符串作為名字打開X盤即NTFS的卷,比如打開C盤使用“\\· \C ” ;然后使用ReadFile讀取該卷的前512字節(jié),即起始扇區(qū),獲得以下參數(shù)每個扇區(qū)的字節(jié)數(shù)、每個簇所含的扇區(qū)數(shù)、主MFT所在的邏輯簇號、文件記錄(File Record)的簇數(shù)、索引記錄(Index Record)的簇數(shù);
每個卷在實現(xiàn)NTFS時,采取的ー些基本參數(shù)可能不同,因此需要在加載ー個卷的時候讀取該卷的ー些基本參數(shù)。ニ、根據(jù)所要刪除文件的路徑,查找該文件ID ;在NTFS中,每ー個文件或文件夾相對應(yīng)的MFT項構(gòu)成B+樹的ー個個節(jié)點,其中文件不會有子節(jié)點,它一定是葉子節(jié)點,而文件夾可能是葉子結(jié)點,也可能是分支節(jié)點。在姆個文件夾的MFT項中,表示文件系統(tǒng)結(jié)構(gòu)的有常駐的$INDEX_R00T即0x90屬性和非常駐的$INDEX_ALL0CATI0N 即 OxAO 屬性。$INDEX_ R00T 屬性中包含了個數(shù)可變的 Index Entry,每個都描述了該文件夾下的文件或子文件夾的包含文件ID的ー些基本信息。如果子節(jié)點過多的話則還可能有$INDEX_ALL0CATI0N屬性,將子節(jié)點的Index Entry信息存儲到它指示的磁盤的簇中。如此ー來,如果子節(jié)點是文件夾的話則又可以遞歸下去,從而最終可以遍歷完整個B+樹,獲得文件系統(tǒng)中所有文件和文件夾的信息。根據(jù)所要刪除文件的路徑,在由文件或文件夾MFT項構(gòu)成的B+樹中定位到相應(yīng)的文件或文件夾,并獲得該文件的文件ID ;三、擦除文件相關(guān)信息;在獲得了文件ID之后,根據(jù)以下公式定位文件MFT項在磁盤上的位置文件MFT項偏移量=文件ID*每個MFT項的字節(jié)數(shù)+主MFT的邏輯簇號*每個簇的字節(jié)數(shù);然后根據(jù)文件MFT項頭的結(jié)構(gòu),將第0x17個字節(jié)與0x02個字節(jié)按位與,結(jié)果如果是O則判斷為文件,否則判斷為文件夾;如果是文件,則執(zhí)行把文件在磁盤上分配的所有碎片通過指定的覆寫方法(如一遍填零或填一或填隨機(jī)數(shù),美國國防部DoD 5220-22-M標(biāo)準(zhǔn)的7遍擦寫方法,Gutmann方法的35遍擦寫方法等)進(jìn)行擦除,使得文件主體數(shù)據(jù)被徹底擦除,不能恢復(fù);之后還可以根據(jù)需要選擇性地把文件MFT項進(jìn)行刪除或偽造處理,把文件MFT項中關(guān)于該文件的ー些基本信息包括屬性$STANDARD_INF0RMATI0N結(jié)構(gòu)中的創(chuàng)建時間、修改時間、文件大小,以及文件MFT末尾的可選數(shù)據(jù)流如圖片文件的縮略圖剝?nèi)?,防止文件周邊信息被泄露。如果是文件夾,則需要先把文件夾中的子文件和文件夾刪除,最后刪除該文件夾。每個空文件夾在進(jìn)行刪除之前,首先把該文件非常駐的$INDEX_ALL0CATI0N屬性的內(nèi)容擦除,之后按照刪除文件同樣的方式處理文件夾的MFT項中的內(nèi)容。本發(fā)明不僅限于以上實施例,凡是利用本發(fā)明的設(shè)計思路,做ー些簡單變化的設(shè)計,都應(yīng)計入本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.ー種NTFS文件系統(tǒng)的數(shù)據(jù)擦除方法,其特征在于,包括以下步驟 一、根據(jù)所要刪除文件或文件夾的路徑,獲得該文件所在的卷,在Windows下,使用CreateFile以形如“\\. \X ”的字符串作為名字打開X盤即NTFS的卷;然后使用ReadFile讀取該卷的前512字節(jié),即起始扇區(qū),獲得以下參數(shù)每個扇區(qū)的字節(jié)數(shù)、每個簇所含的扇區(qū)數(shù)、主MFT所在的邏輯簇號、文件記錄的簇數(shù)、索引記錄的簇數(shù); ニ、根據(jù)所要刪除文件的路徑,查找該文件ID 根據(jù)所要刪除文件的路徑,在由文件或文件夾MFT項構(gòu)成的B+樹中定位到相應(yīng)的文件或文件夾,并獲得該文件的文件ID ; 三、擦除文件相關(guān)信息 在獲得了文件ID之后,根據(jù)以下公式定位文件MFT項在磁盤上的位置 文件MFT項偏移量=文件ID*每個MFT項的字節(jié)數(shù)+主MFT的邏輯簇號*每個簇的字節(jié)數(shù); 然后根據(jù)文件MFT項頭的結(jié)構(gòu),將第0x17個字節(jié)與0x02個字節(jié)按位與,結(jié)果如果是O則判斷為文件,否則判斷為文件夾; 如果是文件,則執(zhí)行把文件在磁盤上分配的所有碎片通過指定的覆寫方法進(jìn)行擦除,使得文件主體數(shù)據(jù)被徹底擦除,不能恢復(fù); 如果是文件夾,則需要先把文件夾中的子文件和文件夾刪除,最后刪除該文件夾。
2.根據(jù)權(quán)利要求I所述的ー種數(shù)據(jù)擦除方法,其特征在于,在擦除文件主體數(shù)據(jù)之后,根據(jù)需要把文件MFT項進(jìn)行刪除或偽造處理,把文件MFT項中關(guān)于該文件的ー些基本信息包括屬性$STANDARD_INFORMATION結(jié)構(gòu)中的創(chuàng)建時間、修改時間、文件大小,以及文件MFT末尾的可選數(shù)據(jù)流剝?nèi)?,防止文件周邊信息被泄露?br>
3.根據(jù)權(quán)利要求2所述的ー種數(shù)據(jù)擦除方法,其特征在干,每個空文件夾在進(jìn)行刪除之前,首先把該文件非常駐的$INDEX_ALLOCATION屬性的內(nèi)容擦除,之后按照刪除文件同樣的方式處理文件夾的MFT項中的內(nèi)容。
全文摘要
本發(fā)明涉及一種NTFS文件系統(tǒng)的數(shù)據(jù)擦除方法,包括以下步驟一、在Windows下打開X盤即NTFS的卷;然后讀取該卷的前512字節(jié),即起始扇區(qū);二、根據(jù)所要刪除文件的路徑,查找該文件ID;三、擦除文件相關(guān)信息。本發(fā)明從底層磁盤數(shù)據(jù)中直接解析文件系統(tǒng),可以直接訪問到磁盤上所有文件的數(shù)據(jù),而不受操作系統(tǒng)的影響,從而對磁盤上的文件數(shù)據(jù)獲得最高權(quán)限,保證了文件數(shù)據(jù)的刪除以及不能被恢復(fù)。
文檔編號G06F17/30GK102693387SQ201210178220
公開日2012年9月26日 申請日期2012年6月1日 優(yōu)先權(quán)日2012年6月1日
發(fā)明者何平凡, 關(guān)正, 李響, 鐘鳴, 閆懷志, 陳博, 馬辰 申請人:北京理工大學(xué)