天地有情

[LaTeX] PDF-crypt --- PDFの暗号化 ~2つの暗号化コマンドの紹介 ~

§1 はじめに

更新版:2017/05/03 (pdfcrypt を削除など,その他見直し)

PDFのセキュリティ向上の一環として暗号化を施すのが行われています.
W32TeX では「bin」ディレクトリ下に2つの暗号化コマンドが用意されています.

   ● dvipdfmx.exe による暗号化

   ● qpdf.exe による暗号化

それぞれを個別に説明します.


§2 dvipdfmx.exe による暗号化

dvipdfmx を用いた暗号化には次の2通りが用意されています.
   (a) コマンドレベルによる暗号化
   (b) ソースレベルによる暗号化

■ (a) コマンドレベルによる暗号化


コマンドラインでの指定方法は次のようになります.

c:\Users\Desktop> dvipdfmx [encrypt-options] dvi-file

[encrypt-options] は dvipdfmx --help をコマンドラインから入力すると次が確認できます.(抜粋)

------------------------------------------------------------------------
-K number Encryption key length [40]
-P number Set permission flags for PDF encryption [0x003C]
-S Enable PDF encryption
------------------------------------------------------------------------

-P number オプションの詳細は次の通りです.

p-option.png

例えば,標準の場合のコマンドを以下に示します.

c:\Users\Desktop> dvipdfmx -S -P 0x003c -K 128 foo.dvi

実行するとオーナーパスワードとユーザーパスワードの入力を求められます.

オーナーパスワードは暗号化設定の変更権限,ユーザーパスワードは文書を開くのに必要なパスワードです.
どちらか片方だけ暗号化したい場合は、何も入力しないで[Enter]キーを押すとパスワードは付加されません.

【サンプル】

C:\Users\Desktop> dvipdfmx -S -P 0x003c -K 128 foo.dvi
foo.dvi -> foo.pdf
Owner password: *******
Re-enter owner password: *******
User password: ******
Re-enter user password: ******
[1]
586216 bytes written

[ファイル]--[文書のプロパティ]--[セキュリティ]を開いてみます.

secu01.png

(注意)
Owner password と User password の両方を設定,あるいは,いずれか片方のみを設定した場合に
パスワードの入力を催促される場合と,されない場合があり,さらに[文書のプロパティ]--[セキュリティ]
の内容の 許可/不許可 も変わる場合があります.ご自身で確認してみてください.


-P, -K オプションを省略した場合には C:\w32tex\share\texmf-dist\dvipdfmx\config\dvipdfmx.cfg
に記述された値即ち,

-K 128 および -P 0x003c (K=128[bit]は鍵長,p=0x003c はすべて許可)

がデフォルト値として適用されます.

-P オプションはbit形式になっているので16進数で足し算して指定できます.

例: 0x0004+0x0008=0x000C -> 印刷(低解像度)と文書変更を許可します.

■ (b) ソースレベルによる暗号化


最新の dvipdfmx (および updvipdfmx) では,PDF パスワードなどを TeX ソースレベルで
指定しておけるように、新しい specialが導入されました.(p)LaTeX の場合,プリアンブル部に

\AtBeginDocument{\special{pdf:encrypt ownerpw (abc) userpw (xyz) length 128 perm 252}}

のように指定します.ここで,abc はオーナーパスワード,xyz はユーザパスワード です.

length は 40 以上 128 以下です.perm は permission flag の意味であり,その詳細は
C:\w32tex\share\texmf-dist\dvipdfmx\config\dvipdfmx.cfg に記述してあります.

【サンプル】

ソースファイル(foo.tex)を示します.
-------------------------------------------------------------------------
\documentclass{jsarticle}
\AtBeginDvi{\special{pdf:encrypt ownerpw (abc) length 128 perm 2580}}
\begin{document}
吾輩は猫である.名前はまだ無い.
どこで生れたかとんと見当がつかぬ.
何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している.
\end{document}
-------------------------------------------------------------------------

【操作】
C:\Users\Desktop> platex foo.tex

C:\Users\Desktop> dvipdfmx foo.dvi

foo.pdf を開く際にパスワードの入力は催促されませんでした.
[ファイル]--[文書のプロパティ]--[セキュリティ]を開いた結果を示します.

secu02.png

(注意)
ownerpw と userpw の両方を設定,あるいは,いずれか片方のみを設定した場合に
パスワードの入力を催促される場合と,されない場合があり,さらに[文書のプロパティ]--[セキュリティ]
の内容の 許可/不許可 も変わります.ご自身で確認してみてください.



§3 qpdf.exe による暗号化

(a) 基本的な使い方の例としてコマンドラインから次のように打ち込みます.
  ※ 複数行になっていますが,改行せずに打ち込んでください.

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
c:\Users\Desktop> qpdf --encrypt user-password owner-password 128
--print=none --modify=none --extract=n --accessibility=n
--use-aes=y -- original.pdf encrypted.pdf
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

元のPDF original.pdf に暗号を付加する encrypted.pdf を指定します.

--encryptオプションは,--encrypt user-password owner-password key-length --

となります.それ以外の設定は鍵長によって使えるものが決まります.上記は128bitで暗号化しています.
なお,他の制限を加えるオプションは,key-lengthと--との間に記述します.

上記の例でのオプションの意味は次の通りです.

--print=none 印刷不可
--modify=none 編集不可
--extract=n 図やテキストの抽出不可
--accessibiliry=n 視覚障害者へのアクセシビリティを許可しない
--use-aes=y PDF自体をAESで暗号化する

40bitだと出来ないこともあるので要注意です.

(b) マニュアルの閲覧など

次のWEBサイトに詳細が記述されています.参考にしてください.

http://qpdf.sourceforge.net/files/qpdf-manual.html#ref.encryption-options

(c) コンソール操作によるヘルプメッセージ出力
   次の操作でヘルプメッセージが得られます.

C:\Users\Desktop> qpdf --help


【サンプル】

■ パスワードを設定する
元となるPDF を origin.pdf とし,パスワードを設定しようとする PDF を crypt.pdf とします.
ここで,
user-password を abc
owner-password を xyz
とします.

【操作】
c:\Users\Desktop> qpdf --encrypt abc xyz 128
--print=full --modify=none --extract=n --accessibility=n
--use-aes=y -- origin.pdf crypt.pdf

(注意)
owner-password と user-password の両方を設定し,PDF を owner-password で開いた場合と,
user-password で開いた場合には[文書のプロパティ]--[セキュリティ]
の内容の 許可/不許可 も変わります.ご自身で確認してみてください.

■ Adobe Reader XI(DC) で開き,パスワード入力の問い合わせがあるので abc または xyz を入力し [OK] します.

■ 続いて,[ファイル]ー[プロパティ]ー[セキュリティ]を開き文書のプロパティを確認します.
さらに,[詳細表示]を開いて詳細の確認ができます.

■ パスワードプロテクトの解除方法( --decrypt オプション)
重要な情報が記載されたPDFファイルはパスワードでプロテクトされていることがあります.
こういったデータを自分以外の第3者に渡す場合,その第3者にも内容を閲覧できるようにパスワードを教える
必要がでてきます.パスワードが共通で使われている場合,つまり第3者に自分の持っているほかのPDFファイルの
パスワードも教えることになってしまい,あまり好ましい状況とはいえません.
こうしたケースではパスワードプロテクトを解除したPDFを作成して渡すという方法が必要です.

コマンドラインから次の形式で打ち込み,パスワードプロテクトのかかっていないPDFを作成します.

c:\> qpdf --password=パスワード --decrypt input.pdf output.pdf

それでは,先ほどの crypted.pdf を使いパスワードプロテクトを解除してみます.

c:\> qpdf --password=abc --decrypt crypt.pdf new.pdf

パスワードプロテクト解除された new.pdf を Adobe Reader XI(DC) で開くことができます.

スポンサーサイト
  1. 2013/10/11(金) 10:23:51|
  2. LaTeX Tools
  3. | トラックバック:0
  4. | コメント:0
<<画像の圧縮・最適化ユーティリティ | ホーム | [LaTeX] xpdf --- XPDFパッケージの使い方>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://konoyonohana.blog.fc2.com/tb.php/49-53c8b860
この記事にトラックバックする(FC2ブログユーザー)