鎖定 PDF 的密碼強度僅取決於其熵值,一組由大小寫字母、數字與符號組成的 16 字元字串,約可達到 103 位元的隨機性——這正是離線暴力破解攻擊不再可行的門檻。「為 PDF 設定密碼」實際上意味著完成兩項獨立工作,而兩者皆正確執行,才能讓文件免於落入不肖人士之手。第一項工作是密碼字串本身:必須夠長、隨機且不重複使用,因為無論工具採用何種 PDF 加密演算法(現代產品通常為 AES-128 或 AES-256),都僅能在有人猜中金鑰前保護檔案。第二項工作則是在 PDF 工具中正確套用該字串,並在格式支援的情況下分別設定開啟與編輯密碼。本文聚焦於該工作流程的前半段——產生一組強大且不重複、可直接貼入任何 PDF 保護對話框的密碼。您所選擇的實際應用工具,並不會改變密碼本身必須具備高熵值的要求,因此無論您使用 Adobe Acrobat、LibreOffice、macOS 的 Preview、Windows 內建的 PDF 功能,或免費的網頁式 PDF 鎖定工具,皆適用相同的產生步驟。

create password to pdf
create password to pdf

「為 PDF 設定密碼」實際上代表什麼?

每個 PDF 密碼提示問的其實是同一個問題:讀者必須輸入什麼字串,檔案才會解除遮罩?在 PDF 的世界中,該字串依您使用的工具不同,可扮演兩種截然不同的角色:

  • 開啟密碼(有時稱為使用者密碼),完全把關檔案。沒有它,PDF 讀取器會直接拒絕解密內容。
  • 權限密碼(有時稱為擁有者密碼),允許任何人開啟並閱讀 PDF,但會在輸入第二組字串前,禁止編輯、列印或複製。

可以把這兩道密碼想像成同一扇門上的兩道鎖。開啟密碼保護的是機密性——讓合約、退稅資料或身分證件掃描檔,遠離撿到檔案的陌生人。權限密碼保護的則是完整性——防止有人在合法開啟文件後編輯內容或擷取文字。強健的產生步驟對兩者皆重要,但對開啟密碼更為關鍵,因為攻擊者必須實際破解它,才能窺見文件內容。

為何隨機 PDF 密碼勝過好記的密碼

人為挑選的密碼往往集中在可預測的模式上,而 PDF 是格外誘人的目標,因為該檔案格式支援度廣泛,常透過電子郵件分享,且經常夾帶攻擊者覬覦的內容——財務數字、法律協議、身分證件掃描檔。一旦 PDF 落入他人手中,擋在檔案與離線破解之間的,就只剩下密碼本身的熵值。一台現代工作站每秒可對遭竊的 PDF 進行數十億次猜測,這正是「Spring2024!」或寵物名字加上出生年份,雖然表面看起來複雜,卻會在數秒內被破解的原因。

真正隨機的字串能去除攻擊者下注的模式。隨機抽取的大小寫混合字母、數字與符號組合,在字典中並無對應詞條,因此暴力破解(其規模隨熵值而非巧妙替換而擴大)便成為唯一可行的手段。由密碼學安全隨機數產生器支援的產生器,透過均勻抽取字元來徹底消除這些模式,使輸出結果毫無可利用的偏差。現行指引中最強烈的訊號是:優先重視長度而非強制的複雜度,並確保每組密碼皆獨一無二,避免單一文件的外洩擴散到下一個文件。這兩項預設值都已內建於密碼產生器的運作方式中。

逐步產生 PDF 密碼

  1. 在瀏覽器分頁中開啟密碼產生器。由於所有運算皆在本機執行,不會有網路請求將密碼外傳;關閉分頁後密碼即隨之消失。
  2. 將長度滑桿(或在數字方塊中輸入)拖曳至 16 以上。對任何重要文件而言,16 字元是強健的預設值;由於熵值隨字元數增加,愈長愈強。
  3. 勾選您願意輸入的每種字元類型:大寫、小寫、數字與符號。同時啟用四種類型,可提供 86 個相異字元的字元池,這是最廣泛的實用組合。
  4. 若您日後可能需要親自讀回密碼——例如透過電話口頭傳達——請開啟「排除易混淆字元」選項,以便從輸出中濾除 0、O、1 與 l。
  5. 查看工具所顯示的強度指示條與熵值位元數預估值。針對應長年保持私密的文件,請以 100 位元以上為目標。
  6. 點擊複製,然後將密碼貼入 PDF 加密工具的開啟密碼(以及選填的權限密碼)欄位。若對話框含有確認欄位,請於該處再貼一次。隨時可點擊「產生新密碼」以在不更動長度與字元設定的情況下,重新抽取一組全新的字串。

挑選合適的長度與字元組合

您能掌控的最大槓桿是長度。將字元數加倍,攻擊者所需的工作量大致會呈平方成長;而將一種字元集換成較大的字元集,僅能將工作量乘以一個固定的倍數。作為粗略基準,當四種字元集皆啟用時,字元池包含 86 個字元,每個字元約可增加 6.4 位元的熵值。強度指示條所回報的是 Shannon 熵,計算方式為長度 × log2(字元池大小)。舉一個具體例子:啟用四種字元集的 16 字元密碼,落於 86 字元的字元池中,因此 16 × log2(86) = 16 × 6.426 = 102.8 位元,四捨五入後約為 103 位元——這正是強度指示條所顯示的數值,也是讓該字串超越離線暴力破解範圍的門檻。下表說明常見選擇如何轉換:

長度字元池大小熵值(位元)強度等級
886~51弱——數小時內遭破解
1286~77中等——可抵擋隨意破解
1686~103強——建議預設值
2086~129強——長效期機密
2486~154強——高價值文件

相同的長度搭配較小的字元池,熵值也會降低。僅由小寫字母組成的 8 字元密碼——每個位置 26 個字元——僅能達到 37 位元,遠低于離線攻擊瞬間即可突破的水準。排除易混淆字元會略微縮減字元池,但通常能換得更易讀的密碼;對於僅偶爾輸入的字串而言,這是值得的取捨。強度指示條所使用的經驗法則,與OWASP 身分驗證速查表所採用的標準一致:低於 60 位元為弱,60 至 100 位元為中等,100 位元以上則能在離線暴力破解下保持強健。

將產生的字串套用至您的 PDF

您剛剛複製的密碼就是一般的字串,因此任何接受 PDF 密碼的工具皆可使用。常見的貼上位置包括:

  • Adobe Acrobat 的「使用密碼保護」對話框,可分別選擇開啟密碼與權限密碼。
  • LibreOffice Draw 或 Writer 的「加密 PDF」匯出選項,可於儲存或匯出任何文件為 PDF 時使用。
  • macOS 的 Preview,可透過 檔案 → 匯出 → PDF → 顯示詳細資訊 → 須輸入密碼才能開啟 套用開啟密碼。
  • Windows 檔案總管的 PDF 加密支援,以及 PDFsam、qpdf 或 pdftk 等專用免費工具,皆可從命令列加密 PDF。

將產生器中的密碼貼入密碼欄位與確認欄位後儲存檔案。分享前,請先關閉文件再重新開啟,以驗證鎖定是否生效。若檔案未提示密碼即開啟,但編輯、列印與複製等功能選單呈現灰色,則代表您將密碼輸入至僅限權限的欄位;若對話框在開啟前先提示輸入密碼,則代表您輸入的是開啟密碼欄位。

PDF 密碼常見的錯誤

強健的產生器能完成大部分工作,但有幾個習慣可能會抵消其所提供的保護:

  • 在多個檔案間重複使用相同的 PDF 密碼。一旦某個 PDF 外洩,其他以相同字串鎖定的文件皆會因同一組猜測而淪陷。
  • 將密碼與 PDF 存放在一起,或將檔案命名為「contract.pdf.password.txt」。加密僅在金鑰與檔案分開存放在攻擊者無法同時觸及之處時,才能發揮保護作用。
  • 依賴短密碼加上 $ 符號與驚嘆號。現代破解工具的字典權重,正是傾向於這類模式。
  • 透過與 PDF 相同的管道分享密碼。即使傳輸過程使用 TLS,電子郵件加上電子郵件仍會讓金鑰與鎖頭行經相同的攔截面。
  • 信任在遠端伺服器上加密 PDF 的工具,此時上傳的密碼會短暫存在於您無法掌控之處。純本機產生則能將此風險降至零。

最簡單的對策就是使用密碼管理工具:由保險庫保存這組冗長的隨機字串,於加密時複製貼入 PDF 工具,再由自動填入功能於解密時貼回。NIST (SP 800-63B) 與 OWASP 身分驗證速查表的現代指引皆持相同觀點——存放於管理工具中、獨一無二且長度足夠的字串,總是勝過好記的密碼。

若您正在權衡各種選擇,無需伺服器即可在 JavaScript 中檢查密碼強度對此有詳細說明。

若您正在權衡各種選擇,無需正則表達式陷阱即可在 Python 中檢查密碼強度對此有詳細說明。