“賣掉你的舊手機可能導致隱私泄露”、“恢復出廠設置的二手手機舊數據依然可以被讀出”、“有商家專做恢復二手手機數據的生意”……
就在最近幾天,來自央視的一則報道讓二手手機的隱私安全成為了許多朋友關注的焦點。一方面來說,明明已經刪掉了手機里所有的個人信息、甚至使用了自帶的“恢復出廠設置”功能,但敏感文件卻依然可以通過技術手段進行恢復的事實,已經足夠令人驚訝。而另一方面,居然還有商家專做這樣的生意,更是意味著“從二手手機中提取敏感信息”可能已經形成了一個黑產鏈條。
顯然對于許多普通消費者而言,這絕對不是什么好消息。但縱觀相關報道,我們并未發現其中對于“為什么恢復出廠設置的手機依然能提取出信息”,以及“如何預防自己成為受害者”給出真正科學、詳細的解答。而僅僅只強調威脅、卻不進行解釋、也不傳達預防方式的這種報道,從某種程度上來說則可能會引起不必要的誤解,甚至進一步加大用戶的恐慌。
有鑒于此,我們三易生活決定為大家盡可能通俗、簡單地解釋一下,二手手機隱私泄露背后的那些事,并告知一些預防的辦法。
為何手機資料刪除還能恢復?因為閃存的特性使然
首先我們要解釋一下,在這整件事中最核心的知識點,也就是“恢復出廠設置的二手手機,卻導致了用戶數據泄露”是怎么實現的。
眾所周知,手機通常都有“恢復出廠設置”這一功能,恢復出廠設置后,手機里的所有用戶資料都會被刪除,用戶自行安裝的軟件也會全部消失,并被替換為出廠時預裝的軟件。
很顯然,“恢復出廠設置”本質上包含了兩個步驟的操作,即首先刪除用戶資料和所有設置,然后安裝預先設定好的出廠自帶App。在這其中“出問題”的,自然就在刪除資料這一步上。
因為當你的手機運行完“恢復出廠設置”后,實際上其內部原有的那些資料,很可能根本就沒有被刪除。
為什么會這樣?要弄明白這一點,我們需要深入到手機內部,看看手機的閃存芯片(也就是存儲數據的芯片)到底是怎樣在工作的。
用通俗的例子來表示的話,手機的閃存芯片就好像一個圖書館,其中負責存儲信息的“晶格”結構,就好比圖書館里的書架,而用戶存儲的資料本身,自然也就相當于一本本的書籍。
那么大家不妨想象這樣一個場景,當你一次性向圖書館歸還大量書籍(向閃存寫入大量內容)時,這些書籍應該如何被放進書架里呢?
是按照歸還(寫入)的順序,依次放進空余的書架(寫入空白的閃存空間)嗎?實際上并非如此。因為閃存有一個很重要的特性,那就是其內部結構(也就是書架)會隨著使用次數的增多而逐漸“磨損”。假如數據是按照“先來后到”的順序,依次寫入閃存中未使用的空間,那么就會帶來一個問題,就是位于閃存頭部的區塊和位于尾部的區塊寫入次數會產生嚴重的差異。就好比在圖書館里位于門口的書架如果經常使用,而位于深處的書架平時幾乎沒什么機會被動用的話,最后的結果當然就是門口的書架會先壞掉。而體現在閃存上,也就是常用區塊會先損壞,結果造成用戶資料的損失。
正因如此,在現代的閃存芯片中,廠商都會設計一個名為“磨損平衡”的機制。就好像圖書館里的管理員一樣,當用戶寫入數據時,數據現在并不會直接寫進閃存,而是會先保留在內存里,然后由磨損平衡算法將大塊的數據拆開,優先寫入閃存中那些不常用的區塊。就好比圖書管理員將歸還的圖書先堆在一處,等有空了再優先將其放進那些比較新的書架里一樣,這樣一來所有的書架(閃存晶格)“磨損”程度就會趨于一致,便減緩了壞塊的出現,延長了“圖書館”(閃存)的整體壽命。
但是這樣一來,一個新的問題就誕生了。因為寫入的數據在閃存上其實是被拆開、打亂,填充到了許許多多分散開來的位置上了,于是為了數據讀取的時候能夠準確找到它們,磨損平衡算法就會將每一份數據與它們在閃存上的實際位置進行一個統計,建立一個文件與實際存儲位置之間的對應表格,這個表格就叫做FTL,也就是閃存轉換層(Flash Translation Layer)。
明白了以上這些,我們就可以來談談當手機上的“恢復出廠設置”,或者是日常刪除文件時,閃存里到底進行了怎樣的操作了。很簡單,當接到“刪除文件”指令時,磨損平衡算法首先會在FTL里找到需要刪除的文件位置,然后在FTL中將這些位置的“備注信息”擦除,也就是將它們重新標注為“空白區域”。這樣就完成了“刪除操作”。
相信大家都發現問題出在哪了,當我們進行刪除操作的時候,實際上第一時間刪除的只不過是FTL里的文件位置信息,而真正的文件本身此時依然存在于閃存上,只不過找不到它了。如此一來,只要使用能直接掃描整個閃存內容的數據恢復軟件,自然也就可以讀出那些被“刪除”的文件。這就是智能手機“恢復出廠設置”后,其中用戶信息卻依然可以被讀出的原因。
該如何避免隱私泄露?辦法其實很簡單
為什么閃存在刪除文件的時候,實際上只會刪掉FTL里的位置信息,而非直接刪掉文件本身?這其實是為了延長閃存的壽命,并提升性能而做的一種特殊設計。正如我們在前文中所講到的那樣,閃存的寫入本身存在“磨損平衡”機制一樣,在閃存上刪除文件時,磨損平衡算法同樣也會發揮作用。它首先只會刪掉FTL里的文件位置記錄,然后等到設備閑置的時候,磨損平衡算法才會對閃存進行名為“垃圾回收”的自動處理,也就是真正刪掉那些被標注為“已刪除”的文件,并騰出對應的物理空間。
所以只要我們在手機上啟動“垃圾回收”功能,那些存在于閃存里被標注為“已刪除”的文件,就會真正地消失。而對于Android手機來說,啟動閃存的“垃圾回收”并不需要什么復雜的操作,只需給手機插上充電線并保持開機狀態,然后放一晚上不去使用,就能觸發閃存自動進行“垃圾回收”,進而真正地消除那些“被刪除”的文件。
換句話說,在你將手機“恢復出廠設置”后,還需要重啟一次手機讓其進入系統界面后,然后插上充電線讓它充一晚上的電。此時只要手機廠商沒有太“魔改”Android系統,那些被你刪掉的文件,就應該已經不再存在于閃存里了。
有的朋友可能會擔心,自己的手機要是不具備這種長時間充電自動觸發閃存垃圾回收的功能,怎么辦呢?其實也好辦,因為當垃圾回收機制“刪除”一個文件的時候,雖然文件本身并沒有在第一時間消失,但它所在的閃存區域此時已經被標注為了“可使用”的空白區域。于是我們只要給手機一次性拷入大量、不涉及隱私內容的文件(比如說,你可以一次性往手機里傳輸幾百GB的葫蘆娃啥的),這些新寫入的文件就會直接覆蓋掉“被刪除”文件在閃存上的物理位置。然后我們再將手機恢復出廠設置,此時閃存里留存下的文件信息,就已經是新寫入的那些無關緊要的文件了。
當然,我們甚至可以將“恢復出廠設置——拷入無關的大容量新文件”的這個操作反復數次,就可以徹底確保手機中的那些重要數據被完完全全覆蓋掉。試想一下,到時候不懷好意的二手手機店拿著剛收來的手機,找數據恢復試圖獲得用戶隱私數據,結果恢復出來的是幾百個GB的無用文件,這感受是不是意外地還有點爽?
【本文圖片來自網絡】