你從網站「刪除」的檔案,究竟發生了什麼事
「我們會在一小時後刪除你的檔案」聽起來令人安心,卻是一個你無從查證的承諾。本文談談一個被上傳的檔案究竟會發生什麼事,以及唯一一個你能真正確定的版本。
你把一份文件上傳到一個線上工具,它做完它該做的事,然後一行令人安心的字告訴你,你的檔案會在一小時後被刪除。你關掉分頁,感覺一切都好。但那個檔案實際上發生了什麼事?一旦它落在別人的伺服器上,「已刪除」又到底是什麼意思?這值得好好看一看,因為那個讓人安心的答案,和那個誠實的答案,並不是同一個。
「已刪除」是一個承諾,不是一個保證
核心問題在這裡:一旦你的檔案落在一台你無法掌控的伺服器上,你就沒有任何辦法去驗證關於它的任何事。「一小時後刪除」這則訊息是一句政策聲明。你信任它的方式,和你信任網站上任何一句話的方式沒有兩樣。沒有收據、沒有確認、沒有任何辦法讓你查證它真的發生了。
這不代表每一個服務都在說謊。許多服務是真心想要按時刪除檔案的。重點更狹窄、也更難堪:你無法確認它。你是憑著一份信任在接受它,而對任何敏感的東西來說,「相信我」都是一個薄弱的地基。
一個「已刪除」的檔案可能逗留在哪裡
就算出於善意,一次刪除也很少就是一個檔案在伺服器上一生的全部故事:
- 備份。 伺服器會例行被備份。一個從正式系統刪除的檔案,可能依設計在某個備份快照裡留存數天或數週,過程中毫無惡意。
- 快取與副本。 檔案會流經快取、暫存空間和內容傳遞網路。主儲存區上的一次「刪除」,不見得能立刻觸及每一份過渡性的副本。
- 日誌。 就算檔案本身消失了,關於它的紀錄,何時上傳、從何處上傳、它的檔名、它的中繼資料,都可能躺在比那份文件活得更久的日誌裡。
- 第三方與司法管轄。 這個服務可能跑在向別人租來的基礎設施上,位於一個規則不同的國家。你檔案的命運,如今由一連串你從沒聽過的當事方所支配。
這些都不需要任何人懷著惡意行事。這只不過是伺服器基礎設施平常運作的方式。「已刪除」遠比那一句信心十足的話所暗示的要更為紛亂。
而這還是好的情況
上面假設的是一個謹慎、出於善意的服務。同一次上傳,也讓你暴露在那些糟糕的情況下:一場洩露了已儲存檔案的資安事件、一次公司政策或所有權的變更、一紙索取資料的法律要求,或者單純就是一個從來沒有它首頁所宣稱的那麼謹慎的服務。一旦檔案離開了你的手,這一切都已經不在你的掌控之中。
唯一一個你能確定的檔案
只有一個版本的 PDF,你能對它的命運完全確定:那個從未被上傳的版本。一個從未離開你機器的檔案,在陌生人的伺服器上沒有備份,在任何人的日誌裡都沒有蹤跡,也不會暴露在某場你明年才會讀到的資安事件中。沒有什麼東西要刪除,因為打從一開始就沒有副本存在。這不是一個更強的承諾;這是根本不需要承諾。
這正是 reader.me 背後完整的概念。這些工具跑在你的瀏覽器裡,在你自己的裝置上。當你合併、壓縮或保護一份 PDF 時,檔案會被讀進你機器的記憶體裡,就在那裡處理,然後再存回給你。它從來不會被上傳。你不必去信任一份刪除政策,因為根本沒有一份伺服器上的副本需要你去信任它的刪除。
而且你可以驗證這一點,這正是一個以上傳為基礎的工具永遠無法提供的部分。打開任何一個 reader.me 工具,打開開發者工具(F12),在你作業時盯著 Network(網路)分頁看,你會看到什麼都沒有離開。或者乾脆把你的網路完全關掉,離線使用它。它照樣能運作,而這之所以可能,正是因為那個檔案本來就哪裡都不會去。
重點帶走這一句
「我們會刪除你的檔案」要求你去信任一個你無法查證的承諾,內容是你看不見的副本,位在你永遠不會造訪的伺服器上。對一張度假照片來說,沒問題。但對任何真正重要的東西,一份合約、一份病歷、一張身分證件,更好的答案不是一個更好的承諾。而是根本不上傳那個檔案。在你的瀏覽器裡完成工作,那麼「你的檔案在別人的伺服器上會發生什麼事」這個問題,根本就不會出現。