« 2007年05月09日 | メイン | 2007年05月11日 »
2007年05月10日
PDFと署名(23) — 署名ハンドラ
PDF署名では、様々な署名処理プログラムを使うことができます。これを署名ハンドラと言います。署名に使ったハンドラの名前と、それを検証するための望ましい署名ハンドラの名前が、作成されたPDFの中の署名辞書に保存されています。
独自の署名ハンドラを使って署名をつけた場合、署名のついたPDFをAdobe Readerで開いて、その署名を検証しようとしたとき、署名に使ったハンドラがパソコンにないと、次の図のようなメッセージが出ることがあります。
【例】PDF内の辞書に記録された署名ハンドラが、検証するPCにないとき
署名に使ったハンドラがないとまったく検証できない、ということでは不便ですので、互換な署名ハンドラでも検証できるようになっています。
署名辞書では、検証のために使うのが望ましい署名ハンドラがFilterに登録されています。さらに、SubFilterには、どのような署名のアルゴリズムを使ったかを表すキーワードを記録することになっています。そこで、SubFilterの内容をチェックして、そのキーワードに示した形式をサポートする任意の互換ハンドラで検証することができます。
SubFilterの定義済みのキーワードは、adbe.pkcs7.detached, adbe.pkcs7.sha1, adbe.x509.rsa_sha1の3つです。
先ほどのPDFを見ますと、署名辞書(一部)には、
/Type /Sig
/Filter /MDIS.SignedPDF
/SubFilter /adbe.pkcs7.detached
となっていて、MDIS.SignedPDFという三菱電機インフォーメーションシステムズ社の署名ハンドラで署名を検証するのが良いということを示しています。
SubFilterは、adbe.pkcs7.detachedとなっています。adbe.pkcs7.detachedは、次のアルゴリズムをサポートしています。
○メッセージのダイジェスト
SHA1 (PDF 1.3)
SHA256 (PDF 1.6)
SHA384 (PDF 1.7)
SHA512 (PDF 1.7)
RIPEMD160 (PDF 1.7)
○RSA公開鍵暗号化アルゴリズム
1024-bit まで(PDF 1.3)
2048-bit まで (PDF 1.5)
4096-bit まで(PDF 1.5)
○DSA アルゴリズムのサポート
4096-bitsまで (PDF 1.6)
そこで、adbe.pkcs7.detachedの形式をサポートする署名ハンドラを使っても良いということです。上の例では、AdobeReaderについている標準の署名ハンドラ(多分、PPKLiteプラグインの中にある)を、MDIS.SignedPDFの代わりに使って検証ができるようです。(但し、完全ではないと思います)。
このあたりの署名ハンドラの互換性は、もっと明瞭・厳密な仕様が必要なように思います。早くISO標準になって欲しいですね。
投票をお願いいたします