怎麼看出 PDF 有沒有被修改過:看得到與看不到的
你常常能發現 PDF 被修改過的跡象:修改日期晚於建立日期、製作程式欄位寫著某個 PDF 編輯器、有一行的字型略有不同,或有可以選取的文字藏在方框下面。任何人用一般的 PDF 閱讀器,花幾分鐘就能檢查這些。
老實說,限制在於:這些跡象沒有一個是證據。仔細修改過的檔案可能看起來毫無破綻,而沒被動過的檔案只是因為重新儲存過,就可能看起來很可疑。真正能確認文件是真的,只有兩種方式:有效的數位簽章,或向發行單位查證。其他都只是線索。
步驟 1:查看文件屬性
大多數 PDF 閱讀器都會顯示檔案的中繼資料。在 Adobe Acrobat Reader 中,它在「檔案」下的「內容」裡。在其他閱讀器中,找找「文件屬性」或資訊按鈕。你要看的是幾個欄位。
- 建立日期和修改日期(Created 和 Modified)。如果修改日期比建立日期晚了幾天或幾個月,表示有東西重新儲存過這個檔案。那可能是修改,也可能只是有人加了註解或填了表單。
- 製作程式和建立者(Producer 和 Creator)。這兩個欄位寫的是軟體名稱。一份銀行對帳單的製作程式如果是給一般消費者用的 PDF 編輯器,而不是銀行會用的那種系統,就值得再看一眼。
- 作者和標題(Author 和 Title)。有時這些是從範本或之前的文件遺留下來的,可以告訴你檔案的來源。
中繼資料告訴你的是最後一個程式做了什麼,而不是誰寫了這份文件。舉個實際的例子:從 Kopitiam 編輯器下載的 PDF,製作程式顯示為 pdf-lib(Kopitiam 使用的開源函式庫),建立日期和修改日期都是你下載的那一刻。原本的作者和標題不會帶過去。所以全新的建立日期並不表示文件是新的,只表示檔案是新的。
步驟 2:仔細看文字
把重要的部分放大到 200% 或 400%:姓名、金額、日期、帳號。修改通常範圍很小、目標明確,所以破綻就出現在那些地方。
- 字型。有沒有某個數字的字體、粗細或大小和周圍的數字略有不同?看看在不同字型間形狀會變化的字元,例如數字 1、4 和 7。
- 對齊。有沒有某一行比相鄰的行稍微高一點或低一點,或字元之間的間距不平均?
- 顏色。某個字的黑色是不是有一點點不同,或在有底色的背景上,它後面有一個淡淡的方框?
- 合計。數字加起來還對嗎?在薪資單或發票上,被改過的數字常常會讓總額或稅額那一行對不上。
有些閱讀器還會列出檔案使用的字型。Adobe Acrobat Reader 的「內容」視窗裡有一個「字型」分頁。如果一份文件用的是某一種字體,但清單裡還包含另一種,例如 Helvetica,就要問問那個字型用在哪裡。
步驟 3:試著選取並複製文字
這是最有用、卻大多數人從來沒試過的檢查。在可疑的那一行上拖曳選取文字,複製,然後貼到一則純文字筆記裡。
- 如果貼上的文字和你看到的不一樣,就表示有隱藏的文字。修改 PDF 的一種常見做法,是用白色方框蓋住舊字,再在上面打上新字。舊字常常還在檔案裡。
- 如果頁面其他地方都能選取,只有某一行選不到,那個部分可能是貼在原文上面的一張圖片。
- 如果其他頁面都是文字,只有某一整頁是圖片,它可能被替換過,也可能只是另外掃描的。
Kopitiam 自己的「遮蓋並取代」工具就是這樣運作的。它在現有文字上蓋一個顏色相同的方框,再在上面加一個新的文字框,原本的文字則留在底下的檔案裡。所以它適合用來修正錯字,但不適合用來隱藏資訊。要隱藏資訊,Kopitiam 的「PDF 塗黑」工具會把每一個塗黑過的頁面變成圖片,讓底下的文字真正消失。你可以用「PDF 轉 Word 與文字」取出檔案裡的每一個字,包括被蓋住的字,然後閱讀結果。它在你的瀏覽器中執行,所以檔案不會被上傳。
步驟 4:檢查有沒有數位簽章
數位簽章是檔案裡唯一真正能偵測到變更的東西。它是用簽署者的憑證做成的加密封印。簽署之後,即使只改了一個字元,驗證也會失敗。
- 用會驗證簽章的閱讀器開啟 PDF,例如 Adobe Acrobat Reader。
- 找找頂端的簽章列或簽章面板,然後開啟它。
- 讀一讀上面寫了什麼:簽章是否有效、由誰簽署,以及文件在簽署後是否被變更過。
- 如果它顯示簽署後有變更,就讀一讀詳細資料。有些文件允許之後填寫表單或加入註解,面板會列出改了什麼。
有兩件事要分清楚。第一,手寫簽名的圖片不是數位簽章。Kopitiam 的「簽名」工具和大多數 PDF 編輯器一樣,會把畫出來的簽名以圖片的形式放上去,這完全無法證明檔案有沒有被更改。第二,有效的數位簽章證明的是檔案從簽署後沒有被更改,並不能證明簽署之前寫的內容是真的。
增量儲存:藏在某些檔案裡的歷史
有些 PDF 軟體儲存變更的方式,是把變更加到檔案末尾,而不是重寫整個檔案。之前的版本仍然在裡面,就在變更的下面。專業工具可以把那些舊版本取出來,有些閱讀器的簽章面板也能讓你查看當初簽署的那個版本。
有一個粗略的檢查方法。用純文字編輯器開啟 PDF 的副本,搜尋 %%EOF,它標示一個已儲存版本的結尾。出現不只一個,可能表示檔案經過增量儲存。這只是一個提示:有些檔案因為一般的技術原因就會有兩個,而很多編輯器,包括 Kopitiam,都是寫出一個全新的檔案,不會留下任何舊版本。
為什麼這些都不是證據
- 中繼資料很容易更改或移除。沒有中繼資料什麼也證明不了,而有中繼資料也可能是偽造的。
- 無辜的操作會留下同樣的痕跡。使用「列印」再「另存為 PDF」、壓縮檔案或填寫表單,都會改變製作程式和日期,卻不會改變內容。
- 把 PDF 平面化會把加上去的文字合併進頁面,所以選取並複製的檢查可能就看不出獨立的一層了。
- 一個細心的偽造者可以配好字型,從頭重建一整頁,不留下任何你在家裡能發現的破綻。
所以,把你發現的東西當作提出疑問的理由,而不是結論。如果一位租屋申請人的薪資單看起來怪怪的,不要因為一個字型就指控任何人。請對方透過你信任的管道再提供一次文件,或向雇主確認細節。
真正重要的時候,回到源頭
凡是牽涉金錢或法律效力的文件,例如申請貸款用的銀行對帳單、租屋用的薪資單,或求職用的證書,可靠的檢查方式就是向發行單位查證。請銀行、雇主或機構直接把文件寄給你,或請他們確認關鍵數字。有些發行單位會印上參考編號或 QR code,讓你在他們的官方網站上查驗。請自己輸入那個網站的網址,而不是相信文件上印的連結。
如果糾紛可能鬧上法院或找上保險公司,請把原始檔案完全照收到時的樣子保留下來,並尋求專業協助。正式的鑑識檢驗需要專業工具和專業知識。Kopitiam 是 PDF 編輯器,不是鑑識工具,這篇提到的檢查只是初步查看,而不是調查。
常見問題
- 怎麼看出 PDF 有沒有被修改過?
- 在文件屬性中查看修改日期是否晚於建立日期,以及製作程式是否寫著某個 PDF 編輯器。放大檢查字型或對齊是否不一致,並選取、複製可疑的文字,看看底下有沒有藏著東西。這些是線索,不是證據。
- 能證明 PDF 沒有被修改過嗎?
- 只能靠有效的數位簽章,它會偵測簽署後做的任何變更,或向發行單位確認這份文件。中繼資料和目視檢查可能被偽造,也可能有無辜的解釋,所以單靠它們無法證明檔案是真的。
- 編輯 PDF 一定會留下痕跡嗎?
- 不一定。很多編輯器會寫出一個全新的檔案,中繼資料可以更改,平面化也會移除獨立的圖層。高明的修改可能不留下任何一般閱讀器能找到的東西,所以檢查結果乾淨,不代表檔案沒被動過。
- PDF 上的簽名圖片能證明它是真的嗎?
- 不能。畫上去或貼上去的簽名只是頁面上的一張圖片,可以被複製到任何文件上。只有經過會檢查憑證的閱讀器驗證的加密數位簽章,才能顯示檔案在簽署後有沒有被更改。
- 為什麼我什麼都沒改,修改日期卻變了?
- 很多操作都會重新儲存 PDF:填寫表單、加入註解、壓縮,或使用「列印」再「另存為 PDF」。每一種都可能更新日期和製作程式欄位,即使內容完全一樣。
- Kopitiam 能檢查 PDF 有沒有被修改過嗎?
- 不能,Kopitiam 不是驗證或鑑識工具。它的「PDF 轉 Word 與文字」工具可以取出檔案裡的所有文字,這可能會揭露藏在遮蓋方框下面的字,而且它在你的瀏覽器中執行,不會上傳檔案。要取得證據,請依靠數位簽章或發行單位。