さて1日間が空きましたが第3回は
前回説明したXAdESv141:TimeStampValidationDataと同じくXAdES 1.4.1/1.4.2で新しく追加されたXAdESv141:ArchiveTimeStampについての説明です。名前の通り保管タイムスタンプなのですがXAdES 1.3.2とは互換性がありませんので名前空間で区別して利用する必要があります。
では今回もそもそもなぜ新しい保管タイムスタンプであるXAdESv141:ArchiveTimeStampが必要になるのかと言う話からしましょう。前回XAdESの非署名領域であるUnsignedSignatureProperties要素の下にタイムスタンプ用の検証情報格納場所であるXAdESv141:TimeStampValidationDataが追加された事を説明しました。UnsignedSignatureProperties要素の下にはSchema的には任意の要素の追加が可能なので問題ありません。
一方XAdESv132:ArchiveTimeStampの計算時にはUnsignedSignatureProperties要素の下の決められた要素を順番に取得して連結して行く仕様となっています。この決められた要素とは全てXAdES 1.3.2で定義されたSignatureTimeStamp要素やCertificateValues要素等でありXAdESv141:TimeStampValidationData要素が含まれていません。これではせっかくXAdES 1.4.1/1.4.2で追加したXAdESv141:TimeStampValidationData要素の下が保護出来ない事になってしまいます。そこでArchiveTimeStampの計算方法として「UnsignedSignatureProperties要素の下を全て対象とする」XAdESv141:ArchiveTimeStamp要素を追加して解決したと言う事です。
ただそれだけでは無くもう1点ds:Objectの扱いについても変更がありました。XAdES 1.3.2では「Reference要素で参照されていないds:Object」が対象でしたが、XAdES 1.4.1/1.4.2では「全てのds:Object」が対象となりました。なお正確には「XAdESの要素であるQualifyingPropertiesを持つds:Objectは除外する」と言うルールもありますがこれはXAdES 1.3.2とXAdES 1.4.1/1.4.2の両方に共通しています。
以上をまとめると以下のようになります。
1)XAdES 1.3.2における保管タイムスタンプ仕様(一部)
1:UnsignedSignatureProperties要素の下の決められた要素を連結
2:Reference参照されていない全てのds:Objecctを連結 ※
2)XAdES 1.4.1/1.4.2における保管タイムスタンプ(一部)
1:UnsignedSignatureProperties要素の下の全ての要素を連結
2:Reference参照有無に関係無く全てのds:Objecctを連結 ※
※ ただしXAdESのQualifyingPropertiesを持つds:Objectは除外する。
計算方法が2箇所異なるので、当然計算結果のハッシュ値もXAdES 1.3.2とAdES 1.4.1/1.4.2では異なり一致しません。XAdESv141:TimeStampValidationData要素への対応の為に異なる保管タイムスタンプが生まれてしまいました。
なおXAdES 1.4.1のSchemaではXAdESv141:ArchiveTimeStampV2と書かれていましたがこれは誤りで、V2が無いXAdESv141:ArchiveTimeStampが正しい要素名となります。これはXAdES 1.4.2で訂正されています。
[続きを読む]