PDF、組版と文書変換のアンテナハウス株式会社
PDF、組版と文書変換のアンテナハウス株式会社
トップページ > PDF資料室 > PDFの標準セキュリティ機能
更新日: 2019/6/7
PDFの仕様にはさまざまなセキュリティ機能が規定されています。PDF関連の製品を作る立場からは、PDFのセキュリティ機能に関する仕様についての正確な知識が必要です。一方、そのPDFを使用する立場からは、PDFでどのようなセキュリティ機能を使うことができるのかということと、実際にはPDF仕様で規定されているすべてのセキュリティ機能が、すべてのPDF作成ソフト、PDFリーダーやPDF編集ソフト(PDFを受け取って利用するソフトを総称して消費ソフトといいます)に実装されている訳ではありませんので、その製品が“仕様に定められている機能をどこまで実装しているか”について知っておく必要があります。
PDFのセキュリティに関する仕様には文書内容の暗号化に関する項目と、PDF電子署名(デジタル署名)に関する項目があります。本記事では主に暗号化について説明します。
なお、現時点で、PDFの仕様にはISO 32000-1:2008(PDF 1.7)とISO 32000-2:2017(PDF 2.0)の二つのレベルがあります。そして暗号化の仕様はISO 32000-2で大幅に変更になっています。本記事では主にISO 32000-1のレベルを中心に説明しています。
ページ末尾の参考資料では、PDFセキュリティの使用方法や利用例などをわかりやすく紹介しているページへのリンクがありますので、合わせてご覧ください。
最初にPDFでは、セキュリティを(1)どうやって実現しているかということと、(2)何ができるのか、ということについて整理します。
PDFには、テキスト文字列、イメージ、線画などさまざまなコンテンツ情報が入っています。そのコンテンツを整理して、ランダムにアクセスするための構造情報があります。
PDFにセキュリティをかける場合は、一定の暗号化アルゴリズムを使って暗号化することになりますが、PDFのファイル全体に暗号をかける訳ではありません。通常はコンテンツになるデータのみに暗号をかけ、構造情報は暗号化しません。こうすることで暗号が掛かっているPDFファイルを認識して、暗号を解くことができるようになっています。
PDFファイルはアプリケーションとは独立して流通していますし、PDFを作成する側がいろいろな暗号化方式を使うことができます。PDFファイル全体に暗号をかけてしまうと、PDFビューアが表示したくても、どんな暗号化方式が使われているかということさえも認識できなくなってしまいますので、これは当然なことです。
PDF標準ではさまざまなアプリケーションで共通に使えるセキュリティハンドラがいくつか定義されています。
第一は標準セキュリティハンドラ(7.6.3)— パスワード方式(共通鍵暗号方式)と言い、PDFを作成する人と、PDFを利用する人の間で取り決めた共通のパスワードを使って、PDFの内容へのアクセスを制御する方式です。
第二は公開鍵セキュリティハンドラ(7.6.4)— 公開鍵暗号方式を使用する方式です。
PDFを作成・利用する人が独自のセキュリティハンドラを作成して使うこともできます。
PDFの作成時にPDFの内容をパスワード方式で暗号化します。PDFの利用者が適切なパスワードを入力すれば内容を自由に利用できます。
PDFには次の2種類のパスワードを設定できます。一方だけを設定できますし、両方のパスワードの設定もできます。
PDF作成時にユーザーパスワードが設定されていると、PDFリーダーなどでPDFを開くときにパスワードの入力を求められます。正しいパスワードを入れないと、PDFを表示できません。 このパスワードの使い方は、一般的に、セキュリティの掛かったサービスにログインするときの方式に似ていますので、経験されている方も多く、分かりやすいと思います。
PDFの作成者はオーナーパスワードを設定するときにパスワードに加えて、PDFを受け取ったユーザーがPDFに対して操作できる項目も指定します。
PDFの利用者が受け取ったPDFに、オーナーパスワードのみが設定されている場合は、パスワードを入力しなくてもPDFのリーダーなどでPDFを開くことができます。そして制限事項で許可されている範囲内でPDFを利用できます。しかし、制限事項で許可されていない目的に利用するためには、正しいオーナーパスワードを入力しなければなりません。
オーナーパスワードによるPDFの利用許可制御は、PDF独自の機能です。
※PDFをオーナーパスワードで保護しても、FireFox(バージョン 67.0で確認)のPDFリーダーでは保護が無効になります。
オーナーパスワードにより設定できる項目は、PDFのバージョンによって異なります。これは標準セキュリティハンドラにリビジョン番号 2、3、4の三つがあり、PDFのバージョンによって使えるリビジョンが異なるためです。
表1.PDFのバージョンと使える標準セキュリティハンドラのリビジョン
PDFバージョン | 使用できるリビジョン |
---|---|
PDF 1.3 | 2 |
PDF 1.4 | 3 |
PDF 1.5以降 | 4 |
PDF利用許可できる項目は、PDFに保存される暗号辞書中のフラグのある桁をONにすることで設定します。リビジョン2で設定できる項目を表2、リビジョン3と4で設定できる項目を表3に整理します。
表2.リビジョン2の標準セキュリティハンドラで許可できること
ビット位置 | ONの時の許可内容 |
---|---|
3 | 印刷を許可する |
4 | 内容の変更を許可する |
5 | テキストや画像の抽出を許可する |
6 | テキスト注釈の追加・変更と対話式フォームフィールドを埋めることを許可する。ビット4がONならば、新しい対話式フォームフィールドを作成したり、変更することも許可する |
表3.リビジョン3、4の標準セキュリティハンドラで制限できること
ビット位置 | ONの時の許可内容 |
---|---|
3 | 印刷許可する—さらにビット12がONなら高精度印刷を許可、OFFなら低解像度印刷を許可(*) |
4 | 内容の修正を許可する |
5 | アクセシビリティ以外の目的でテキストや画像の抽出を許可する(*) |
6 | テキスト注釈の追加・変更と対話式フォームフィールドを埋めることを許可する。ビット4がONならば、新しい対話式フォームフィールドを作成したり、変更することも許可する |
9 | ビット6が不許可でも、署名を含め対話式フォームフィールドを埋めることを許可する(*) |
10 | アクセシビリティの目的(スクリーン・リーダなど)でテキストや画像の抽出を許可する(*) |
11 | ビット4(内容の修正)が不許可の時でも、文書の合成を許可する—ページ挿入・ページ回転・ページの削除・しおりの作成・サムネイルの作成(*) |
12 | 高精度印刷を許可する |
*は、リビジョン3、4で、リビジョン2に追加されたこと
次に、標準セキュリティハンドラのリビジョン4について整理してみます。
リビジョン4の標準セキュリティハンドラは、PDF 1.5(Acrobat6)以降で使えます。この標準セキュリティハンドラで追加になっている機能は次の点です。
リビジョン4で追加されたのは、PDFに関するパスワードによるアクセス管理ではなく、むしろPDFコンテンツへの暗号のかけ方をより細かく設定可能にする機能、と言えます。
PDFの暗号化のアルゴリズムは初期はRC4暗号アルゴリズムを使っていました。PDF 1.6から新しい暗号アルゴリズムAES(Advanced Encryption Standard)を選択できるようになりました。PDFの暗号化の際に、使用するアルゴリズムをRC4にするかAESにするか指定できます。また、暗号化しないでスルーする暗号フィルターを定義することもできます。
AES暗号は、米国が2001年に標準として定めた新しい暗号アルゴリズムです。
AES暗号 などによりますと、米国でそれまで使っていた標準暗号方式が、技術進歩により脆弱になったため、世界中から公募した15種類の暗号方式から選択されたもので、最終的にベルギーの研究者が考案したものが採用された、とあります。
RC4は私企業のプライペートな暗号アルゴリズムであったのに対して、AESは政府が標準として定めた暗号アルゴリズムであり、仕様書が一般に公開されているのが大きな特徴です。
PDFのバージョン毎に暗号化の機能が強化されてきた結果、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 2.0(参考) | AES | 256 |
Acrobatをはじめ多くのPDFソフトはPDF 1.4から暗号キー長128ビットがデフォルトです。しかし、ISO 32000-1の仕様上は「40ビット超128ビット以下で8の倍数」になっています。
PDF 1.7でAES 256ビットの暗号を指定できますが、このとき出力されるPDFはアドビ拡張(ISO 32000-1:2008の規定外)となります。
Adobe Acrobat(Adobe PDF プリンタードライバー)でセキュリティ設定をするためのダイアログを見ます。(このダイアログは、PDF 1.4レベルで、標準セキュリティハンドラのリビジョン3を選んでいる状態に相当します)。
Adobe PDF セキュリティ設定
オーナーパスワードを設定した状態では、次の二つのダイアログに示すように、PDFに次のセキュリティを設定できるようになります。
Adobe PDF セキュリティ設定:印刷を許可 項目
Adobe PDF セキュリティ設定:変更を許可 項目
セキュリティ設定のダイアログを見ますと、Adobe Acrobatのプリンタードライバーでは、ISO 32000-1に記載されているすべてのセキュリティ設定パターンは指定できないことが分かります。例えば、ISO 32000-1の仕様では、「ページの挿入、削除、回転」と「フォームフィールドの入力と署名」は独立に設定 —両方NO、どちらか一方のみYes、両方Yesの4通りの設定 —できるはずなのに、このダイアログのメニューでは、両方Yesの設定は不可能です。
PDFに設定されているセキュリティの状態を確認するには、Adobe ReaderでPDFを開いて、文書のプロパティ「セキュリティ」タブを選択します。そこでセキュリティ設定の詳細を確認することができます。
Adobe Acrobatで文書のセキュリティを確認
弊社製品であるPDF作成仮想プリンタードライバー『Antenna House PDF Driver』では、AcrobatのPDFプリンタードライバーとほぼ同様のメニューで、パスワード方式のセキュリティ設定が可能です。
PDFのバージョンを1.6以上に指定し、PDFのオーナーパスワードやユーザーパスワードを設定した場合に、AES暗号アルゴリズムでPDFのコンテンツを暗号化します。
Antenna House PDF Driver のPDFセキュリティ設定ダイアログ
ISO 32000-1の7.6 暗号化の項には、パスワード・ベースの標準セキュリティハンドラの他に、7.6.4 公開鍵セキュリティハンドラという、もうひとつのセキュリティハンドラが規定されています。公開鍵セキュリティハンドラは、公開鍵暗号化技術を使ってPDFにセキュリティをかける方式です。
公開鍵暗号化技術についてはいろいろなところで解説されていますが、ざっとまとめてみますと次のようになります。
例えば、AとBの2者間で、公開鍵暗号化方式を使って暗号化通信を行おうというときの順序は、
この通信方式は、電子署名(デジタル署名)とは鍵の使い方が逆になっていることに注意してください。ちなみに電子署名は、秘密鍵で暗号化したものを相手に渡し、相手は公開鍵で暗号を解除するものです。
さて、PDFの公開鍵セキュリティハンドラは次のようなことを行うとされています。
(ISO 32000-1, 7.6.4 Public-Key Security Handlers, pp.64 - 67)
こうして作成した暗号化済PDFを相手に配信します。
PDFを受け取った相手は各人の秘密鍵を用いて、受信者データ表の中から暗号キーの元と自分用の利用権限データを取り出します。この暗号キーの元を使ってPDFの暗号を解いてPDFを閲覧します。この時、自分用の利用権限データが有効になりますので、PDFの配信元が設定した利用権限の範囲内でしかPDFを利用できないことになります。
パスワード方式の標準セキュリティハンドラでは、PDFの受け手によって利用権限を変更することはできないのですが、公開鍵セキュリティハンドラを使うと相手によって利用権限を変えることができます。
なお、PDFの利用権限の設定は、「PDFの利用許可制御」の項と同じです。
アンテナハウスのPDF関連デスクトップソフトでは、PDFを作成するとき以外にも、編集したPDFを保存時(出力時)や、すでにある複数のPDFに対して一括で、PDFセキュリティを設定することができます。
難しいPDFのセキュリティの知識がなくとも、簡単な操作でPDF標準のセキュリティを設定できますので、文書の公開や重要な文書のメールなどでのやり取り、編集されたくない見積書などの帳票の作成など、幅広く気軽に活用いただけます。
『Antenna House PDF Tool API』は、PDFセキュリティの設定や設定されている情報の取得などを、コマンドラインやプログラムから制御できる、開発者向けのライブラリです。
PDFセキュリティの設定以外にも、PDFの情報取得や、様々な加工・編集ができます。WindowsとLinux環境でご利用いただけます。
わかりやすいインターフェイスで、なおかつ詳細なPDFセキュリティの設定ができるため、多くのソフト/システム開発会社様にご導入いただいております。もちろん、弊社のデスクトップ製品、システム製品、サービスなど様々な製品にも組み込んで利用されています。
『Antenna House PDF Driver』ならPDFの作成時にPDFセキュリティの設定を行えます。GDI型のPDF作成仮想プリンタードライバーと、これを制御する「付属API」から成るMicrosoft Windows対応の製品です。
お客様で開発されるプログラムにPDFの作成機能と、PDFセキュリティを含む様々な設定ができるAPIを提供します。