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

リクエストおよびレスポンスフォーマット

3 タイムスタンプ・プロトコル(RFC 161)

3.1 RFC 3161

3.1.2 リクエストおよびレスポンスフォーマット

RFC 3161の「2章 TSA」では、クライアント(タイムスタンプ要求者)がTSA とタイムスタンプ・トークンをやりとりするためのメッセージフォーマットを定 義している。

3.1.2.1 リクエストフォーマット

TimeStampReq TimeStampReqはタイムスタンプ要求者が生成しTSAに送られる。

VERSION タイムスタンプ・リクエストのバージョン(現在は

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

1)

MessageImprint タイムスタンプが押されるデータ(ハッシュ値)

ReqPolicy OPTIONAL 要求するTSAポリシー。

Nonce OPTIONAL 信頼できるローカルクロックがない場合に、適時

性検証のために使われる乱数。タイムスタンプ要 求者によって生成される。

CertReq タイムスタンプ・レスポンス(TimeStampResp)に、

TSAの公開鍵証明書を含めることを要求するフラ グ。TRUEの場合は、CMS SignedDatacertificates TSA証明書が含まれなければならない。省略あ るいはFLASEの場合、certificatesTSA証明書が含 まれてはならない。

Extensions OPTIONAL 追加情報のためのフィールド。現在は定義されて

いない。

-- 2.4.1

TimeStampReq ::= SEQUENCE {

version INTEGER { v1(1) }, messageImprint MessageImprint,

--a hash algorithm OID and the hash value of the data to be --time-stamped

reqPolicy TSAPolicyId OPTIONAL, nonce INTEGER OPTIONAL, certReq BOOLEAN DEFAULT FALSE, extensions [0] IMPLICIT Extensions OPTIONAL } TSAPolicyId ::= OBJECT IDENTIFIER

MessageImprint タイムスタンプすることが要求されたデータのハッシュ値、あるいはタイ

ムスタンプされたデータを含んでいる。ハッシュに使用されるアルゴリズ ムは十分な耐衝突性をもつものでなければならない。ハッシュ値の長さは 使用されたアルゴリズムが予期する長さと一致しなければならない。

HashAlgorithm ハッシュに使用されたアルゴリズム

HashedMessage ハッシュ値

MessageImprint ::= SEQUENCE {

hashAlgorithm AlgorithmIdentifier, hashedMessage OCTET STRING }

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

3.1.2.2 レスポンスフォーマット

TimeStampResp TimeStampReq に対するレスポンスとしてTSAによって生成される。タイム スタンプ・リクエストが受け入れられタイムスタンプ・トークンが発行さ れた場合は、タイムスタンプ・トークンをCMSでカプセル化したものがタ イムスタンプ・レスポンスに含まれる。

TimeStampToken OPTIONAL CMSでカプセル化されたタイムスタンプ・ト ークン。Status01の場合は存在し、それ 以外の場合は存在してはならない。

Status タイムスタンプ・リクエストの処理ステータ

スを示す。

StatusString OPTIONAL 理由のテキストデータを含む。

FailInfo OPTIONAL タイムスタンプ・トークンがタイムスタン

プ・レスポンスに含まれない場合に、タイム スタンプ・リクエストが棄却された理由を示 す。

-- 2.4.2

TimeStampResp ::= SEQUENCE {

status PKIStatusInfo,

timeStampToken TimeStampToken OPTIONAL }

-- The status is based on the definition of status -- in section 3.2.3 of [RFC2510]

PKIStatusInfo ::= SEQUENCE { status PKIStatus,

statusString PKIFreeText OPTIONAL, failInfo PKIFailureInfo OPTIONAL }

PKIStatus ::= INTEGER { granted (0),

-- when the PKIStatus contains the value zero a TimeStampToken, as requested, is present.

grantedWithMods (1),

-- when the PKIStatus contains the value one a TimeStampToken, with modifications, is present.

rejection (2), waiting (3), revocationWarning (4),

-- this message contains a warning that a revocation is -- imminent

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

revocationNotification (5)

-- notification that a revocation has occurred }

-- When the TimeStampToken is not present -- failInfo indicates the reason why the -- time-stamp request was rejected and -- may be one of the following values.

PKIFailureInfo ::= BIT STRING {

badAlg (0), -- unrecognized or unsupported Algorithm Identifier badRequest (2), -- transaction not permitted or supported

badDataFormat (5), -- the data submitted has the wrong format timeNotAvailable (14), -- the TSA's time source is not available

unacceptedPolicy (15), -- the requested TSA policy is not supported by the TSA.

unacceptedExtension (16), -- the requested extension is not supported by the TSA.

addInfoNotAvailable (17) -- the additional information requested could not be understood

-- or is not available

systemFailure (25) -- the request cannot be handled due to system failure }

from RFC2510:

PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String

-- text encoded as UTF-8 String (note: each UTF8String SHOULD -- include an RFC 1766 language tag to indicate the language -- of the contained text)

TimeStampToken

TimeStampReq が妥当でTSAに受け入れられた場合、TSAによって発行され る。TimeStampToken contntInfo 形式であり、その content CMS SignedData としてカプセル化されなければならない。

TimeStampToken ::= ContentInfo

-- contentType is id-signedData as defined in [CMS]

-- content is SignedData as defined in([CMS]) -- eContentType within SignedData is id-ct-TSTInfo -- eContent within SignedData is TSTInfo

CMS SignedData タイムスタンプ・トークンは、CMS SignedData 型のデータであり、contentInfo にカプセル化される。

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

CMS SignedData(s, t ) データTを、署名者Sが CMS SignedData 形式で署名 を行う。

・ singedData.eContentType id-ct-TSTInfoがセット される。

・ TSTInfo DER9エンコードされて eContentに含 められる(SHALL)

・ TimeStampReq certReq フィールドが TRUE 場合、TSA証明書が signedData.certificatesフィール ドに含まれなければならない(MUST)。その場合、

cerificatesフィールドにはその他の証明書が含まれ るかもしれない(may)

・ certReqフィールドが存在しないか、FALSEの場合、

certificatesフィールドは存在してはならない (MUST not)

・ signedData.signerInfo にはTSAの署名以外は含めて はならない(MUST NOT)

・ signerInfo.signedAttrs signingCertificate として ESSCertID(TSA証明書識別子)を含めなければなら ない(MUST)

TSTInfo

Version タイムスタンプ・トークンのバージョン(現在は1)。

Policy タイムスタンプ・トークンが発行されたTSAポリシ

ー。タイムスタンプ・リクエストの中に同様のフィ ールドがある場合は、それと同じ値でなければなら ない。

MessageImprint タイムスタンプされたデータ。タイムスタンプ・リ

クエストに含まれている同様のフィールドと同じ 値を含まなければならない。

9 Distiguished Encoding Rule. [X.690]において定義されているASN.1のエンコーディング規則

の一種。エンコードされたバイナリデータの一意性を実現できるため、デジタル署名のエンコー ディング規則としてよく用いられる。

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

SerialNumber TSAによってタイムスタンプ・トークンに割り振ら

れた一意な番号。

GenTime タイムスタンプ・トークンが生成された時間。ロー

カルな時間値でなくUTC時間を使用しなければな らない。

Accuracy OPTIONAL GenTimeからの誤差。

Ordering GenTime を用いてタイムスタンプ・トークンがソ

ート可能かどうかを示す。

Nonce OPTIONAL タイムスタンプ要求者がタイムスタンプ・レスポン

スの適時性を検証するために使用する。タイムスタ ンプ・リクエストに同様のフィールドが含まれてい る場合は、その値と同じものが含まれなければなら ない。

Tsa OPTIONAL TSAの名前を識別するための情報。存在する場合

は、TSA公開鍵証明書中の subject 情報のいずれか と一致しなければならない。

Extensions OPTIONAL 追加の情報のための拡張フィールド。現在は定義さ

れていない。

TSTInfo ::= SEQUENCE {

version INTEGER { v1(1) }, policy TSAPolicyId,

messageImprint MessageImprint,

-- MUST have the same value as the similar field in -- TimeStampReq

serialNumber INTEGER,

-- Time-Stamping users MUST be ready to accommodate integers -- up to 160 bits.

genTime GeneralizedTime,

accuracy Accuracy OPTIONAL, ordering BOOLEAN DEFAULT FALSE, nonce INTEGER OPTIONAL, -- MUST be present if the similar field was present

-- in TimeStampReq. In that case it MUST have the same value.

tsa [0] GeneralName OPTIONAL, extensions [1] IMPLICIT Extensions OPTIONAL }

GenTime タイムスタンプ・トークンがTSAによって生成された時間である。ローカル時間

をつかうことによる混乱を避けるためUTC時間(協定世界時)で表現される。

GenTime GeneralizedTime

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

秒未満の精度の端数を含めることができる。

秒の値はふくめられなければならない。

秒以下の精度が必要とされない場合、’Z’ で終わらなけ ればならない。

端数が存在する場合は ‘.’ でポイントされなければな らない。

端数エレメントの後尾の0は省略されなければならな い。

端数エレメントが0を表す場合は、’.’ も省略されなけ ればならない。

Accuracy

Accuracy は、GeneralizedTime で表される GenTime と実際のタイムスタンプ・

トークンの生成時刻との間の誤差を表す。GenTime にAccuracyの値を加えること によってタイムスタンプ・トークン生成時間の上限(最遅時刻)、GenTimeから Accuracyの値を引くことによって下限(最早時刻)を得ることができる。

Accuracy ::= SEQUENCE {

seconds INTEGER OPTIONAL, millis [0] INTEGER (1..999) OPTIONAL, micros [1] INTEGER (1..999) OPTIONAL }

Ordering 同じTSAが生成したタイムスタンプ・トークンを、GenTimeによって並べること

ができるかどうかが示される。このフィールドが無いか、FALSE がセットされ ている場合は、GenTimeはTSAによってタイムスタンプ・トークンが生成された 時間のみを示し、その値によっておのおののタイムスタンプ・トークンが正しく 並べられることを保証しない。このフィールドが存在しTRUEがセットされるな ら、おなじTSAからのすべてのタイムスタンプ・トークンはGenTimeをもとに正 しく並べることができる。

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