日本国内の認定タイムスタンプ局の発行するタイムスタンプトークンには、上位の時刻配信局からの時刻差がどの程度であったかを証明するための時刻監査証(TAC)がX.509属性証明書v2の形式で付与されています。

このTACが取り外されたり、違うものに置き換えられたりするのを防ぐ目的でタイムスタンプトークンのESSSigningCertificateV1/V2の署名属性を用いてTACの参照情報を含めるようにしています。日本の多くのタイムスタンプトークンのESSSigningCerticateの内容はTSA証明書とTACを保護するようにできており、内容は以下のようになっています。

・TSA証明書の参照情報 (証明書の発行者名、シリアル番号、拇印ハッシュ値による参照)
・TACの参照情報 (拇印ハッシュ値のみによる参照)

以前からTACの参照情報が拇印となるハッシュ値だけでいいものか疑問に思っていました。何を参照しているのかを示すには不十分なんじゃないかと、、、そこで、規定をちょっと見なおしてみました。

ESSSigningCertificate属性の定義はRFC 2634 Enhanced Security Services for S/MIMEで規定されていますが、暗号アルゴリズムの危殆化に対応するために、その更新差分RFC 5035 Enhanced Security Services (ESS) Update: Adding CertID Algorithm Agilityが出ています。

ESSSigningCertificate(V1)の構造は以下のようになっており

SigningCertificate ::= SEQUENCE {
 certs SEQUENCE OF ESSCertID,
 policies SEQUENCE OF PolicyInformation OPTIONAL
}
ESSCertID ::= SEQUENCE {
 certHash Hash,
 issuerSerial IssuerSerial OPTIONAL
}
IssuerSerial ::= SEQUENCE {
 issuer GeneralNames,
 serialNumber CertificateSerialNumber
}
ESSSigningCertificate(V1)のIssuerSerialの議論はRFC 5035 5.4.1.1節を見ろとのことになっているんですが、 issuerSerialとissuerについて以下のような記述があります。
RFC 5035 5.4.1.1:
issuerSerial
 holds the identification of the certificate. The issuerSerial
 would normally be present unless the value can be inferred from
 other information
(e.g., the sid field of the SignerInfo object).

The fields of IssuerSerial are defined as follows:

issuer
 contains the issuer name of the certificate. For non-attribute
 certificates, the issuer MUST contain only the issuer name from
 the certificate encoded in the directoryName choice of
 GeneralNames. For attribute certificates, the issuer MUST contain
 the issuer name field from the attribute certificate.

つまり、issuerSerialフィールドはオプションなんだけども、ほかに特定できる情報がないなら通常入るもので、属性証明書ならば属性証明書のissuer名のフィールドをissuerに入れなければならない(MUST)と書いてあります。

従って属性証明書である時刻監査証(TAC)をcertHashのハッシュ値だけで参照するのは、この規定に則っていないんじゃないかと思うわけです。(悪いかどうかは別にして、、、)

ここで厄介なのが、時刻監査証(TAC)はタイムスタンプトークンの検証者は一切検証する必要がなくて、時刻配信局(TA)のサービス運用者やタイムスタンプ局(TSA)の監査者だけが検証すればよいものなので、中身を深く観たくないのと、TAC用にissuerSerialを入れてしまうと見た目上 X.509公開鍵証明書への参照と区別がつかないので両方を(属性証明書を扱えないのに)チェックしようとして戸惑う実装が出てくるんじゃないかと危惧される所です。

一昨日も飲みながら話してしまいましたが、時刻配信と時刻精度のトレーサビリティーを保証するために時刻監査証の仕組みはよくできているものですが、タイムスタンプトークンにこれを含めることの意義が未だに理解できず、単にTSA事業者さんがTACに基づく監査結果を定期的にホームページなどで公開すればよくトークンには入れなくてもいいのかな、、、と思うわけです。TACをトークンに含めなければ今回のTACのissuerSerialの問題とか、そのほかにも幾つかある悩ましい問題が解決するんじゃないかと思っています。

てなわけで、規定には沿わないんだけど、現状のままでも仕方ないかとモヤモヤした気持ちのまま寝ることにします。