暗号化されたPDFを読むことはできるのか

Chaos Communication Congressでの講演で、リサーチャーのファビアン・アイシング氏がPDFの暗号化強度の限界を示しました。

PDFは、仕様書によるとCipher Block Chaining(CBC)モードでAESアルゴリズムを使用した暗号化に対応しています。したがって、少なくとも理論上は、暗号化されたPDFファイルの中身を見ることができるのはパスワードを知っている人だけであるはずです。ドイツの複数大学のリサーチャーから成る調査チームは、PDFのセキュリティに関する研究の一環として、PDF形式での暗号化実装の信頼性をテストしました。ミュンスター応用科学大学のファビアン・アイシング(Fabian Ising)氏によって発表された研究結果は残念なものでした。

暗号化されたPDFファイルを企業が使用するのはどういう状況かと言えば、安全対策がされていない経路や信用できない経路を通じてデータを転送するときです。一例を挙げると、不特定多数の人がアクセスできるクラウドストレージにファイルをアップロードする場合です。調査チームは、パスワードが入力されたとき、ファイルの受信者に分かるような変化を生じさせずにPDFファイル内の情報を第三者へ送信するようにソースファイルを改竄することができるかを探りました。

調査チームが開発したのは、暗号化されたPDFファイルへのアクセスを許す、2つの攻撃概念です。第1の攻撃(直接抜き取り)は、PDFの仕様を理解していれば十分で、特別な暗号の技術は必要ありません。調査チームはこの攻撃を「暗号に手を触れない暗号ハッキング」と呼んでいます。第2の攻撃(調査チームの言う「展性攻撃」)はもう少し複雑で、実行するにはCBCモードの理解が必要です。

暗号化されたPDFの用途と、使用する理由

実務上、暗号化されたPDFはさまざまな用途に利用されています。

  • 一部の銀行では、顧客と文書をやりとりするとき、機密保持のために暗号化されたPDFを使用します。
  • 複合機(多機能プリンター)の中には、スキャンした文書をPDF形式でメール送信できるものがあり、送信の際に「暗号化」のオプションを選択すれば、パスワードのかかったPDFを作成することができます。
  • 医療用診断機器は、検査結果を患者や医師へ送る際に、暗号化されたPDFを使用します。
  • 米司法省のような政府機関は、暗号化されたPDFによる書類の提出を認めています。

メールアプリケーションのプラグインの中には、文書を暗号化されたPDFとして送信する機能を提供するものも多く、PDF暗号化に対する需要が存在するのは明らかです。

直接抜き取り攻撃

PDFファイルを暗号化したときに暗号化されるのはコンテンツ、つまり、ファイル内で文字列(string)またはストリーム(stream)としての特性を持つオブジェクトだけです。それ以外の、文書の構造を決定するオブジェクトは暗号化されません。つまり、ファイルが暗号化されていても、文書のページ数やサイズ、オブジェクト、リンクについては情報を得ることができます。このような情報は暗号化の回避方法を編み出すのに利用される可能性があるため、攻撃者となるかもしれない人物に渡すべきものではありません。

調査チームが最初に考えたのは、ファイルに独自の情報を追加できるのではないかということでした。これが可能であれば、理論的には、データ抜き取り経路を作り出すことができるようになります。調査チームは仕様書を参照し、PDFの暗号化を細かく制御可能であることを確認しました。たとえば、string型のオブジェクトだけ、またはstream型のオブジェクトだけを暗号化して、他のコンテンツは暗号化せずにそのまま残すことができます。

その上、完全性チェック機能は実装されていないので、暗号化された文書に誰かが何か追加したとしても、利用者に対してアラートが表示されることはありません。たとえば、フォームを送信するというアクションを追加すれば、データ(たとえば、文書のコンテンツすべて)を第三者へ送信するフォームがPDFファイルに埋め込まれます。このアクションを、文書を開くというアクションにひも付け、文書が開かれたときにフォームの送信が行われるようにすることも可能です。

これは抜き取りの一例にすぎませんが、付随するオプションは豊富にあります。攻撃者はたとえば、ファイルのコンテンツ全体が追加されたURLをシンプルなリンクの形で自分のWebサイトに掲載することができますし、あるいはJavaScriptを利用して、復号したコンテンツを任意の場所へ送ることもできます。Webサイトと通信する前に確認通知を表示するPDFリーダーもありますが、表示しないPDFリーダーもありますし、通知を見てちゃんと考えてから通信を許可する人ばかりではありません。

展性攻撃

第2の攻撃は、CBCモードの既知の欠点を悪用したものです。暗号化されている平文情報の一部を知っていればブロックのコンテンツを変更できる、という内容です。

PDFの仕様書によると、PDFファイルのコンテンツが暗号化されるときには権限(ファイル作成者に文書の編集権限を与える、ファイルを読むだけの人には与えない、など)も暗号化されます。文書のほかの部分と同じAESキーで暗号化されるこの権限を、攻撃者が改竄できないようにするためです。

一方で、仕様書では12バイトの既知の平文が定義されています。そのため攻撃者は、CBCの脆弱性を突いて、暗号化されているデータに手を加えることが可能です。こうして、たとえば前述したデータ抜き取りメカニズムを追加して、そのファイルのコンテンツを第三者のWebサイトへ送信することが可能となります。

結果

調査チームは、以上の攻撃手法を23種類のPDFリーダーと4種類のブラウザーで試しました。その結果、どのリーダーもブラウザーも、少なくともどちらかの攻撃に対して部分的に脆弱であることが判明しました。

残念ながら、このPDFの弱点を十分に軽減できるような解決策は、クライアント側にはありません。ファイルの形式を損なわずに抜き取り経路をすべてブロックすることは不可能です。調査チームはソフトウェアの開発元に問題を報告しました。Appleなど一部の企業は、ファイルが第三者のWebサイトにアクセスしていることを知らせる通知を強調することで対応を試みました。その他企業は、修正を試みたが「解決不可能なものを解決」することはできなかったとの回答でした。

機密データを送信する必要がある場合は、別の情報保護手段の使用をお勧めします。たとえば、カスペルスキー製品にはデータを暗号化して特別なコンテナに保存する機能が搭載されています。

ヒント