パスワード保護されたPDFとその限界
PDFが保護されていて、ツールに編集できないと言われた。なぜ? 打つ手はある?
パスワードは2種類ある
ISO 32000で定義されているPDFの暗号化は、ユーザーパスワードとオーナーパスワードを区別しています。ユーザーパスワード、いわゆる開くためのパスワードは、そもそも文書を復号するために必要です。これがなければコンテンツストリームは暗号文であり、どのソフトウェアも1ページも読めません。オーナーパスワードは性質が違います。これがなくても文書は開きますが、暗号化辞書には、仕様に従うビューアーが拒否すべき操作を示す権限フラグが入っています。印刷、テキストのコピー、ファイルの変更などです。
この区別が、混乱のほとんどを説明します。すぐ開くのに段落をコピーさせてくれない文書は「ロックが外れている」のではありません。空のユーザーパスワードと一連の制限で暗号化されているのです。
暗号化が実際に守っているもの
| パスワード | 開くのに必要か | 守っているもの | 強度 |
|---|---|---|---|
| ユーザーパスワード(開くためのパスワード) | 必要 | 内容そのもの。ストリームと文字列が暗号化される | 暗号方式と選んだパスワードの強さ次第 |
| オーナーパスワード(権限パスワード) | 不要 | 暗号的には何も守らない。ビューアーに尊重を求めるフラグを立てるだけ | あくまで勧告的 |
権限フラグは、行儀の良いソフトウェアへのお願いであって、強制の仕組みではありません。バイト列は文書を開いた時点で復号されるので、フラグを無視すると決めたプログラムはそうできます。これは意図の表明として扱ってください。文書をどう扱ってほしいかを示すには役立ちますが、セキュリティ上の制御としては役に立ちません。
編集ツールがファイルを受け付けない理由
PDFの構造を組み替えるには、つまり結合、分割、ページの回転、未使用オブジェクトの削除を行うには、ライブラリがオブジェクトグラフを解析しなければなりません。暗号化された文書では、そのグラフを構成する文字列とストリームは、正しい鍵が導出されるまで暗号文のままです。解析すべきものが存在しません。これはツール側の方針の問題ではなく、その時点では本当に文書が存在していないのです。
そのためFileSlimmerの構造的なPDFツールは、暗号化された文書に対しては無効になり、その旨を表示します。途中で失敗して壊れた出力を残すよりも、そうするべきだからです。不便ではありますが、これが正しい振る舞いです。
入力したパスワードはどうなるのか
パスワードを使う処理が用意されている場合、パスワードは復号鍵の導出に使われます。それはこのブラウザのタブの中、メモリ上で、処理が続いている間だけのことです。ローカルストレージにもService Workerのキャッシュにも書き込まれず、URLに載せられることもなく、送信されることもありません。このアプリケーションには、送信する先のサーバー自体が存在しません。タブを閉じれば、パスワードは消えます。
それでも、どこにパスワードを入力するかは意識的に選ぶ価値があります。ブラウザ拡張機能はページの内容を読み取れますし、それはこのサイトを含むすべてのウェブサイトに当てはまります。それが問題になるほど機微な文書なら、信頼できるオフラインのデスクトップソフトでロックを解除してください。
このツールが行わないこと
- 手元にないパスワードを復元したり、総当たりで破ったりしようとはしません。
- 権利のない文書について、権限フラグを回避するためにオーナーパスワードを取り除くことはしません。
- パスワードで開いた文書の復号済みコピーを、黙って作ることはしません。保護の解除は、それとは別の明示的な操作です。
- 権限フラグをセキュリティ上の境界であるかのように装うことはしません。
変更する権利のない文書から保護を取り除く行為は、契約や、お住まいの地域の法律に違反する場合もあります。それはあなた自身が、必要なら弁護士とともに考える問題であって、圧縮ツールが判断することではありません。
行き詰まったときの現実的な選択肢
- 文書を作成した相手に、保護のないコピーを頼んでください。これが圧倒的に多い解決策で、連絡1本で済みます。
- 開くためのパスワードを持っているなら、それを使ってください。文書が復号されれば、通常の操作はすべて再び使えるようになります。
- ページを見られれば十分なら、PDFとして印刷するか、ラスタライズしたコピーを書き出してください。テキストレイヤーとリンクとアクセシビリティ構造は失われ、見た目は保たれます。
- 暗号化に加えて署名もされているなら、いったん手を止めて考え直してください。どんな変更も署名を無効にしますし、署名された文書が存在するのは、たいてい誰かが後で検証する必要があるからにほかなりません。
もう1つの限界
古い版のPDF暗号化は、鍵導出が弱く鍵長も短いため、破られたものと見なされています。新しい版は、適切な導出関数とともにAESを使います。文書がどちらを使っているかは、見ただけでは分かりません。また、あるツールが古いファイルをすぐ開けたからといって、新しいファイルでも同じように振る舞う証拠にはなりません。自分が作る文書に保護をかけるなら、形式の来歴に頼るのではなく、現行のソフトウェアと長いパスワードを選んでください。
この作業に使えるツール
出典
- ISO 32000-2 — Document management, Portable Document Format
- Adobe — PDF 32000-1:2008, clause 7.6 on encryption and permissions
- NIST FIPS 197 — the Advanced Encryption Standard