• 検索結果がありません。

各開発ツールキットの比較

5 タイムスタンプに関連した実装

5.4 各開発ツールキットの比較

タイムスタンプ・プロトコルを利用するクライアントアプリケーションの構成 要素は機能別に次のように分類できる。

1. 要求を生成

データのハッシュ値を生成し、必要なパラメータをもつデータ構造に セットする。

2. サーバーと通信

1.で生成したデータを、決められたプロトコルでサーバーに送り、応 答を得る。

3. TSTを構築

2.で獲得した応答を検証し、可能であれば(正常であれば)TSTを構築 する。

4. TSTを検証

3.で構築したTSTが正当なものであるかどうか検証する。

5. TSTを利用

最終的に、TSTを保存し、ユーザーに見える形で表示する、他のTST と比較してどちらが早い時期に生成されたかを検証するなど。

今まで紹介したプロダクトでは1から3までの機能を実装する際にはDER形式 を意識する必要があるような、低レベルな部分はほとんど抽象化されており、ア プリケーション実装者はAPIのみに注目してアプリケーションを実装することが できる。しかし4の「TSTを検証」、5の「TSTを利用」する部分の実装にあたっ てはAPIはプリミティブなデータへのアクセス方法しか提供しておらず、そのデ ータが正しいのか、また、何を意味しているのかを知るためにはAPI以外の様々 な知識が必要とされる。このような状況にあるのは現状ではまだ明確な使われ方 が見えていないためであるとも考えられ、今後充実してくるものと思われる。

プロトコルの抽象化のレベルは各プロダクトで少しずつ違っていて、抽象化レ ベルが高ければそれだけ比較的容易に、プロトコルの詳細を知らなくてもアプリ ケーションを作成可能であるといえる。逆に細かい調整がやりにくいという欠点 もあるが、タイムスタンプ・プロトコルを使うクライアントアプリケーションに ついては、プロトコルレベルの細かい調整が必要になる局面というのはあまり考 えられない。

例えば、nonceの値をアプリケーションから設定するAPIが解放されているよ

りも、何もセットしなくてもnonceがついた状態でサーバーにデータが送信され、

返ってきたnonceとの比較もAPIの内部で行ってくれていた方がAPIをみてアプ

今まで紹介したOpenTSA、OpenEvidence、IAIK TSPクラスライブラリはク ライアントとサーバーを含めた、TSPを利用するサービスを構築するためのソフ トウェアである。それに対しDigiStamp Developer

Toolkit(http://www.digistamp.com/)は DigiStampが運用するタイムスタンプサ ーバーと通信してタイムスタンプを発行してもらうための、クライアントを作成 するためのライブラリ(C++、Java、C)であり、サーバーを構築するためのAPI は含まれていない。比較的アプリケーションよりのライブラリで、例えばTSTInfo のgenTimeを取得する際、IAIK TSPではTSTInfo.getGenTime()がStringを返 すのに対し、DigiStampではTstInfo.getGeneralizedTime()がjava.util.Calendar を返す。

表 5.4-1プロダクトの特徴

言語 ソース提供 ライブラリドキュメント

OpenTSA C ×

IAIK TSP Java ×

Open Evidence C (作成中)

DigiStamp C,C++,Java ×

Di gi St amp

OpenEvi denc e

I AI K  TSA

OpenTSA

高抽象度

多機能 図 5.4-1プロダクトの抽象度と機能

OpenEvidenceは、RFC 3161を実装した部分と標準とは別の仕様に基づいた実 装が混在している。全体としてみると多機能、高抽象度を持っていると言えるの だが、標準に関連した部分のみに注目すると図5.4-1のような位置にあると考えら れる。

タイムスタンプ・プロトコルを使ったアプリケーションを開発するための開発 ツールキットとして現状のタイムスタンプに関連した実装をみると、自然言語で

書かれたプロトコルをプログラミング言語に翻訳したといったレベルのプリミテ ィブな実装が多い。比較的高レベルといえるDigiStampの実装でも、例えばnonce に関しては単にTsRequest.setNonce()とTstInfo.getNonce()が用意されているだ けで扱いについて特に記述されてはいない。このためアプリケーションがnonce の値をセットあるいは検証する必要がある。accuracyについても同様であり、解 釈をアプリケーションプログラマに委ねている。

つまり、タイムスタンプ・プロトコルに詳しくない開発者が、開発ツールキッ トとして用意された各種アプリケーションやライブラリをインストールし、そこ に書かれたドキュメントに従ってクライアントアプリケーションを実装した場合、

相互に通信は可能だが、フィールドの解釈の違いや誤りなどにより同じデータか ら異なった意味を読み取る実装が出てきてしまう可能性が高いといえる。現在提 供されている環境を利用するためにはタイムスタンプ・プロトコルに対する十分 な知識と注意が必要である。