PDF セキュリティの解説:パスワード・権限・暗号化
PDF セキュリティはしばしば「パスワード保護」として語られますが、実態はもっと微妙です。保護された PDF は開くためのパスワードを要求し、読者ができることを制限し、内容を暗号化できます。本参照は各層がどう動くか、暗号化オプションが実際に何を意味するか、PDF セキュリティがどこで役に立たなくなるかを説明します。
基礎
PDF セキュリティとは?
PDF セキュリティは、PDF 仕様で定義された文書著者がファイルに適用できるオプションの制御群です。三つの独立した仕組みがあり、よく併用されます:
- 開くためのパスワード — 文書は暗号化され、正しいパスワードなしでは閲覧できません。
- 権限 — 文書を開いた後でも、印刷・コピー・変更その他の行為を制限するフラグ群。
- 暗号化 — 文書の内容を鍵なしで読めなくするために使われるアルゴリズムと鍵長。
これらは PDF 標準の Standard Security Handler で定義されます。これらが一つも適用されていない PDF は通常の非保護文書であり、開ける人なら誰でも完全に読み取り・編集できます。
二つのパスワード
ユーザーパスワード vs オーナーパスワード
保護された PDF は二つの異なるパスワードを持てます。その違いを理解することが重要です:
- ユーザーパスワード(「オープンパスワード」とも)。文書を開いて閲覧するために必要です。これがないとファイルはまったく復号できません。
- オーナーパスワード(「権限パスワード」とも)。権限フラグを変更するために必要です — 例えば印刷制限の削除やコピーの許可。ユーザーパスワードだけを持つ読者はファイルを開けますが、オーナーが設定した権限に縛られます。
文書はユーザーパスワード、オーナーパスワード、またはその両方を持てます。よくあるパターンはオーナーパスワードだけを設定することです:文書は誰でも自由に開けますが、読者がオーナーパスワードを供しない限り印刷やコピーなどの行為は制限されます。ユーザーパスワードだけの設定は、ファイルを開ける人なら誰でも完全な権限を持つことを意味します — パスワードはアクセスを制限し、挙動は制限しません。
制限できるもの
PDF 権限
権限はセキュリティハンドラー内の 32 ビット整数として格納されます。各ビットが特定の行為に対応します。最もよく使われる権限フラグは:
- 印刷 — 文書を印刷できるかどうか。
- 高解像度印刷 — 基本印刷とは別。一部の文書は低品質印刷は許可しても高品質出力は許可しません。
- テキストとグラフィックのコピー・抽出 — 内容をクリップボードにコピーしたりアクセシビリティツールで抽出できるかどうか。
- 内容の変更 — ページ内容を編集できるかどうか。
- 注釈・フォーム入力・署名 — コメント、フォームフィールド、電子署名を追加できるかどうか。
- 組み立て — ページを挿入・削除・回転できるかどうか。
- アクセシビリティ抽出 — スクリーンリーダーや支援技術専用のテキスト抽出を許可する別のフラグ。
これらのフラグはファイル自体ではなくPDF ビューアーによって強制されます。準拠したリーダーはこれらを尊重しますが、非準拠のツールは完全に無視する場合があります。これが下記で説明する重大な限界です。
アルゴリズム
暗号化:RC4 vs AES
暗号化アルゴリズムと鍵長は、総当たりで文書を破る難しさを決定します。PDF 標準は歴史上いくつかをサポートしてきました:
- RC4(40 ビットと 128 ビット) — 元の PDF 暗号化アルゴリズム。40 ビット RC4 は現代の基準では弱く、非推奨とされます。128 ビット RC4 はより強いですが、RC4 自体に既知の暗号論的弱点があり、もはや推奨されません。
- AES-128 — PDF 1.6 で導入。128 ビット鍵を持つ現代のブロック暗号。RC4 より大幅に強く、現在の PDF リーダーが広く対応しています。
- AES-256 — PDF 1.7 Extension Level 3 で導入され、PDF 2.0(ISO 32000-2)に引き継がれました。標準内で最も強い選択肢。注意:一部の初期 AES-256 実装にはパスワードハッシュが文書とは独立に攻撃できる欠陥があり、保護が弱まっていました — 現代のライターは修正済み改訂を使います。
新規文書には AES-256 が利用可能な場合の推奨選択です。RC4 は避けるべきです。暗号化は文書の文字列とストリーム(実際の内容)に適用され、ファイルの構造骨格には適用されません — オブジェクト番号と相互参照テーブルは鍵なしでも見えるままなので、リーダーはファイル内を移動できます。
内部動作
PDF セキュリティの内部仕組み
ライターが PDF を暗号化する際、セキュリティハンドラー改訂で定義されたハッシュ方式を使い、ユーザーパスワードから暗号化鍵を導出します。その鍵で文書の文字列・ストリームオブジェクトを暗号化します。権限フラグと検証ハッシュは文書の暗号化辞書に格納されますが、この辞書自体は暗号化されません(これによりリーダーはファイルが保護されていることを検出し、パスワードを促せます)。
リーダーがファイルを開く際、供されたパスワードで鍵を再導出し、格納されたハッシュと照合し、有効なら各オブジェクトをオンデマンドで復号します。権限はビューアーが各制限行為を許可する前にチェックされます。構造は暗号化されないため、保護された PDF はファイルサイズ・ページ数・暗号化の有無を明らかにしますが、ページ内容は明らかにしません。
率直な部分
PDF セキュリティの限界
PDF セキュリティは有用ですが、それが何でないかを理解することが重要です:
- DRM ではありません。 PDF セキュリティは文書を特定のデバイス・ユーザーアカウント・ライセンスサーバーに結び付けません。ユーザーパスワードを持つ誰でもファイルをどこでも開き、渡せます。
- 権限は強制ではなく助言です。 ビューアーが権限フラグを強制するため、それらを無視することを選ぶツールは関係なくコピー・印刷・抽出ができます。いくつかのオープンソース PDF ライブラリや一部のリーダーがまさにそうしています。権限は軽い利用者を抑止しますが、決意した人を止めません。
- パスワードは総当たり可能です。 AES 暗号化 PDF 上の弱いユーザーパスワードは、現代のハードウェアで毎秒数百万の推測を行うオフライン辞書攻撃や総当たり攻撃で復元できます。暗号強度は弱いパスワードを補償しません。
- 古い暗号化は破可能です。 40 ビット RC4 は数秒で破れます。128 ビット RC4 には構造的弱点があります。これらのレガシー設定で暗号化された文書は今日ほとんど実際の保護を提供しません。
実践的な要点:真の機密性が必要な場合は、強くて長いユーザーパスワードと AES-256 暗号化を使ってください。権限フラグはセキュリティ境界ではなく利便性として扱ってください。
IXPDF の立ち位置
IXPDF と PDF セキュリティ
IXPDF はローカルファースト・プライバシーファーストなアーキテクチャの上に構築されています:あなたのファイルはデバイスから離れません。その公約は将来の保護・ロック解除機能にも等しく適用されます — 暗号化や復号はサーバーではなくブラウザ内で行われます。
ただし、IXPDF は現在パスワード保護やパスワード削除ツールを提供していません。どちらも Research Required と表示されています。理由は技術的です:現在の PDF エンジン pdf-lib は暗号化 PDF の読み書きに対応していません。信頼できる PDF 暗号化の追加には、バンドルサイズ・パフォーマンス・ブラウザ互換性についてまだ評価していない別のエンジンが必要であり、品質基準を満たさない機能は出荷しません。適切なエンジンが統合されれば、これらのツールはすべての処理をローカルに保ったまま利用可能になります。
それまでも、本ページの概念は出会うあらゆる PDF に適用されます。アップロードせずにファイルのメタデータが何を明らかにするか確認するには、メタデータ参照とローカルのメタデータ編集ツールを参照してください。
関連記事
関連リソース
関連記事