つい先日、MさんのTLで中国のタイムスタンプサービスのURLがあって、面白そうだからいろいろ調べてみました。UniTrust Time Stamp Authority(http://www.tsa.cn/)というのだそうです。
タイムスタンプサービスとは
例えば何か発明した時に、自分の発明の方が先だったとかテキストメモで書いたりしたとしても、パソコンの時間は自由に変更できますし、テキストメモの内容だって自由に変更できちゃいますから証明するの難しいですよね。そんな時、タイムスタンプサービスが発行してくれるデジタルタイムスタンプ使うと「ある時点にそのデータが存在してて、それ以降変更されてないこと」を証明することができます。
デジタル署名も証明書が有効だった「時」に署名された事がわからないと困るので、特にデータを保管する際には「デジタル署名にはデジタルタイムスタンプをつけましょう」というのが定石になっています。
日本ではタイムスタンプサービスをタイムビジネス協議会が普及促進をしていて、米国、欧州、アジアの幾つかの国でもこのようなサービスが始まっています。
で、tsa.cnはどうなの?
中国語は全く読めないんですが、
- 画像やデータをスマホからアップしてタイムスタンプをつけたりするAndroidアプリも充実
- Windows用デスクトップアプリも提供
- タイムスタンプつき文書をオンラインで検証できるページもある
- 値段は1タイムスタンプ10元(160円)?
タイムスタンプの取得方法ですが、http://timestamp.tsa.cn/tsa がRFC 3161 over HTTPで取得するためのURLになっているようでBasic認証で取得するみたいです。 Basic認証なのにHTTPSじゃなくていいのかな?tsa.cnではHTTPSのページは一切無いように見えます。
マニュアルなどのドキュメントは署名タイムスタンプつきPDF署名(PAdES-Tフォーマット)になっているようで 署名やタイムスタンプや証明書などを取り出して見てみました。
興味深いところはこんなとこです。
- タイムスタンプトークンについて
- タイムスタンプ局のポリシが公開されていないようだ
- トークンのTSA Policyは1.3.6.1.4.1.8291.1.1になっており米国Digistamp社の OIDになっている。OEMかもしれないし、単にOIDをパクってきただけなのかもしれない。
- genTimeはミリ秒まで対応している
- ordering=True
- トークンへの署名アルゴリズムはSHA1withRSA
- トークンのCMS SignedDataにはSigningTime属性が入っている。tSTInfoに時刻が含まれるのでSigningTimeは含めない方がよい
- TSA証明書について
- ルートは"O=China Time-Stamp Authority, CN=China TSA Root"、2048bit RSA、SHA1withRSA
- TSA証明書は"O=China Time-Stamp Authority, CN=China TSA"、2048bit RSA、SHA1withRSA
- TSA署名書にはCRLDP拡張が無い
- PDF署名に使った署名者用証明書について
- これは面白いところが満載
- シリアル番号が負の値になっている。(RFC 5280的にNG)
- 自己署名証明書
- DNはCN=UniTrust, O=beijing unitrust, OU=, E=unitrust@unitrust.com.cn, C=<无
- CNがUTF8の中国語になっている。本来なら"CN=cn" (RFC 5280的にNG)
- OUの値が長さ0 (RFC 5280的にNG)
- 不明の拡張がある1.2.840.113583.1.1.10。これ自体はAdobe社のOID
- 普通はこのような証明書は発行できないので、独自のエンコーダーを使った CAアプリがあるのではと想像する。
アカウントを取っていろいろ調べて見ようともしているんですが、 アカウントの取り方がわかりそうになく断念してしまいました。今日はこの辺で。




