web-dev-qa-db-ja.com

暗号化PDF qpdfとユーザーパスワードのみ

Qpdf暗号化のユーザーパスワードのみを設定する方法を知っている人はいますか?

私は、Debian 10(バスター)とqpdfバージョン8.4.2-1を使って、不安定なバックポートからバスターに移植しました。

ユーザーパスワード(userpasswdなど)のみを設定し、所有者パスワードを空白のままにした場合(つまり、空の文字列 ""を使用)、一部のファイルfoo.pdfの場合、暗号化コマンドは単に

qpdf --encrypt userpasswd "" 256 -- foo.pdf foo.enc.pdf

ただし、okularevince、およびxpdfはすべて、パスワードを要求せずにfoo.enc.pdfを開きます。両方にパスワードを使用すると、パスワードの入力を求められます。つまり.

qpdf --encrypt userpasswd userpasswd 256 -- foo.pdf foo.enc.pdf

ただし、ユーザーパスワードの暗号化のみを実行します。

また、pdfinfoはファイルが暗号化されていることを報告します。

pdfinfo foo.pdf
[...]
Encrypted:      yes (print:yes copy:yes change:yes addNotes:yes algorithm:AES-256)

非常に単純なものにバグがあるとは考えられませんが、ここで何が間違っているのかわかりません。

GithubのQPDFの課題追跡に問題を追加しました: ユーザーパスワードのみで暗号化

2
Faheem Mitha

パンチライン:最も可能性が高いのは、実際には、ユーザーパスワードに空の文字列を使用し、所有者パスワードに空でない文字列を使用することです。これを行うと、ユーザーはパスワードを入力しなくてもファイルを開くことができますが、準拠している閲覧者は引き続きドキュメントのセキュリティを強化します。所有者パスワードで開くと、Adobe Acrobatなどのツールでセキュリティを変更できます。 qpdfはすべての場合にファイルのセキュリティを無視し、ユーザーと所有者のパスワードを同じように扱うことに注意してください。

何が起こっているのか説明しようと思います。

準拠PDFビューアは、ファイルがユーザーパスワードで開かれたときにファイルのセキュリティを尊重し、ファイルが所有者パスワードで開かれたときにファイルに対する完全な「管理者」権限を許可することになっています。 、所有者のパスワードではなく、ユーザーのパスワードを指定しても意味がありません。これは、パスワードを指定することは、パスワードを指定しないことよりも制限が厳しいことを意味します。

古いPDF暗号化形式では、ファイルはユーザーパスワードから派生した暗号化キーによって暗号化され、ユーザーパスワードは実際には所有者パスワードで暗号化されたファイルに保存されます。PDF視聴者はまず、提供されたパスワードがユーザーパスワードであるかどうかを確認しようとします。そうである場合、視聴者はキーを取得してファイルを復号化できます。そうでない場合は、所有者のパスワードかどうかを確認します。そうである場合、ユーザーパスワードを取得でき、そこからキーを取得できます。新しい暗号化形式では、ユーザーパスワードと所有者パスワードの両方を使用して実際のキーを個別に暗号化するため、ユーザーパスワードを取得することはできません。所有者のパスワード。

この動作のため、一部のアプリケーションは、ユーザーパスワードとして空の文字列を使用して暗号化されたパスワードを開こうとし、それが失敗した場合、パスワードの入力を求めます。 qpdfを含む一部のパッケージは、ユーザーパスワードが空でない場合でも所有者パスワードが空であるかどうかを確認しようとしますが、これはあまり意味がありません。それはあなたが見ている行動を説明するでしょう。古いバージョンのAdobe Acrobatは、ユーザーと所有者のパスワードが一致する場合、またはユーザーパスワードが設定されていて所有者パスワードが空の場合、提供された場合にのみ所有者パスワードの検証を試みるため、ファイルへの管理者アクセスをまったく許可しないと思いますパスワードはユーザーパスワードとして機能しません。

うまくいけば、これはあなたが見ている行動を説明しています。

1
Jay Berkenbilt