web-dev-qa-db-ja.com

PDFパスワードの暗号化で使用されているセキュリティ方式は何ですか。なぜそれがそれほど弱いのですか?

多くのPDFは、それらの機能の一部(印刷、書き込み、コピーなど)をロックアウトするために暗号化されたPDFとして配布されます。ただし、PDFクラックソフトウェアはオンラインで入手できます。通常、1秒未満でPDFパスワードをクラックします。

PDFシステムは、Adobeがドキュメントセキュリティに適切な暗号化技術を実装している場合、解読が非常に簡単であり、=にいくつかの主要な実装エラーがあるように見えます。 PDFほんのわずかな作業でドキュメントのロックを解除できる暗号化スキーム。

このようなロックされたPDFファイルで使用されているセキュリティスキームとは何ですか?なぜこれらのPDFパスワードリムーバーはそれを無効にするのにほとんど時間がかかりませんか?

64
March Ho

PDF保護には、パスワードベースの暗号化とユーザーインターフェイスの制限という2つのタイプがあります。 2番目のタイプの保護、つまり、コピーと貼り付け、印刷などの権限がないことを説明しています。 PDFファイルにユーザーインターフェイス制限がある場合でも、ビューアはコンテンツを復号化して画面に表示する必要があるため、「パスワードベースの暗号化」シナリオではありません。ドキュメントを解読するためのキーがありませんが、ファイルを解読できるアプリケーションが(マスターキーなどの静的な知識に基づいて)作成者が望んでいることだけを実行すると信頼できる "DRM"シナリオでは。

コンピュータの専門家が正当なアプリケーションがデータを復号化する方法をリバースエンジニアリングして(パスワードは不要)、復号化を自分で実行することを妨げるものはありません。文書を復号化した後、権限を、たとえば、印刷許可を含めるか、復号化アプリケーションが(すべてのビットマップ画像をコピーするなど)こと自体を実行できます。

アドビは、PDF仕様のライセンスによる使用制限を回避できる「不正なアプリケーション」の防止を試みます。アドビシステムズ社は、仕様に含まれない(主張された)知的財産を使用しないアプリケーションのライセンスを取り消します使用制限に従います。私の知る限り、一部のオープンソースツールには、使用制限に従うかどうかのビルドスイッチがあります。これは、「PDF保護解除」ソフトウェアを販売する人々にとって完璧な出発点になります。

上記の場合、「ユーザーパスワード」は空の文字列です。 PDF保護されたPDFファイルを開いた場合、リーダーは空のユーザーパスワードを試す必要があります。それがパスワード有効性チェックに失敗した場合のみ、ユーザーはパスワードを要求されます。 begueradjは彼の回答でキーの派生について説明しており、ご覧のとおり、「DRMアクセス許可」(/ Pエントリ)がキーの派生を入力しているため、保護されたPDFファイルで「アクセス許可を修正する」だけの場合、適合リーダーは間違ったキーを取得し、ドキュメントを開くことができません。一方、PDFファイルがパスワードで完全に保護されている場合(開いていない場合でも)、ユーザーパスワードは空ではなくなり、このタイプのPDF保護は適度に安全です。

48
Michael Karcher

AdobeのPDFロック機能は、obscurityによるセキュリティのルールに従います。サードパーティのソフトウェアがロックを解除できる場合、= PDFファイルの理由は、ファイルが暗号化されている場合、ファイルを復号化するために必要な情報が含まれているためです。

PDFファイルの暗号化キーは次のように生成されます:

   1. Pad the user password out to 32 bytes, using a hardcoded
       32-byte string:
           28 BF 4E 5E 4E 75 8A 41 64 00 4E 56 FF FA 01 08
           2E 2E 00 B6 D0 68 3E 80 2F 0C A9 FE 64 53 69 7A
       If the user password is null, just use the entire padding
       string.  (I.e., concatenate the user password and the padding
       string and take the first 32 bytes.)

    2. Append the hashed owner password (the /O entry above).

    3. Append the permissions (the /P entry), treated as a four-byte
       integer, LSB first.

    4. Append the file identifier (the /ID entry from the trailer
       dictionary).  This is an arbitrary string of bytes; Adobe
       recommends that it be generated by MD5 hashing various pieces
       of information about the document.

    5. MD5 hash this string; the first 5 bytes of output are the
       encryption key.  (This is a 40-bit key, presumably to meet US
       export regulations.)

このアルゴリズムは、ユーザーのパスワードと他のいくつかのデータを入力として受け取ります。これらのデータの中から、以下を見つけることができます。

        /Size 95         % number of objects in the file
        /Root 93 0 R     % the page tree is object ID (93,0)
        /Encrypt 94 0 R  % the encryption dict is object ID (94,0)
        /ID [<1cf5...>]  % an arbitrary file identifier    

        /Filter /Standard   % use the standard security handler
        /V 1                % algorithm 1
        /R 2                % revision 2
        /U (xxx...xxx)      % hashed user password (32 bytes)
        /O (xxx...xxx)      % hashed owner password (32 bytes)
        /P 65472            % flags specifying the allowed operations

ソフトウェアは、このアルゴリズムを復号化プロセスとして使用します。

    1. Take the 5-byte file key (from above).

    2. Append the 3 low-order bytes (LSB first) of the object number
       for the stream/string object being decrypted.

    3. Append the 2 low-order bytes (LSB first) of the generation
       number.

    4. MD5 hash that 10-byte string.

    5. Use the first 10 bytes of the output as an RC4 key to decrypt
       the stream or string.  (This apparently still meets the US
       export regulations because it's a 40-bit key with an additional
       40-bit "salt".)

もちろん、これは暗号化/復号化の一般的なスキームですが、Adobe PDF=のバージョンによって、多少の違いがあります。

さらに読む

41
user45139

PDFファイルをパスワード保護することの主な問題は、セキュリティをpasswordに基づいているということです) 、これは人間のユーザーがどこかで頭に浮かんだデータの一部であり、「推測できない」とみなすのに十分なほど傲慢でした。ほとんどのパスワードは推測可能であることがわかります。パスワードを作成することで、状況を多少改善できます。 -to-key変換は高価です(これは password hashing と呼ばれます)が、弱いパスワードは依然として弱いです。

2番目の問題は、PDF暗号化のフォーマットが1つないことですが、いくつかあります。PDF暗号化にはカスタムスキームの長い歴史があり、米国が暗号化対応ソフトウェアの強力で厳格な輸出規則を持っていたときに最初に定着しました;話を短くすると、ソフトウェアを管理上の問題が発生した場合、暗号はかなり弱くなければなりませんでした。そのため、暗号化フォーマット 説明 による@begueradjの回答:パスワードはハッシュされ、結果の最初の40ビットのみが「マスター」として保持されます。 40ビットのキーは、今日のコンピュータでの徹底的な検索に非常に適しているため、暗号化全体が冗談になっています。これはnow高度に暗号化されたPDFファイル、Adobe Readerの最新バージョンで処理できるファイルを作成することが可能(私が作成するコードを個人的に記述PDFスマートカードでのみ)、ただし、明示的に行う必要があります。

PDF内部構造です。APDFは「オブジェクト」のセットであり、一部は他のオブジェクトのストリーム、または生データです。全体のアイデアは、ドキュメントがさまざまなアクセスに対応する必要があるということです。たとえば、ドキュメント内の任意のページにジャンプする(おそらく全体をダウンロードする前に)か、目次を抽出します。暗号化はストリームごとに適用されるため、 、通常の結論は、暗号化を破ることなく多くのドキュメント構造を取得できることです(例:ページ数、各段落の長さ、数、サイズ、および画像の位置...)。これが深刻な問題かどうか暗号化するコンテキスト、特にwhyに依存します。ここでの実際の問題は、何を暗号化し、何を暗号化しないかについての決定が行われることです。定義上、コンテキストを認識できない一般的なソフトウェアによって。

実際には、PDFファイルはではありませんで、パスワード保護のポイントは、盗聴者がそれを実際に監視できないようにすることです。これは、ファイルの内容が機密であり、ファイルを慎重に処理する必要があることを明確かつ避けられない方法で文書化することであり、赤い「トップシークレット」スタンプに相当します。

19
Thomas Pornin