2012-04-02

XAdES 1.4.1/1.4.2:第1回 概要と名前空間  [by miyachi]

XMLの長期署名フォーマットであるXAdESの最新仕様はETSI(欧州電気通信標準化機構)が中心となって決定しています。日本では旧ECOM及び現在はeRAP(電子記録応用基盤フォーラム)が中心となってJISプロファイルを策定してきました。現在のJISプロファイル(JIS X 5093:2008)はXAdES 1.3.2をベースにしています。しかし実は新しいXAdES 1.4.1が既にリリースされており、更に1.4.1を更新したXAdES 1.4.2も2010年12月にリリースされています。ETSIのベースラインプロファイルも昨年リリースされ欧州では標準化作業が進展しています。ここまでのXAdES仕様の流れを以下にリストアップします。

 (2005) ETSI XAdES 1.3.1 Draft
 (2006-03) ETSI XAdES 1.3.2 [PDF]
 (2008-05) JIS X 5093:2008 [案:PDF]
 (2009-06) ETSI XAdES 1.4.1 [PDF]
 (2010-12) ETSI XAdES 1.4.2 [PDF]
 (2011-09) ETSI XAdES Baseline Profile [PDF]

XAdES 1.3.1の前にももちろん仕様が存在しますが今回の話には必要が無いのでここでは説明しません。またXAdESはベース仕様として XmlDsig(XML署名)[PDF] を使っています。しかしながらXAdES 1.4.1/1.4.2に関して言えば変更はありませんのでこれもここでは説明しません。

JISプロファイルもそろそろXAdES 1.4.1/1.4.2ベースに移行する必要があると思いますが色々な事情もあり(聞かないでw)まだ更新されていません。しかしながらそろそろ弊社のLe-XAdESライブラリもXAdES 1.4.1/1.4.2へ対応しようと作業を開始しました。その必要もあってXAdES 1.4.1/1.4.2仕様をまずは簡単にまとめたいと思います。

まずXAdES 1.4.2は仕様としては基本的にXAdES 1.4.1と同じです。XAdES 1.4.1にあったSchemaの間違いを正したりと言うマイナーな変更のみですので仕様書としてはXAdES 1.4.2だけを見て頂いて問題ありません。XAdES 1.4.1/1.4.2では新しい名前空間の下に2つのXML要素が追加されました。

 名前空間 http://uri.etsi.org/01903/v1.4.1#
 新要素1 XAdESv141:TimeStampValidationData
 新要素2 XAdESv141:ArchiveTimeStamp

2つの新要素はそれぞれタイムスタンプの証明書/検証情報の格納用と新しい保管タイムスタンプ形式となります。これらに関しては後日別途まとめます。今日は名前空間についてのまとめと簡単に考察をしてみましょう。

XAdES 1.3.2までの仕様ではマイナーバージョンアップも含めて全ての要素の名前空間が更新されました。例えばXAdES 1.3.2と1.3.1では以下のようになっていました。

 1.3.1名前空間 http://uri.etsi.org/01903/v1.3.1#
 1.3.2名前空間 http://uri.etsi.org/01903/v1.3.2#

1.3.1と1.3.2の名前空間が混在する事は基本的にありません。それに対して1.4.1では新規追加された要素以外は全て1.3.2の名前空間をそのまま利用しています。つまり1.4.1対応にするにはXAdES 1.3.2と1.4.1の両方の仕様を参照する必要があると言うことになります。

 1.3.1と1.3.2は全く別の名前空間
 1.4.1の名前空間は1.3.2をベースに1.4.1を追加

これに関してはどちらのやり方が良いかと言うのはその人の立場や考え方次第と言えます。私は実装者の立場になりますが、実装者から見た場合には1.4.1のやり方が望ましいと考えています。それは1.3.2仕様の実装部分はそのままにして、1.4.1仕様の実装部分を追加すれば良いからです。今後もマイナーな修正であれば1.4.1と同様に変更された要素のみ新しい名前空間で定義して貰った方が良いと考えています。

ArchiveTimeStampに関しては同じ要素名で1.3.2と1.4.1が存在しそれぞれ計算方法も異なるのですが、名前空間が異なるのでプログラミング的には容易に判別が可能です。

過去に1.3.1から1.3.2に更新した場合に両方に対応する為に私の実装では修正範囲が大きく手間がかかりました。もちろん最初から名前空間の変更を考慮して設計とプログラミングされていれば話は違うのだろうとは思います。しかしそれに比べて1.3.2の実装者が1.4.1対応にするには新しい要素のみ考慮すれば良く、どのような設計とプログラミングでも対応は比較的容易では無いかと思います。

XAdES 1.4.1から実装を始めたとしても1.3.2の仕様に目を通す必要があり仕様理解に対する断絶は少ないように思えます。ただもちろんマイナーバージョンアップの数が増えると参照するバージョンも増えて面倒な事になりそうではあります。長期保管を前提した仕様ですのでこの辺りは考え方で一長一短となるのは仕方が無いことなのかもしれません。

私の理解では既存のXAdES 1.3.2仕様のXAdES-Aファイルに対して今後XAdES 1.4.1仕様の保管タイムスタンプを追加して行く事は問題が無いと考えています。その意味では互換性は考慮されていると言っても良いのでは無いでしょうか。

以上が私の理解なのですがもし誤りや別の考え方がありましたらぜひコメント下さい!さて今後の予定としては全4回を考えています。

 XAdES 1.4.1/1.4.2:第1回 概要と名前空間 (2012-04-02)
 XAdES 1.4.1/1.4.2:第2回 XAdESv141:TimeStampValidationData (2012-04-03)
 XAdES 1.4.1/1.4.2:第3回 XAdESv141:ArchiveTimeStamp (2012-04-05)
 XAdES 1.4.1/1.4.2:第4回 サンプルファイル他 (2012-04-06)

ご興味がありましたら今後チェックして下さいね。更新したらFaceBookページTwitterでも告知します。ではまた!
2012-04-02 15:09:35 - miyachi - [長期署名] -

コメント一覧

コメント無し

コメントを書く


hint: "LangEdge"