跳到內容
PDFLeanDocs
Go Pro

從 PDF 中對社會安全碼 (SSN) 進行遮蔽處理

社會安全碼 (SSN) 是需要遮蔽處理的典型範例:SSN 篇幅短小、容易被忽略、具備唯一識別性,且一旦外洩會造成永久性損害。如果您正在準備法庭文件、公開紀錄請求、供應商合約或保險資料包,所謂的「我用黑框把它蓋住了」根本起不了保護作用 —— 對於知道如何尋找的人來說,這就像是個書籤。以下為您說明真正的遮蔽處理是如何運作的,以及如何在不將文件上傳到任何地方的情況下完成這項工作。

人們的直覺往往是打開 PDF 編輯器,在敏感文字上畫一個黑色矩形,然後存檔。這種做法注定失敗,原因在於 PDF 格式本身。

一份 PDF 儲存了文字的兩種平行表示方式。一種是視覺層 —— 也就是在螢幕上繪製的字形;另一種則是文字層 —— 實際存在於頁面內容串流中的字元代碼,這也是搜尋引擎、複製貼上功能以及螢幕閱讀器所讀取的內容。當您畫一個黑框時,您只修改了視覺層。底下的文字層完好無缺,任何人都可以選取這個「已遮蔽」的區域,將其複製,或者匯出文字並以純文字讀取 SSN。更糟的是,某些基本編輯器中的「遮蔽」功能,說穿了就只是填滿深色的矩形。

這種失效模式在電子化證據開示 (e-discovery) 領域中有個名稱:這被稱為中繼資料/文字層外洩 (metadata / text-layer breach),而且在真實的法庭案件中,它曾導致被封存的文件遭到曝光。如果您的遮蔽處理可以被 Ctrl+A、Ctrl+C 輕易破解,那就不叫遮蔽。

真正的遮蔽處理會從內容串流本身移除文字。字元會從檔案中被物理性刪除,然後視覺區域才會被覆蓋。在經過真正的遮蔽處理後:

  • 選取該區域不會選中任何東西。
  • 複製貼上不會出現任何隱藏文字。
  • 在檔案中搜尋該 SSN 的結果為零。
  • 這些字元代碼不再存在於檔案的位元組中。

任何達不到這些標準的工具都算不上是在進行遮蔽,而這其中的差異可以在幾秒鐘內進行測試(我們稍後會提到)。

另一個經典的失敗案例是:遮蔽了第 4 頁的 SSN,卻遺漏了第 12 頁上完全相同的號碼 —— 可能是在頁首、簽名區塊或附件中。一份徹底的遮蔽工作始於針對模式的掃描,而不是人工逐字閱讀。

美國的 SSN 符合可預測的模式(九位數字,通常以 3-2-4 的形式分組),這表示可以透過程式找出它 —— 連同其他高風險的識別碼:護照與國民身分證號碼、信用卡號、電話號碼、電子郵件地址以及銀行帳戶詳細資料。PDFLean 的 PII 遮蔽工具會在本地端執行這項掃描:它會在瀏覽器中偵測 SSN、ID、電話、卡號與電子郵件候選項目,在上下文中向您顯示每一個項目,並讓您在移除任何內容之前進行確認或拒絕。您也可以在同一次掃描中加入自訂關鍵字(如專案代號或交易對手的名稱)。

「在上下文中顯示並讓我確認」這個步驟非常重要:單靠模式比對會標記出許多無害的九位數字。遮蔽處理是不可逆的,因此應由人工核准每一個命中結果。

逐步指南:不上傳即可進行遮蔽

Section titled “逐步指南:不上傳即可進行遮蔽”
  1. 開啟 PII 遮蔽工具。整個掃描過程都在您的瀏覽器中執行。
  2. 載入 PDF。它只會進入本地記憶體 —— 不會傳輸任何資料。
  3. 檢視偵測到的候選項目(SSN、ID、電話、卡號、電子郵件、自訂關鍵字)。根據周圍的上下文,切換每一個命中項目的開關狀態。
  4. 執行遮蔽處理。該工具會從內容串流中刪除字元代碼,並覆蓋受影響的區域。
  5. 驗證(下一節 —— 請勿跳過此步驟)。
  6. 儲存經過遮蔽處理的副本。

若要進行針對性移除 —— 移除您已經知道的特定名稱或數值 —— 手動遮蔽 PDF 工具可以接收關鍵字清單,並以相同的方式移除所有出現的字詞。

幾乎每個人都會跳過的驗證步驟

Section titled “幾乎每個人都會跳過的驗證步驟”

聲稱做了遮蔽很容易;驗證才是證據。請對輸出的檔案執行以下所有三項測試:

  1. 搜尋測試。 開啟儲存的 PDF 並搜尋確切的 SSN(請嘗試包含與不包含連字號:123-45-6789 及 123456789)。零個命中結果是唯一可接受的結果。
  2. 選取測試。 拖曳選取經過遮蔽處理的區域並複製。如果您的剪貼簿中包含數字,這表示文字層殘留了下來。
  3. 文字擷取測試。 匯出所有文字(文字擷取工具在本地端即可完成)並搜尋傾印出的資料。如果該號碼出現在任何地方,則表示遮蔽不完整 —— 最可能的情況是另一頁還有第二份副本。

請在最終儲存的檔案上執行這些測試,而不是在應用程式內的預覽中。預覽畫面是從即時狀態渲染出來的;只有儲存的位元組才能說出真相。

文字內容是明顯的目標,但 PDF 中繼資料則是一個更為隱蔽的目標。文件屬性 —— 作者、標題、主旨、建立軟體,有時還包含自訂欄位 —— 可能攜帶著來自原始建立應用程式的名稱、ID 和內部路徑。一份經過完全遮蔽處理的文件,如果其屬性中包含 Author: J. Smith, SSN 123-45-6789,依然會發生資料外洩。

請將移除中繼資料作為任何遮蔽工作的最後一個步驟;如果該檔案將被送往具對抗性的環境(如公開歸檔、資訊自由法 (FOIA) 回應),淨化工具也會本著相同的原則,剝除嵌入的指令碼、隱藏的動作以及其他動態內容。

遮蔽處理會永久破壞底層的文字。如果您稍後需要揭露該號碼(例如內部團隊正在審閱未經遮蔽處理的原始檔案),請在受控儲存區保留一份未遮蔽的獨立副本,並只對您要發布的副本進行遮蔽。發布的檔案應該是已經被清理過的;母檔則保留在您原本存放敏感原件的任何地方。

對於會被重複使用的表單,更好的做法通常是在複製時進行遮蔽:保持母檔的乾淨,並為每個外部收件者產生一個經過遮蔽的版本,這樣任何單一的遮蔽錯誤就不會反向傳播回您的原始文件。

我可以對掃描的 PDF 進行遮蔽嗎? 您可以覆蓋視覺影像,但掃描檔沒有文字層可以移除 —— 請先對其進行 OCR(PDF OCR),遮蔽復原出來的文字,然後再決定是要保留還是展平影像層。只有在掃描檔的像素確實被銷毀,而不僅僅是被塗黑的情況下,在掃描檔上畫黑框才算是充分的。

遮蔽處理是可逆的嗎? 不可逆 —— 這正是重點。位元組已經消失了。這就是為什麼在執行之前確認每一個偵測到的候選項目很重要,也是為什麼您要保留一個乾淨的母檔。

密碼保護算不算遮蔽? 不算。加密控制的是存取權;遮蔽移除的是內容。一份受密碼保護且帶有未遮蔽 SSN 的 PDF,依然包含該 SSN,任何擁有密碼(或有辦法破解)的人都能讀取它。

為什麼我的工具的「遮蔽」按鈕只是畫出一個黑框? 許多基本編輯器實作的是註解式的醒目提示/畫框,而不是真正的內容串流遮蔽。如果工具在執行後無法向您展示出乾淨的搜尋結果,那它就是在畫圖,而不是在遮蔽。


整項工作歸結為一個可測試的聲明:在您完成後,這些敏感字元不得存在於檔案中。搜尋它們、選取它們、擷取文字 —— 如果上述任何一項能找到該號碼,那遮蔽處理就失敗了。畫出框線、刪除位元組、在儲存的檔案上進行驗證、清理中繼資料,並保留一個乾淨的母檔。這套流程 —— 缺一不可 —— 才是「遮蔽」的真正含義。