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

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

5.3 IAIK

5.3.1 概要

ここではIAIK TSP Toolkitのクラスライブラリの構成や各クラスの大まかな機 能を解説する。

IAIK TSPクラスライブラリはTSPの基本的な実装パッケージ(iaik.tsa.asn1) と、それを組み合わせてTSPクライアント、TSPサーバーを実装したパッケージ (iaik.tsa.connections, iaik.tsa.request, iaik.tsa.responseなど)から構成される。

TSPクライアントやTSPサーバーを実装したパッケージに含まれるクラスはそれ だけでほぼ完成したアプリケーションである。

しかし、IAIK TSPに関してはドキュメントがあまり整備されておらず、すぐに

見つかるバグもあるなどまだ開発途中という感が強い。

5.3.1.1 主なクラス

TimeStampClientManager

TimeStampReqの生成を行う。通信を担当するTsaHttpClientや

TsaTcpipClientクラスと連携してTSPクライアントを実現する。サンプルコ ードを参照。

TimeStampServerManager

TimeStampReqを受け取り、TimeStampRespを生成する。通信を担当す るTsaTcpipServerクラスと連携してTSPサーバー(TSA)を実現する。

TsaHttpClient

タイムスタンプ・プロトコルに関する技術調査

TSP over HTTPクライアントの実装。TimeStampClientManagerからコ ールされる、

byte[] sendAndReceiveData(byte[] data)

というメソッドのみのクラス。引数のdataにはDER形式の

TimeStampReqをセットする。returnのbyte[]はこれも、DER形式の

TimeStampRespが返される。サンプルコードを参照。

TsaHttpServerServlet

TSP over HTTPの実装。このクラス単体で完成したサーブレットである。

TsaTcpipClient

TSP over TCPクライアント側実装。TimeStampClientManagerと連携し てTSPクライアントを実現する。

TsaTcpipServer

TSP over TCPサーバー側実装。TimeStampServerManagerと連携して TSP Server(TSA)を実現する。

iaik.tsa.asn1パッケージに含まれるクラス

Accuracy, MessgeImprint, PKIFailureInfo, PKIFreeText, PKIStatus, PKIStatusInfo, TimeStampReq, TimeStamResp, TimeStampToken,

TSTInfo。RFC 3161に規定される各データの実装。ここに含まれるクラスは

RFC 3161の内容を忠実に再現している。

これらを組み合わせて実際のサービスに使うプログラムを作成することに なる。

タイムスタンプ・プロトコルに関する技術調査

iaik.tsa.connectio ns.tcpip TsaTcpIpCli

ent TsaTcpIpSer

ver

iaik.tsa.connectio ns.http TsaHttpClie

nt TsaHttpServ

erServlet iaik.tsa.request

TimeStampCl ientManager

iaik.tsa.response TimeStampSe rverManager

iaik.tsa.asn1

Accuracy TimeStampTo

ken TimeStampRe

sp

MessageImpr int TimeStampRe

q TSTInfo

図 5.3-1パッケージの関連図

5.3.1.2 ダイジェストアルゴリズム

ダイジェストアルゴリズムはiaik.security.mdパッケージに実装されており、

MD2、MD5、RIPEMD128、RIPEMD160、SHA、SHA256、SHA384、SHA512 の実装が提供されている。

5.3.1.3 serialNumberのサイズ

iaik.tsa.asn1.TSTInfo.getSerialNumber()はBigIntegerを返すので、十分な大 きさがある。しかし

iaik.tsa.response.TimeStampServerManager.serial_number_counter_がintで 定義されている。

5.3.1.4 orderingフラグ

iaik.tsa.asn1.TSTInfo.setOrdering(boolean ordering)がある。ドキュメントに このフラグがサーバーの動作に影響を与えるような記述はないので、おそらく何 ら影響は与えないものと思われる。

タイムスタンプ・プロトコルに関する技術調査

5.3.1.5 nonceのサイズ

64bitまでのサイズのnonceを生成し、TimeStampReqに含められることを確 認した。

5.3.1.6 TimeStampTokenの検証

iaik.tsa.utils.TsaUtilクラスに検証用staticメソッドが定義されている。

verfiySignedDataAgainstCertificates、verifySignerInfos、verifyTimeStampReq、 verifyTimeStampResp、verifyTSTInfoメソッドがあり、それぞれSignedData、 SignerInfo、TimeStampReq、TimeStamResp、TSTInfoの検証を行う。

5.3.1.7 サーバー側ポリシーID

TSAサーバーは複数のPolicy IDを保持する必要がある。サーバーをセットア ップするためのプロパティを表現するクラスがiaik.tsa.utils.TsaPropertiesに定 義されているが、このクラスのサーバー側PolicyIDを表すフィールド、

SERVER_POLICY_IDがStringとして定義してある。従って複数のポリシーを 設定することができない。これに関連して、

iaik.tsa.response.TimeStampServerManager.policy_info_も配列ではないため、

複数のポリシーを保持することができない。