如何正確地遮蔽 PDF(光蓋一個黑框並不夠)
在敏感文字上畫一個黑色方塊並沒有把它移除,那些字還在底下。本文說明為什麼這樣行不通,並提供一個真正安全、可在瀏覽器中遮蔽 PDF 的方法。
你要分享一份文件,但想藏住幾行敏感內容——一筆薪資、一個地址、某人的名字。於是你在文字上畫了一個黑色矩形,然後就寄了出去。看起來像是遮蔽過了。其實並沒有。正是這個錯誤,外洩過法院卷宗、暴露過線民、讓政府難堪過,因為那些字仍然好端端地待在檔案裡,就藏在方塊的正下方。
如果你曾經把某些東西塗黑,然後就認定它已經不見了,那麼這篇文章值得你花兩分鐘。
為什麼黑框行不通
PDF 是把內容分層保存的。文字是一回事;畫在它上面的圖形又是另一回事。當你在一句話上放一個黑色矩形,你只是在文字上方加了一個圖形,卻完全沒有動到文字本身。它們還在那裡,是貨真價實、可被選取的文字,只是在視覺上被藏了起來而已。
任何人都能把它們找回來,而且這根本算不上駭客技術。框選那塊區域,複製。或是把檔案丟進一個文字擷取工具。那些「被藏起來」的文字會連同方塊一起原封不動地跑出來。黑色矩形騙過的是你的眼睛,不是這個檔案。
你可以親自驗證這一點。拿一份用方塊蓋住某些內容的 PDF,擷取它的文字。那些理應被遮蔽的字會出現在結果裡,因為它們從來沒有被移除過。這既是檢驗的方法,也是一記警告。
中繼資料藏著同樣的陷阱
就算可見的文字處理掉了,一份文件仍可能透過它的中繼資料外洩——那些藏起來的屬性,攜帶著作者姓名、編輯紀錄等等。真正的遮蔽,意味著也要去想想檔案結構裡藏了什麼,而不只是頁面上看得到什麼。
一個真正安全、可在瀏覽器中遮蔽的方法
可靠的原則是:別去蓋住文字,要把它摧毀。如果那些敏感字句在檔案裡已不再以文字的形式存在,那就沒有任何東西可被還原。以下是用瀏覽器工具做到這一點的方法,全程什麼都不上傳:
- 蓋住敏感部分。 在每一段你要去除的文字上放一個實心色塊,讓它在視覺上被藏住。光是這一步還不安全——關鍵在下一步。
- 把頁面壓平成圖片。 用 PDF 轉圖片把文件轉成圖片。這會把每一頁變成一張扁平的圖像。關鍵的效果是:文字不再是文字,而變成了像素。原本在你色塊底下的東西,現在就只是圖像的一部分,而那個色塊已永久地塗印在它上面。
- 重建 PDF。 用圖片轉 PDF把那些圖片再變回 PDF。你又得到一份文件了,但這份文件裡被遮蔽的文字,真的已經不再以可還原的文字形式存在。
- 驗證。 把結果丟進擷取文字跑一遍。如果那些敏感字句沒有出現,它們就真的不見了。這道檢查正是整件事的重點,每一次都要做。
有一個取捨要先知道:壓平成圖片會把整份文件真正的文字層都拿掉,所以整份文件都變成了一張圖,不再能被搜尋。而這正是被藏起來的文字無法被還原的原因。如果你需要文件其餘部分仍可被搜尋,可以事後對它做 OCR,它會根據可見的內容重建一個文字層;而被遮蔽的區域現在只是一片黑色像素,OCR 在那裡根本沒有東西可讀。
為什麼這件事必須留在你的機器上
想想你正在遮蔽的是什麼:它按定義就是敏感的,這正是你要藏住它的原因。把那份文件上傳到一個線上「遮蔽」工具,等於是把未經遮蔽的原件——敏感文字完整無缺——交到一台陌生人的伺服器上。你想保護的東西,恰恰在保護它的當下被暴露了。
reader.me 在你的瀏覽器中執行。上述每一步都發生在你自己的裝置上:檔案在本機被讀進記憶體、就地處理、再存回給你,什麼都不上傳。你可以用開發者工具(F12)在 Network(網路)分頁裡確認,或乾脆全程離線完成整件事。
真正的遮蔽,講的是移除,不是遮掩。黑框把文字藏在你眼前;壓平則把它從檔案裡移除。在本機完成,每一次都用文字擷取驗證一遍,你就能放心分享一份文件,確知你藏起來的東西真的已經不見了。