PDF文書の内容はパスワードによって暗号化することで、権限をもたないユーザーによるアクセスを防止できます。ISO 32000-1の用語ではパスワードによる暗号化機能を標準セキュリティハンドラと呼びます。PDFは上位バージョンほど標準セキュリティハンドラの機能が強化されています。
標準セキュリティハンドラは暗号化のアルゴリズムとしてRC4とAESのどちらかを選択します。当初から使われてきたのはRC4ですが、RC4には、既に脆弱性の点で問題が指摘されています(https://ja.wikipedia.org/wiki/RC4)。ASE 128の脆弱性は現時点では問題とされていないようです(128ビットブロック暗号AESの安全性について
http://www.cryptrec.go.jp/topics/cryptrec_20110912_aes_cryptanalysis.html)。
PDFのバージョンによって暗号化に使うキーの長さに制限があります。暗号化のキー長はパスワードの文字数(パスワードの長さ)ではなく、標準セキュリティハンドラが内部的に計算して作成する値です。キーの作成方法はISO 32000-1で規定されています。
PDFバージョン | 使用できる暗号アルゴリズム | 暗号キー長 |
---|---|---|
PDF 1.3 | RC4 | 40 |
PDF 1.4 | RC4 | 40/128 |
PDF 1.5 | RC4 | 40/128 |
PDF 1.6 | RC4/AES | 40/128 |
PDF 1.7 | RC4/AES | 40/128 |
PDF 1.7アドビ拡張 | AES | 256 |
PDF 2.0 | AES | 256 |
ISO 32000-1の仕様上は、PDF 1.4以降では暗号化のキー長は40ビット超128ビット以下の範囲で8の倍数単位で設定できます。しかし、PDFアプリケーションの多くは128ビットに固定しています。
PDF Tool APIでは暗号アルゴリズムの種類と暗号キーの長さを指定できます。
PDF Tool APIでは暗号化するときのキー長は40ビット、128ビット(256ビット)のどちらかを指定できます。一方、暗号を解読するときは8の倍数で可変のキー長の指定を受け付けます。
PDF Tool API V5では、AES 40ビットは設定できません(AESの仕様では暗号のキー長は128ビット以上とされています。ISO 32000-1でAES 40ビットを規定しているのは誤りの可能性があります。いずれにせよ新しく作成するPDF文書に40ビット暗号は使わないことを推奨します。)。
AES 256 ビットはPDF 2.0(ISO 32000-2:2017)で正式な仕様になっています。PDF Tool APIではPDF 1.7(ISO 32000-1:2008)でAES 256を指定できますが、この場合はアドビ拡張の位置付けとなります。実用上は問題ありませんがISO 32000-1の規定外となります(ISO 32000-2:2017ではアドビ拡張の設定値は廃止になっています。)。
PDF Tool APIでは、入力PDF文書のバージョンと指定した暗号アルゴリズムと暗号キーの長さの組みによって、出力されるPDF文書のバージョンは、次表のようになります。
入力PDF文書のバージョン | RC4 40 | RC4 128 | AES 128 | AES 256 |
---|---|---|---|---|
PDF 1.3 | 1.3 | 1.5 | 1.6 | 1.7 |
PDF 1.4 | 1.4 | 1.5 | 1.6 | 1.7 |
PDF 1.5 | 1.5 | 1.5 | 1.6 | 1.7 |
PDF 1.6 | 1.6 | 1.6 | 1.6 | 1.7 |
PDF 1.7 | 1.7 | 1.7 | 1.7 | 1.7 |
PDF文書には、ユーザーパスワードとオーナーパスワードのどちらか一方または両方を設定できます。ユーザーパスワードはPDF文書を開くためのパスワードです(詳細は1.1.2 ユーザーパスワードによるセキュリティの設定を参照)。オーナーパスワードはPDF文書の利用権限を設定するパスワードです(詳細は1.2 オーナーパスワードを参照)。
ユーザーパスワードとオーナーパスワードは異なっている必要があります。