« 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サイトから入手できます。

ASN1-BER/XML変換ツール LeAsn1Xml

これで見ますと、PFUのPDFタイムスタンプ・サンプルの署名値は次のようになります。

PFUのタイムスタンプ・サンプルPDFの署名値PKCS#7をXML化したもの

投票をお願いいたします

投稿者 koba : 08:00 | コメント (0) | トラックバック