≪第7回へ
これまで識別名の文字列化のための標準RFC 2253について説明してきましたが、実は2006年6月にこれの後継となるRFC 4514が公開されています。
2008年6月にW3CのXML署名に関する勧告の改訂版「XML Signature Syntax and Processing (Second Edition)が公開されました。以前にもブログで説明したような気がしますが、この改訂の2つの目玉は
・正規化はCanonical XML 1.1をデフォルトとする
・識別名文字列の生成にはRFC 2253ではなく新版のRFC 4514を使う
だと思います。XAdESでも(エディタが後方互換性の事など深く考えずに安易に)XMLDSig Second EditionやRFC 4514を参照するよう移行するのは時間の問題だと思います。
今回は、このRFC 4514について旧版であるRFC 2253との差分を中心に紹介したいと思います。
幸い"RFC 4514 Appendix B"にRFC 2253との違いがまとめられています。ポイントを整理すると
、、、、ってな所です。Microsoft の CryptoAPIや.NET Frameworkの実装に依存している場合には識別名の表示が古いRFC 1779ベースになってしまうので、RFC 4514のみしか扱えない実装では、うまく読み込みできない可能性があるので注意が必要です。
W3CではXMLDSig SEの策定の際にRFC 4514の差分を確認するようなテストケース("W3C Test Cases for C14N 1.1 and XMLDSig Interoperability")も作っているようです。
これまでにも述べているようにXMLDSigでは検索のために識別名文字列を使うのでRFC 2253だろうがRFC 4514だろうが完全一致しなかろうがテストの必要など無く、むしろ検証情報の一致確認で完全性が求められるXAdESでこそRFC 2253やRFC 4514の識別名文字列一致のテストをしなければならないわけで、2008年9月のETSI XAdESプラグテストでもそのように主張したんですが、いま一つ理解されないまま流されてしまいました(−_−;
テスト用のデータはW3Cでは正式には配っていないようなんですが、ApacheのCVSの中とかに誰かがテストした結果が残っていたような気もします。
テストケースとテストデータを作って相互運用テストはしたみたいですが、製品としてRFC 4514をサポートするような実装は今のところまだ出ていないようです。
今日は、さっくりとココまで、、、(^^v
次回は最終回ですよん。
ではでは
XAdESの証明書識別名の比較問題 (もくじ)
・第1回 はじめに
・第2回 XAdESにおける名前比較の要件
・第3回 なぜCAdESやXMLDSigでは問題とならないのか
・第4回 RFC 2253による識別名バイナリの文字列化
・第5回 RFC 2253識別名文字列を比較する際の相互運用性阻害要因
・第6回 RFC 2253識別名文字列を生成する実装の紹介とテストの概要
・第7回 RFC 2253識別名文字列を生成する実装の標準準拠性テスト結果
・第8回 XMLDSig Second Editionでも参照されるRFC 2253の改訂版RFC 4514との差異
・第9回(最終回) まとめと今後のXAdESの改訂
これまで識別名の文字列化のための標準RFC 2253について説明してきましたが、実は2006年6月にこれの後継となるRFC 4514が公開されています。
2008年6月にW3CのXML署名に関する勧告の改訂版「XML Signature Syntax and Processing (Second Edition)が公開されました。以前にもブログで説明したような気がしますが、この改訂の2つの目玉は
・正規化はCanonical XML 1.1をデフォルトとする
・識別名文字列の生成にはRFC 2253ではなく新版のRFC 4514を使う
だと思います。XAdESでも(エディタが後方互換性の事など深く考えずに安易に)XMLDSig Second EditionやRFC 4514を参照するよう移行するのは時間の問題だと思います。
今回は、このRFC 4514について旧版であるRFC 2253との差分を中心に紹介したいと思います。
RFC 2253とRFC 4514の違いのポイント
幸い"RFC 4514 Appendix B"にRFC 2253との違いがまとめられています。ポイントを整理すると
- LDAPv2の識別名文字列化(RFC 1779)は移行期間を終え使えなくなった、つまり・・・
- 属性値をダブルクォートで括る(CN="hoge")のはダメ
- RDNを区切るカンマの前後の空白文字(CN=hoge,_C=JP)はダメ
- RDNをセミコロン";"で区切ってはダメ
- 属性タイプが古いOID表記(例 'oid.1.2.3=hoge'や'OID1.2.3=hoge')はダメ
- 従ってMicrosoft実装の場合には注意が必要
- 属性値の等号'='はエスケープしてもよい
- 属性値の等号'#'は途中に現れてもエスケープしてもよい
- 属性値の空白文字は途中に現れてもエスケープしてもよい
- 属性値のヌル文字は'\00'でエスケープする
- 全ての文字を16進数エスケープ表記(例 '\1F')してよい
- RFC 4514は識別名文字列は一意にならない(=正規化しない)事を明記
、、、、ってな所です。Microsoft の CryptoAPIや.NET Frameworkの実装に依存している場合には識別名の表示が古いRFC 1779ベースになってしまうので、RFC 4514のみしか扱えない実装では、うまく読み込みできない可能性があるので注意が必要です。
W3CではXMLDSig SEの策定の際にRFC 4514の差分を確認するようなテストケース("W3C Test Cases for C14N 1.1 and XMLDSig Interoperability")も作っているようです。
これまでにも述べているようにXMLDSigでは検索のために識別名文字列を使うのでRFC 2253だろうがRFC 4514だろうが完全一致しなかろうがテストの必要など無く、むしろ検証情報の一致確認で完全性が求められるXAdESでこそRFC 2253やRFC 4514の識別名文字列一致のテストをしなければならないわけで、2008年9月のETSI XAdESプラグテストでもそのように主張したんですが、いま一つ理解されないまま流されてしまいました(−_−;
テスト用のデータはW3Cでは正式には配っていないようなんですが、ApacheのCVSの中とかに誰かがテストした結果が残っていたような気もします。
テストケースとテストデータを作って相互運用テストはしたみたいですが、製品としてRFC 4514をサポートするような実装は今のところまだ出ていないようです。
今日は、さっくりとココまで、、、(^^v
次回は最終回ですよん。
ではでは
XAdESの証明書識別名の比較問題 (もくじ)
・第1回 はじめに
・第2回 XAdESにおける名前比較の要件
・第3回 なぜCAdESやXMLDSigでは問題とならないのか
・第4回 RFC 2253による識別名バイナリの文字列化
・第5回 RFC 2253識別名文字列を比較する際の相互運用性阻害要因
・第6回 RFC 2253識別名文字列を生成する実装の紹介とテストの概要
・第7回 RFC 2253識別名文字列を生成する実装の標準準拠性テスト結果
・第8回 XMLDSig Second Editionでも参照されるRFC 2253の改訂版RFC 4514との差異
・第9回(最終回) まとめと今後のXAdESの改訂






