暗号化とパスワード保護:Protect と Unlock が実際にすること
PDF のパスワード保護は開きパスワード付きの暗号化だ。Protect がそれを付け、Unlock はパスワードを知っているときに外す。どちらも忘れたパスワードを復元しない。

人は「PDF にパスワードをかける」と「PDF を暗号化する」を別の製品のように口にする。PDF 形式ではこれは同じ仕組みの一族だ。ファイルは /Encrypt 辞書を持ち、ビューアはパスワード(または同等の資格情報)を受け取るまで、ページの内容を平文で渡さない。
「パスワード保護」が実際に意味するもの
保護された PDF は、あるアプリの中の UI ロックにすぎないものではない。標準に準拠したリーダーは、正しい開きパスワードが渡されるまで文書を開くのを拒む。これはファイル内容の暗号化であり、復号にパスワードを要求するように鍵が組まれている。
PDF のパスワード設定(POST /api/v1/security/add-password)は、自分で選んだパスワードを受け取り、開くときにそのパスワードを求める暗号化ファイルを返す。ポータルのフォームが求めるのはパスワード欄一つだ。サーバーは qpdf(--encrypt)で暗号化し、その値をユーザー(開き)パスワードとして使う。API に別のオーナーパスワードが渡されなければ、同じ文字列がオーナー役割にも使われる。既定の鍵長は 256 ビットだ。処理が終わるとツールはパスワードを保存しない。パスワードを失えば、できたファイルはロックされたままだ。
ユーザーパスワードとオーナーパスワード
PDF の暗号化は歴史的に二つの役割を区別してきた。
- ユーザー(開き)パスワード:文書を開いて閲覧するために必要。
- オーナー(権限)パスワード:印刷や変更の制限を設定しつつ、ユーザーパスワードでの閲覧を許すためによく使われる(ファイルの作り方によっては、空の開きパスワードを使うこともある)。
これらは形式の概念であり、マーケティング上のラベルではない。日常的な「この PDF をロックする」作業の多くは、開きパスワードを設定するだけだ。開くのを妨げずに印刷や編集を制限するのはオーナー役割を使う権限の話で、「ファイルが開かない」と混同しやすい。
PDF123 では、パスワード設定のフォームが一つのパスワードを求め、それを閲覧に必須の開きパスワードとして扱う。解除には、同じ既知のパスワードが復号に必要だ。高度な API 呼び出しでは add-password に ownerPassword、keyLength、canPrint、canModify を渡せる。ブラウザのフォームはそれらのつまみを公開しない。
解除がすること(と、しないこと)
パスワードの解除(POST /api/v1/security/remove-password)は、正しい現在のパスワードを渡したときに既存のパスワード暗号化を剥がす。ページ、フォント、レイアウトは同じままで、消えるのは暗号化の要件だけだ。
忘れたパスワードを復元・推測・クラックすることはしない。パスワードをすでに知っていなければ、解除がそれを作り出すことはない。修復も暗号化を外さない。情報取得 が Encrypted: true と報告するなら、先に解除してから編集する。
どれをいつ使うか
| 目的 | ツール |
|---|---|
| 送付・共有の前に、開くためのパスワードを要求する | パスワード設定 |
| パスワードを知っていて、自由に開ける複製が欲しい | パスワードの解除 |
| パスワードを忘れた | どちらのツールも助けにならない。パスワードは PDF の外に保管する |
| 構造上の理由で開かない(暗号化ではない) | 修復/情報取得 であり、解除ではない |
パスワード設定と解除はどちらも、カタログの経路ではサーバー側でアカウント不要に動く。暗号化はファイルを縮めない。圧縮 は別のストリーム再圧縮の仕事であり、解除済み(またはそもそも暗号化されていない)PDF を必要とする。OCR、表のエクスポート、その他の編集 op も同様に、まず平文へのアクセスが必要だ。既知のパスワードで解除してから、他のツールを走らせる。
パスワードは PDF の外に保管する(パスワードマネージャやシークレットストア)。開きパスワードを添付ファイルと同じメールに書けば、保護は意味を失う。同じ作業を HTTP から行う方法は 開発者向け にある。