shred (Unix)
shred是Unix與類Unix系統中的命令之一,用於安全刪除檔案與裝置數據使之難以被恢復。shred也是GNU核心工具組的組成部分之一。
開發者 | GNU |
---|---|
目前版本 | 8.23(2014年7月18日Coreutils組成部分發佈)) | (作為
原始碼庫 | |
程式語言 | C |
作業系統 | 類Unix |
類型 | 檔案處理工具 |
許可協定 | GNU GPL |
網站 | Coreutils - GNU core utilities |
背景
編輯為保證效率,刪除某一檔案一般只需刪除其在檔案系統中的對應項,實際的檔案內容則仍完好無失真,這一特性也多為常見的數據恢復軟件所利用以恢復檔案。而假使該檔案內容被其他內容所覆蓋,專業的數據恢復裝置也能利用本有儲存內容的剩餘磁場來恢復原始內容。針對這些特點,shred以用能最大程度破壞原始數據的模式多次覆寫檔案的方式來達到安全刪除的目的[1]。
特點
編輯shred可以對普通檔案或裝置(在Unix與類Unix系統中裝置也是一類檔案)呼叫。若使用預設設定,shred就會以多種模式覆寫檔案3遍,但覆寫的次數也可以由用戶以使用-n的方式來定義。在使用-z的情況下,shred還可以在最後一次覆寫時將檔案全部以0覆寫,這也可藉以掩蓋檔案曾用shred覆寫過的痕跡。
預設情況下,shred也會覆寫檔案系統裏為檔案分配的空間中的空閒空間。任舉一例,在一簇佔用4KB的檔案系統中儲存一個5KB的檔案,那該檔案實際分配的空間就是8KB(2簇),而對該檔案執行shred時就會將這8KB空間全部覆寫;但若額外使用-x選項就可以避免覆寫空閒空間。除此以外,shred還可搭配-u選項以在覆寫完畢後自動刪除檔案。
局限性
編輯shred的局限性之一是當對某一普通檔案使用時,shred只會覆寫該檔案而不會覆寫檔案的其他副本,而如手動/自動備份、檔案系統快照、檔案系統的COW機制、快閃記憶體媒介的耗損平均機制、網絡檔案系統的快取機制和紀錄檔檔案系統的紀錄檔機制都可能導致檔案副本的產生。因為檔案系統本身的機制所產生的局限性都可以用一個辦法解決,即是直接對包含目標數據的所有裝置使用shred,但對於應用了耗損平均技術的裝置來說,數據分配所得的邏輯塊與實際的物理位置並不能保證是固定關聯的,因而對裝置進行shred也無法保證有足夠的安全性。在這種情況下,SATA裝置的安全擦除命令(如hdparm)就是更好的選擇,甚至對磁性儲存裝置來說使用SATA安全擦除工具也更快且更可靠。除此之外,對於無法使用的硬碟等裝置就可以考慮用物理破壞的方式使內容不可還原了[1]。
參考資料
編輯- ^ 1.0 1.1 Gutmann, Peter. Secure Deletion of Data from Magnetic and Solid-State Memory. Sixth USENIX Security Symposium. [2012-09-05]. (原始內容存檔於2007-12-09).
參見
編輯- shred invocation. GNU Coreutils. [2012-09-09]. (原始內容存檔於2012-09-17).
- Shred and secure-delete. Free Software Magazine. 2008-11-29 [2012-09-09]. (原始內容存檔於2008-12-04).
- Secure Erase Definition. About.com. [2012-09-09]. (原始內容存檔於2012-11-18).
- How To Completely Erase a Hard Drive. About.com. [2012-09-09]. (原始內容存檔於2012-11-18).