いつもXAdES関係でお世話になっているmiyachiさんのところでMicrosoft Office 2010でXAdES署名をするためのレジストリ設定ツールが公開されました。 そういえば、タイムスタンプの扱いについて「ある疑念」があったので、「そうそう試してみよう」とツールを使ってレジストリ設定をしてみたところちょっとうまくいかずに、報告したらソッコーで直して頂いちゃいました。すみませんでした。ありがとうございます。
で、「ある疑念」というのは
Office 2010では、タイムスタンプなんか検証してないし、解釈しようとすらしていないのでは?ということなんです。今日は、これについて実際に試してみました。
検証内容
以下の内容で試してみました。
- テスト1:正常系:信頼するルートを辿って発行された署名タイムスタンプを付与した場合
- テスト2:異常系:信頼するルートを辿れないプライベートCAを辿って発行された署名タイムスタンプ
- テスト3:異常系:時刻が署名時刻と近くないgenTime=2001.01.01であるような署名タイムスタンプ
テスト1、テスト2について
Office 2010の可視署名の機能をつかってパブリックルートの署名者証明書で、Officeに署名してみました。
署名してみると、タイムスタンプ局の証明書(TSA証明書)を発行するCAを信頼していようが、いまいが結果は同じで正しい署名であるかのように表示されます。ついでにタイムスタンプトークンの署名値を改ざんしたりもしてみましたが、やはり結果は同じです。
つまりOffice 2010 betaでは、タイムスタンプトークンの検証は一切行っておらず、不正なタイムスタンプが付与されていたとしても、表示は変わらず有効であるかのように見えてしまうようです。
テスト3
次に、TSA証明書のルートCAを信頼しているテスト用タイムスタンプ局から、genTimeがUTC 2001年1月1日正午であるようなタイムスタンプを発行しこれを署名タイムスタンプとして付与してみました。 付与したタイムスタンプのgenTimeは確かに
GeneralizedTime 01/01/2001 12:00:00 GMTと異常に古い時刻に署名したことになっているはずなのですが、ご覧のように表示上は以下のようになっています。
つまり、タイムスタンプ局の発行する第三者から信頼される署名時刻が署名時刻として表示されるのではなく、PCのローカルの時計を元にした署名時刻のみが表示されるという事になります。また、Officeではどのタイムスタンプ局から発行されたトークンであるのかを知る術がありません。
Office 2010のXAdES機能の問題点
以上の実験からMicrosoft Office 2010のXAdES機能は、以下のような問題があることがわかりました。
- 署名タイムスタンプにより示される信頼できる署名時刻があるにもかかわらず、これは決して表示されることはない。
- それにも関わらずMicrosoft Office 2010の正式版では、署名タイムスタンプが付与されている場合、XAdES-TかXAdES-XかXAdES-XLであると表示されてしまう。XAdESを理解してる利用者は、表示された時刻が信頼できる署名時刻であるかのように誤解してしまうだろう。