miyachi]ETSIの次プラグテストは5月4~29日でPAdESとアナウンスされました。現在ETSIでは各長期署名仕様を見直してEN化しています。今回のプラグテストはそのdraftをベースに仕様チェックを兼ねているようです。(PDF注意)今回も参加費は無料ですがNDAは交わす必要があります。弊社製品も参加して相互運用性のチェックを予定しています。結果はNDAがあるので公開できないんですが互換性は確実に上がると思います。日本でもこのような相互運用性試験やりたいですね。そのうちJNSAで何とかと考えてはいますがどうなりますか。miyachi]先日何に使う訳でもないのですがふと電子署名データフォーマットの系譜でもまとめてみるかと言う事で作った1枚の画。う~ん思った以上につまらなかったですねw実はこちらは画にする必要も無い電子署名の系譜があったりします。それは日本の電子署名標準化に関する系譜です。フォーラム」の成果報告会がありました。eRAPではかつてECOMが行ってきた電子署名標準化の作業を引き継いで来ました。ECOMでは長期署名のJIS化を、eRAPではISO化を達成しています。ところがeRAPはフォーラムとしては今年度を最後に終了して、来年度は研究会としてケースマネージメント等の活動を行う予定です。電子署名標準化の作業は残念ながら継続されない事になりました。言うことで成果報告会にてセコムの佐藤さんの発表の最後に以下のアナウンスがありました!「今後の電子署名技術に関する調査研究はJNSA(日本ネットワークセキュリティ協会)の電子署名WG(仮称)で活動予定。近日キックオフミーティング予定。弊社もJNSAに4月より加盟して同WG活動に参加予定です。近年また電子署名のお話が増えて来ているように感じています。参加すると勉強にもなりますし新しい技術もいち早く知ることができます。ご興味がありましたら是非ご参加ください!最初は見学からでもOKだと思います。弊社にご連絡頂いても大丈夫です。いや正確にはこの後が閑話か(^^;)。書いた電子署名データフォーマットの系譜について簡単に個人的感想を付けてみましょう。v1.4.1/1.4.2に対応したXML長期署名ツール「LE:XAdES:Tool」のVer2.00ベータ1版をリリースしました。ETSIのXAdESプラグテストで利用した機能が組み込まれています。ダウンロードはこちらから!Ver2となったこともありイメージも少し変更し名称も「XAdEStool」から「LE:XAdES:Tool」としました。ちなみに「Le-XAdESライブラリ」もVer2.00からは「LE:XAdES:Lib」と名称変更の予定です。「LE:XAdES:Lib」は簡単なマニュアルも用意しようとしている為に今しばらくリリースまで時間が必要ですが、先に「LE:XAdES:Tool」で機能をお試しください。「LE:XAdES:Lib」はVer2.00より少しAPIや利用方法に変更があります。その辺りの移行手順もマニュアルにまとめる予定です。「LE:XAdES:Lib」のVer2.00正式リリースまではベータ版として「LE:XAdES:Tool」をリリースします。XML長期署名ツール「LE:XAdES:Tool」は試験または個人利用の目的で公開されております。商用利用は不可となっておりますのでご了解ください。何かありましたら本投稿にコメントを頂くかメールをお願いします。miyachi]さて技術的な説明は前回と前々回で終わったと考えています。最終回の今回はまず実際のサンプルファイルを見てみましょう。1.4.1/1.4.2でそれぞれ署名したES-A(保管タイムスタンプ付)のサンプルファイルです。弊社のLe-XAdESのVer1.5ベータ版で作成してあります。1.4.1/1.4.2で新しく追加されたXAdESv141:ArchiveTimeStampについての説明です。1.3.2とは互換性がありませんので名前空間で区別して利用する必要があります。今回もそもそもなぜ新しい保管タイムスタンプであるXAdESv141:ArchiveTimeStampが必要になるのかと言う話からしましょう。前回XAdESの非署名領域であるUnsignedSignatureProperties要素の下にタイムスタンプ用の検証情報格納場所であるXAdESv141:TimeStampValidationDataが追加された事を説明しました。UnsignedSignatureProperties要素の下にはSchema的には任意の要素の追加が可能なので問題ありません。XAdESv132:ArchiveTimeStampの計算時にはUnsignedSignatureProperties要素の下の決められた要素を順番に取得して連結して行く仕様となっています。1.3.2で定義されたSignatureTimeStamp要素やCertificateValues要素等でありXAdESv141:TimeStampValidationData要素が含まれていません。1.4.1/1.4.2で追加したXAdESv141:TimeStampValidationData要素の下が保護出来ない事になってしまいます。そこでArchiveTimeStampの計算方法として「UnsignedSignatureProperties要素の下を全て対象とする」XAdESv141:ArchiveTimeStamp要素を追加して解決したと言う事です。それだけでは無くもう1点ds:Objectの扱いについても変更がありました。1.4.1/1.4.2では「全てのds:Object」が対象となりました。1.4.1/1.4.2の両方に共通しています。以上をまとめると以下のようになります。XAdESのQualifyingPropertiesを持つds:Objectは除外する。1.4.1/1.4.2では異なり一致しません。XAdESv141:TimeStampValidationData要素への対応の為に異なる保管タイムスタンプが生まれてしまいました。1.4.1のSchemaではXAdESv141:ArchiveTimeStampV2と書かれていましたがこれは誤りで、V2が無いXAdESv141:ArchiveTimeStampが正しい要素名となります。1.4.2で訂正されています。1.4.1/1.4.2で新しく追加された要素のうちタイムスタンプの検証情報を保管するXAdESv141:TimeStampValidationDataについて私の理解の範囲で説明しましょう。そもそも何故XAdESv141:TimeStampValidationDataが必要になるのかと言う話からする必要がありますね。XAdESをはじめとする長期署名は基本的には「署名」+「タイムスタンプ」(これがES-T形式)となります。PDF長期署名のPAdESでは「(文書)タイムスタンプ」だけで「署名」無しの仕様も可能ですが、XAdES/CAdESでは署名抜きでタイムスタンプだけの仕様はありません。タイムスタンプのRFC3161仕様とは乱暴に言えばサーバによる「署名」と言えます。「署名」+「タイムスタンプ」では2つの「署名」がある事になります。それぞれの「署名」についてEE(署名者)証明書が存在しており、かつトラストアンカーとなるルート証明書までの証明書パス(チェーン)が存在する事になります。「署名」と「タイムスタンプ」で同じトラストアンカーのルート証明書を使うのであれば同じ証明書とCRL等の検証情報で良いので証明書パスは1つだけですみます。過去にXAdESの国際プラグテストを行った時には署名証明書とタイムスタンプは同じトラストアンカーを利用していました。欧州等ではどうもこのような運用が一般的だったようです。日本では主に「署名」に関しては経済産業省の管轄であり「タイムスタンプ」は時刻に関係があるので総務省の管轄で認証局とタイムスタンプ局が別々に認定されてきました。このために「署名」と「タイムスタンプ」ではトラストアンカーとなるルート証明書が異なります。すると証明書パスは「署名」と「タイムスタンプ」の2つが必要となります。少なくとも日本では証明書パス(と正確にはそれらに必要な検証情報群)は2つ格納する必要があります。1.3.2の仕様では証明書はCertificateValues要素下に格納し検証情報はRevocationValues要素下に格納できるだけです。CertificateValues要素とRevocationValues要素は1つだけしか認められません。証明書パスの情報を格納するのは1ヶ所しか無いのです。本来CertificateValues要素とRevocationValues要素には「署名」に関する証明書パスと検証情報を格納する事になっています。このままでは「タイムスタンプ」の証明書パスと検証情報をXML要素として格納する事ができません。そこでJIS化する際に以下のルールが定義されました。署名タイムスタンプ(SigTS)の証明書と検証情報:1)タイムスタンプトークン自身に埋め込む2)CertificateValues要素とRevocationValues要素に入れる保管タイムスタンプ(ArcTS)の証明書と検証情報:1)タイムスタンプトークン自身に埋め込む正確にはタイムスタンプトークンのどこに埋め込むかによって更に種類は分かれますがここの本題では無いので省略します。CertificateValues要素とRevocationValues要素に関しては意味を広義にとって署名タイムスタンプについては利用しても良いとしました。保管タイムスタンプはその時刻が常にRevocationValues要素に埋め込まれたCRL発行日よりも後になるので利用できません。これでめでたしめでたし...なのですが証明書や検証情報を「タイムスタンプトークン自身に埋め込む」には以下の意見がありました。1)XMLだけでなくASN.1/DER(BER)の操作が必要になり難しい2)取得したタイムスタンプトークンはそのまま利用すべき3)XMLの利点である可読性の面から望ましくない4)CertificateValues/RevocationValuesは署名証明書のみにすべきどれも問題点と言うレベルでは無いのですが、特に1)のASN.1/DER(BER)の操作については技術的なハードルが高くなるので実装者が苦労すると嫌がられています。ちなみに日本ではどのベンダーもタイムスタンプトークン自身に埋め込む方式に対応しています。JIS対応するには必須ですから当然ですね。ここでXAdESv141:TimeStampValidationDataの登場です。)が中心となって決定しています。日本では旧ECOM及び現在はeRAP(電子記録応用基盤フォーラム)が中心となってJISプロファイルを策定してきました。1.3.2をベースにしています。1.4.2も2010年12月にリリースされています。ETSIのベースラインプロファイルも昨年リリースされ欧州では標準化作業が進展しています。ここまでのXAdES仕様の流れを以下にリストアップします。1.3.1の前にももちろん仕様が存在しますが今回の話には必要が無いのでここでは説明しません。1.4.1/1.4.2に関して言えば変更はありませんのでこれもここでは説明しません。1.4.1/1.4.2ベースに移行する必要があると思いますが色々な事情もあり(聞かないでw)まだ更新されていません。1.4.1/1.4.2へ対応しようと作業を開始しました。1.4.1/1.4.2仕様をまずは簡単にまとめたいと思います。miyachi]ETSIによる長期署名(XAdES/CAdES)プラグテストのサイトオープンを、@kjurさんのつぶやきで知りました。以下に簡単に概要をまとめておきましょう。詳しくは以下サイトをご覧ください。http://www.etsi.org/plugtests/XAdES-2010/XAdES-CAdES.htmまずテスト期間は10月25日から11月05日までです。登録の締め切りは10月10日までとなっています。参加にはNDA締結が必要となります。料金は700ユーロでETSIメンバーだと650ユーロ必要となります。それに19.6%の消費税が加算されます。実質10万円くらいでしょうか。今回は参加したことを宣伝に使っても良いそうです。後はRSA-SHA2署名もテストしてくる参加実装もあるんじゃ無いかと思います。参加者は前回まではバラエティに富んでいて、実装レベルもバラエティに富んでいましたので良く言えば勉強になりますし、悪く言えば大変な部分もあります。NDAが必要ですがPDFをダウンロードして印刷して手書き署名後に再PDF化して返信すればOKのはずです。電話会議もありますが英語に自信が無ければチャット参加も可能です。私はチャットのみで参加しました。弊社の実装もそうですが例えばXAdESの全ての仕様の実装がされていなくても可能な範囲だけでも参加できます。前回は私も初参加だった関係で@kjurさんには大変お世話になりました。miyachi]以前にもベータ版の時に書きましたが、MS-Office2010では標準のデジタル署名が長期署名(XAdES-EPES)になりました。弊社はボリュームライセンスなのでダウンロードで正式版が入手できたので仕様の解析をしてみました。簡単なスライドの表示です。上のスライドが見えない場合同じ内容のPDFはこちら(約170KB)。2010にてXAdESを利用可能とのニュースを知る。おお!遂にMicrosoftが長期署名をサポートかと感慨深いものが。ベータ公開版ではXAdES-Tまでらしい。試してみたいけど時間が無いのでとりあえず見送り。時間が出来たら入れてみよう。正式版になってもXAdES-X-Longまでで、保管タイムスタンプを使ったXAdES-Aには対応しないらしい。XAdESは組み込んだけどまだGUIも変更して本格的な導入では無いようだ。XAdES-C/X-Long等も署名時点の物が使われるようで猶予期間は考慮されないようだし、保管タイムスタンプにも後から付与する必要があるので未対応と言うところか。MicrosoftがXAdESに対応したと言うのは大きい。後AdobeもPAdES(PDF長期署名)のやる気が満々だし。MSとAdobeが長期署名に対応したら普及にも弾みが付きそうです。過去にはこのネタで論文まで書いてしまったので正式サポートは嬉しいです。2010のベータ版ダウンロードはこちらです。正式リリースは今年前半とのこと。私にとっては初めての本格的な論文となりましたので採用されるまでのプロセスが大変刺激的で勉強になりました。内容はMS-Office2007から採用されたOOXML形式のXMLドキュメントに対してXML署名をXAdESによる長期署名にした場合の問題の考察と解決法の提案と実装結果に関するものです。ご興味がありましたらぜひご覧下さい。miyachi]弊社開発のLe-XAdESライブラリを利用したXML長期署名ツールXAdEStoolをバージョンアップしたVer1.30R2版を本日リリースしました。ダウンロードはこちら(XAdEStool)から。今回のバージョンアップでは、CAPICOM非依存をはじめとして各種機能アップが行われています。詳しくは同梱のXAdEStoolドキュメントをご覧下さい。XAdEStoolのVer1.30R2版に関してのバグ報告や質問やコメントがありましたら本投稿にコメントかmiyachiまでメールをお願いします。Ver1.30R2に関して詳しくは後日少しずつ説明をして行く予定です。とり急ぎバイナリの公開まで。miyachi]弊社の製品であるXML長期署名ライブラリLe-XAdESに関連して長期署名の説明や問題点やその回避方法や考え方をまとめたシリーズをはじめます。第1回は長期署名入門と言うことで簡単にまとめます。電子署名と長期署名は何が違うかを考えてみましょう。電子署名は公開鍵方式暗号による電子証明書(公開鍵)と私有(秘密)鍵を利用したPKIと言う枠組みの中で、「誰が」「何に」を保証する技術として古くから使われて来ました。ここで2つ足りない要素があります。「何時(いつ)」が保証されない。電子証明書に有効期限があり保証期間が有限。これを補う目的で考えられた仕様が長期署名と言うことになります。1)に対してはPKIベースのタイムスタンプ技術を使うことで「何時」を保証し、2)に対しても同様にタイムスタンプ技術と検証に必要な情報を保管することで電子証明書の有効期限を超えて保証することが出来ます。1)のタイムスタンプを署名(シグネチャ)タイムスタンプと、2)のタイムスタンプを保管(アーカイブ)タイムスタンプと、呼びます。保管タイムスタンプは重ねて適用が可能な為に有効期間を延長して行くことも可能になります。miyachi]弊社開発のLe-XAdESライブラリのソース公開版Ver1.10R2と、Le-XAdESライブラリを利用したXML長期署名ツールXAdEStoolをバージョンアップしたVer1.10R2版を本日リリースしました。ダウンロードはLe-XAdESライブラリはこちら、XAdEStoolはこちらから。今回のバージョンアップでは、以下の4項目の修正と追加が大きな項目となります。以上内容に関して詳しくは同梱のLe-XAdESドキュメントとXAdEStoolドキュメントをご覧下さい。非商用ライセンスに関して少し修正を加えました。詳しくはライセンスファイルをご覧下さい。Le-XAdESライブラリとXAdEStoolのVer1.10R2版に関してのバグ報告や質問やコメントがありましたら本投稿にコメントかmiyachiまでメールをお願いします。XMLファイルも用意しました。商業登記証明書がOCSPを、PFUタイムスタンプがCRLを検証情報として利用しているのでCRL/OCSPの両方が入ったサンプルとなります。よろしければご覧下さい。miyachi]弊社開発のLe-XAdESライブラリを利用したXML長期署名ツールXAdEStoolをバージョンアップしたVer1.07版のバグ修正版Ver1.07aを本日リリースしました。ダウンロードはこちらから。一昨日(6月9日)にリリースしたばかりのVer1.07においてバグが見つかったのでそのバグ修正対応です。参照先改竄時にリスト表示で「◎文書正常」と表示していた以上内容に関して詳しくは同梱のドキュメントをご覧下さい。参照先で改竄が見つかった場合に以前は1つ目を発見した時点でエラーを返していたのを、他の参照先も全てチェックするように修正した際に入ってしまったバグでした。エラーウィンドウによるメッセージはちゃんと表示していたのでテスト時に見逃してしまいました。Ver1.07をダウンロードされた方は申し訳ありませんがVer1.07aに更新をお願い致します。Ver1.07a版に関してのバグ報告や質問やコメントがありましたら本投稿にコメントかmiyachiまでメールをお願いします。miyachiありがとうございます。kjurお疲れ様です。LangEdge,Inc.。