鑑於不少朋友比較關心硬盤/U盤上的東西是否及如何“徹底刪除”的問題,本站決定瑟瑟發抖地發篇小文,並趁機把 EFF的相關教程 翻譯過來。
現在的徹底刪除數據的工具的基本原理是反覆多次(7或35次)地在要刪除的文件的位置上覆蓋一些隨機無用的數據,這方法對傳統機械硬盤是有效的。但非技術圈的朋友可能還不太知曉的技術事實是:在這些儲存介質(包括SSD固態硬盤、flash閃存包括U盤、SD卡等)上的數據是 很難很難很難很難真正擦除掉的! 目前擦除工具只對傳統的機械式磁盤有效,一些SSD硬盤自帶的擦除工具也未必真的有效(取決於該廠商的能力和誠信,見下文報告)。如果還有朋友不放心,請繼續閱讀。
本來爲了通俗易懂不想去摳技術細節,然鵝爲了讓觀點更有說服力,還是說說(摘譯)如下:
SSD和閃存有個特有的技術叫“耗損平均技術”(wear leveling,見 wiki)。從比較高的層次來看,這項技術是這樣工作的。硬盤的空間被分成一個個“塊”,就像書的一頁頁紙一樣。每當一個文件被寫入硬盤,其實它是被寫入到一個個塊裏。如果你想覆蓋這個文件你需要覆蓋這個特定的塊。但在SSD和USB盤上,擦除和重寫同一個塊的機會就很小。(由於SSD和USB的材質——譯者註)每個塊的擦除和重寫只能限定在有限的次數內,否則那個就會“報銷”了(就好比鉛筆和橡皮反覆在紙上同一位置寫和擦,紙也就不能用了)。爲了對付這種情況,廠商一般都會儘量確保每個塊的擦除和重寫的次數差不多相同,以儘量延長硬盤/U盤的壽命(所以才有如此之技術)。那麼副作用就是,這技術讓已經有數據的塊儘量不被重寫,找其他塊放新寫的數據。這就好比一本書的某一頁需要改動,但不直接在原處改,而是在別的(空白)處新寫入,讓目錄/索引指向新的頁面而已。所有這些操作都在很低的層面進行,連操作系統都看不出來其實硬盤是這樣操作數據讀寫的。所以你應該明白了爲什麼現在的那種反覆擦寫的工具在SSD/USB上很難奏效了——因爲工具無法確定多次的擦除是否都擦在了同一個塊上。
而且本來蘋果的 MacOS 上原本(在OS X 10.4 ~ 10.10)自帶 Secure Empty Trash 功能,但在OS X 10.11上這個功能被取消了,因爲蘋果覺得自己並不能保證這個功能可以徹底刪除數據,尤其現在大多配備了SSD硬盤(見官方回應)。如果作爲蘋果用戶的你確定還在使用傳統硬盤的話,可以考慮使用蘋果的 srm
命令來繼續完成這個活兒(見具體教程)。
這裏還有一篇 ars tech的文章也在解釋同樣的道理,有研究者還對12不同廠家的SSD硬盤進行擦寫測試,結果顯示只有4個樣本自帶的擦除工具能可靠地擦除,其他的呢都還只是在玩“忘記把它放哪兒了就算刪除了”的把戲(見 研究報告)。有的硬盤有比其他更好的擦除工具,比如 Indilinx
。
所以,該說說如何 應對 了。EFF和ArsTech 都建議在目前沒有更有效的工具時,最佳實踐就是(對數據)加密,並記得選擇 端對端 加密(並且是 AES128- 甚至256- 位以上的加密算法)。只要密鑰被刪(或者被主人弄丟),被加密的東西在目前是無論如何都找補回來的了(除了據說很牛逼的量子計算2333)。 MacOS 自帶加密工具FileVault 2就不贅述了,微軟家的請用 VeraCrypt。
對了上述情況同樣適用微軟的窗戶,擦除工具推薦:BleachBit