コンテンツへスキップ
100% ローカル · アップロード 0 KBPDF を圧縮

PDF 暗号化の解説:RC4 vs AES-128 vs AES-256

PDF 暗号化とは、PDF のコンテンツストリームに適用される暗号保護であり、パスワードなしではファイルを読めないようにするものです。PDF 仕様は歴史上いくつかのアルゴリズムをサポートしてきましたが、そのすべてが今も安全とは限りません。本ページでは各アルゴリズムが何をするか、どの PDF バージョンで導入されたか、今日ファイルを保護する際にどれを選ぶべきかを説明します。

仕組み

PDF 暗号化の動作原理

PDF ライターがファイルを暗号化する際、ランダムなファイル暗号化鍵を生成し、その鍵でコンテンツストリーム(およびファイル内の特定の他の文字列)を暗号化し、ファイル暗号化鍵をユーザーのパスワードで保護された暗号化辞書に格納します。ファイルを開く際、ビューアーはパスワードを求め、そこから鍵を導出し、その鍵でファイル暗号化鍵を復号し、ファイル暗号化鍵でコンテンツを復号します。

重要な帰結:パスワードはファイルに格納されません。格納されるのはパスワードで暗号化された値です。パスワードを検証する際、ビューアーはその値の復号を試み、結果を既知の平文マーカーと照合します。これがパスワード復元が存在しない理由です — ファイルに含まれるのはパスワードではなく、パスワードで施錠されたものだけです。

アルゴリズム

RC4 — 非推奨・破綻

RC4 は 1987 年に設計されたストリーム暗号で、1990 年代に広く使われました(PDF、SSL、WEP)。PDF 1.2 は 40 ビット RC4 を導入し、後のバージョンは 128 ビット RC4 に拡張しました。RC4 は現在 PDF で非推奨であり、現代のセキュリティ用途では破綻していると考えられています。具体的には:

  • 40 ビット RC4 は現代のハードウェアで自明に総当たり可能です。
  • 128 ビット RC4 は総当たり不可能ですが、RC4 には平文の情報を漏洩する統計的偏りがあり、RC4 暗号化 PDF に対するいくつかの実践的攻撃が公表されています。
  • 現代のビューアーは一部の構成で RC4 暗号化ファイルについて警告するか、開くことを拒否します。

新たに RC4 暗号化 PDF を作成しないでください。遭遇した場合は、(パスワードで)復号し、AES-128 または AES-256 で再暗号化してください。

アルゴリズム

AES-128 — 堅牢・広く対応

AES-128 は PDF 1.5(2003 年、Acrobat 6/7)で導入されました。AES はブロック暗号であり、AES-128 は 128 ビット鍵を使います。PDF の AES モードは文字列ごとにランダムな 16 バイト初期化ベクトル付きで CBC を使います。AES-128 には実践的攻撃がなく、すべての現代 PDF ビューアーが広く対応しています。AES-256 が利用できない場合の妥当なデフォルトです。

アルゴリズム

AES-256 — 現在の標準

AES-256 は PDF 1.6 Extension Level 3(2008 年、Acrobat 9)で導入されました。256 ビット鍵を使い、元の PDF 1.6 Ext Level 3 設計では SHA-256 でパスワードから鍵を導出します。後の改訂(PDF 2.0 / Extension Level 8)は多数の反復を持つ PBKDF2 を使うより強い鍵導出を追加し、総当たりをはるかに困難にしました。これは「AES-256 R6」や「Acrobat X 互換」と呼ばれることがあります。

ツールが提供するなら AES-256 を優先してください。新旧の鍵導出の選択肢がある場合は、新しい(PBKDF2 ベース)ものを選んでください。

歴史

各アルゴリズムを導入した PDF バージョン

  • PDF 1.2(1996 年) — 40 ビット RC4。
  • PDF 1.3(1999 年) — 128 ビット RC4。
  • PDF 1.5(2003 年) — AES-128(V4、R4)。
  • PDF 1.6 Ext Level 3(2008 年) — AES-256(V5、R5)。
  • PDF 2.0 / Ext Level 8(2017 年) — PBKDF2 鍵導入付き AES-256(V5、R6)。

実践

どのアルゴリズムを選ぶべきか

新規ファイル:PBKDF2 鍵導出(R6)付き AES-256(署名者と受信者のビューアー両方が対応している場合)、そうでなければ AES-128。新規ファイルに RC4 は選ばないでください。パスワードはアルゴリズムより重要です:AES-256 上の 6 文字パスワードは、AES-128 上の 20 文字ランダムパスワードより弱いです。なぜなら攻撃面は暗号ではなくパスワードだからです。

古いファイルを開く場合:現代のビューアーはどれも三つすべてを扱えます。ファイルを管理できるなら、復号して AES-256 で再暗号化してください。

役立つ健全性確認:PDF を保護した後、暗号化に使ったのとは別のビューアーで開いてみてください。二つ目のビューアーが警告なしに開けるなら、暗号化は広く互換です。元のツールだけが開けるなら、非標準モードを使った可能性があります。

IXPDF

IXPDF の現在の暗号化機能

IXPDF の現在の PDF エンジン(pdf-lib)は暗号化 PDF の書き込み・読み取りに対応していません。PDF 保護およびPDF ロック解除ページはこの制限を率直に説明し、Research Required と表示しています。ブラウザ互換の暗号化ライブラリを評価中であり、これによりアップロードなしで完全にブラウザ内で AES-256 保護を提供できるようになります。それまでは、信頼できるローカルツールについてパスワード保護ガイドを参照してください。

関連記事

関連リソース