1.1 パスワードセキュリティ

PDF文書の内容はパスワードによって暗号化することで、権限をもたないユーザーによるアクセスを防止できます。ISO 32000-1の用語ではパスワードによる暗号化機能を標準セキュリティハンドラと呼びます。PDFは上位バージョンほど標準セキュリティハンドラの機能が強化されています。

標準セキュリティハンドラは暗号化のアルゴリズムとしてRC4AESのどちらかを選択します。当初から使われてきたのは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で規定されています。

表1・1 ISO 32000規定によるPDFバージョンと暗号アルゴリズム・暗号キー長の関係
PDFバージョン使用できる暗号アルゴリズム暗号キー長
PDF 1.3RC440
PDF 1.4RC440/128
PDF 1.5RC440/128
PDF 1.6RC4/AES40/128
PDF 1.7RC4/AES40/128
PDF 1.7アドビ拡張AES256
PDF 2.0AES256

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文書のバージョンは、次表のようになります。

表1・2 PDF Tool APIで出力されるPDF文書のバージョン
入力PDF文書のバージョンRC4 40RC4 128AES 128AES 256
PDF 1.31.31.51.61.7
PDF 1.41.41.51.61.7
PDF 1.51.51.51.61.7
PDF 1.61.61.61.61.7
PDF 1.71.71.71.71.7

PDF文書には、ユーザーパスワードオーナーパスワードのどちらか一方または両方を設定できます。ユーザーパスワードはPDF文書を開くためのパスワードです(詳細は1.1.2 ユーザーパスワードによるセキュリティの設定を参照)。オーナーパスワードはPDF文書の利用権限を設定するパスワードです(詳細は1.2 オーナーパスワードを参照)。

ユーザーパスワードとオーナーパスワードは異なっている必要があります。