« 2007年05月31日 | メイン | 2007年06月02日 »
2007年06月01日
PDFと署名(36) — ハッシュ・アルゴリズムについて
さて、昨日の続きですが、「PFU タイムスタンプの使い方」2006年5月版 P.57/60 には、さらに、PFUのタイムスタンプは、「V2.0L10から、PDF文書からのハッシュ生成アルゴリズムを、より強固なものに変更しています」として、SHA-512ハッシュアルゴリズムおよびSHA-512withRSA署名アルゴリズムを使っていること。そして、「これらに対応していないAcrobat署名プラグインでは、正しい検証結果が得られません。」と書いてあります。
ところが、PDF Referenceによりますと/adbe.pkcs7.detachedは、メッセージダイジェストとして以下の5種類をサポートしています。
・SHA1 (PDF 1.3)
・SHA-256 (PDF 1.6)
・SHA-384 (PDF 1.7)
・SHA-512 (PDF 1.7)
・RIPEMD160 (PDF 1.7)
出典:PDF Referefnce 1.7 740 ページの表
とあります。なので、単純にアルゴリズムをサポートする・しないだけの観点で言えば、Adobe Reader内蔵のデフォルトハンドラでもSHA-512はサポートしていると言えます。
じゃあ、なぜAdobe readerのデフォルト署名ハンドラで、PFUのタイムスタンプが検証できないのか、これが以前として疑問です。
そこで、PFUのタイムスタンプ・ハンドラが作成している署名値を、少し調べてみることにしました。
PDFでは、署名値は署名辞書のContentsキーに保存されています。
Contentsキーの内容は、署名対象PDFの署名対象範囲(ByteRange)のダイジェストになります。公開鍵方式で署名する場合は、この値はPKCS#7のバイナリデータをDER符号化したものである、とされています。
PKCS#7とDER'について:
PKCS#7: RFC2315 Cryptographic Message Syntax Version 1.5
DER:Distinguished Encoding Rules
この中を見るのはとても大変そうですが、都合の良いことに、DER符号化したPKCS#7のデータをXMLにするツールがラング・エッジのWebサイトから入手できます。
これで見ますと、PFUのPDFタイムスタンプ・サンプルの署名値は次のようになります。
PFUのタイムスタンプ・サンプルPDFの署名値PKCS#7をXML化したもの
投票をお願いいたします