跳轉到

收到來源給的檔案

一份內部簡報

聯絡了三個星期的人今天傳來一份 PDF,二十幾頁,看起來是內部簡報的匯出檔。

接下來要做的事有三件,順序不能顛倒。確認你收到的跟對方傳出的是同一份,弄清楚這個檔案本身帶著什麼,然後決定報導裡怎麼引用它。

第三件最要緊。同一份文件在組織內部發給不同的人時,每一份可能都不一樣,而差異細到肉眼看不出來。你把原始檔直接交出去或公開,等於替對方指出是誰給的。

先確認兩邊是同一份

請來源在他那邊算一次檔案的 SHA-256,你收到之後用檔案雜湊比對算一次,兩串對一下。

命令列本來就算得出 SHA-256,sha256sumshasum -a 256Get-FileHash 算出來的值跟檔案雜湊比對一樣。對方不熟命令列的時候,給他那一頁的網址比教他開終端機快。

對得上代表傳輸過程完整。對不上就是中間掉了東西,重傳。這一步做完,後面查到的任何東西都確定屬於原始檔本身。

看清楚這個檔案帶著什麼

PDF 用 PDF 頁面整理的「看裡面有什麼」,它會把每一頁的文字抽出來、數一數附件、註解與表單欄位。Office 檔與圖片用檔案 metadata 清除器,它會逐段列出裡面有哪些欄位。

常見的是製作者帳號名稱、公司網域、電腦的使用者名稱、精確到秒的建立與修改時間、編輯過這份檔案的每一個軟體版本。這些欄位本身就足以把範圍縮到幾個人。

註解與修訂記錄也要看。簡報裡刪掉但沒有真的移除的備註欄,PDF 裡蓋著黑色方塊但文字層還在的段落,都算在內。用同一頁的搜尋框查你以為看不到的字,搜尋結果會顯示那段字還留在第幾頁。

文件外流追蹤是怎麼運作的

把同一份文件發給二十個人,每一份都做一點點不一樣,事後取得外流版本就知道是哪一份出去的。這個做法有幾種形式,看不見的字元是其中一種。

零寬字元夾在字與字中間,螢幕上完全看不出來,複製貼上會跟著走。同形字換掉幾個字母,肉眼一樣分不出。方向控制字元、標籤字元也能拿來編碼。

把文字貼進隱形字元偵測,它會標出這幾類字元的位置並說明每一類是什麼。

隱形字元偵測能證明有,不能證明沒有。查出來乾淨只代表沒有這幾類已知的字元。用字間距、換行位置、圖片裡幾個像素的差異做的標記,它看不到,而那幾種手法一樣在用。

所以查證的結論永遠不會是「這份檔案可以安全地公開」。

引用要靠重打與遮蔽

既然證明不了乾淨,報導裡就不要轉傳原始檔。

引用文字的時候自己重新打一次,不要從原檔複製貼上。重打不會把夾帶的字元帶進你的稿子裡,它們留在原始檔那邊,這是最簡單也最可靠的一步。

一定要用畫面的時候,截圖之後用截圖遮蔽把不該出現的部分填成實心黑,輸出是重新編碼的新檔案,原檔的 metadata 與檔名都不會跟過來。

要把材料交給編輯台、律師或協作的記者,先問一句這個人需不需要原始檔。多數時候他需要的是內容,而原始檔每多傳一手,被指認的機會就多一分。

原始檔怎麼收著

原始檔要留,因為查證與日後的爭議都要靠它。留的方式是加密之後放在自己的裝置上。

密語與密碼產生器抽一組密語,用本機檔案加密封起來。輸出是 age 格式,任何裝了 age 命令列工具的電腦都打得開,日後換設備也不會被這個網站綁住。

這條路徑不只用在內部文件

任何一份你沒有製作、卻要拿來用的檔案都適用:

  • 讀者或民眾提供的照片、錄音與截圖
  • 依法申請取得的公文與會議記錄
  • 匿名信箱收到的附件
  • 協作對象傳來、你要再往外交的素材

這幾個工具都在你的瀏覽器裡執行,檔案沒有離開裝置。頁面存進裝置之後沒有網路也能用,見離線閱讀