4 タイムスタンプに関連した仕様と標準化動向
4.4 RFC 3029 Data Validation and Certification Server Protocols (IETF)
4.4.4 リクエストとレスポンス
DVCSリクエストのフォーマットはCMS(RFC3369:旧 RFC2630) [CMS]で定 義されているContentInfoである。ContentInfoのcontentTypeには以下のOID が指定される。
id-ct-DVCSRequestData OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 7}
ContentInfoのcontentは以下で定義されるDVCSRequestである。
DVCSRequest ::= SEQUENCE {
requestInformation DVCSRequestInformation, data Data,
transactionIdentifier GeneralName OPTIONAL }
DVCSRequestはリクエストに関する情報を表すrequestInformation、認証を 行う対象データであるdataから構成され、オプションとしてリクエストのIDを 表すtransactionIdentifierを指定することができる。
DVCSリクエストは、機密性や認証を提供するために、他のcontentTypeによ ってカプセル化することができる。例えば、DVCSリクエストに署名を施す場合 は、CMS SingedDataを使用し、SingedDataにおけるeContentTypeに
id-ct-DVCSRequestDataを、eContentにDVCSRequestData構造を与えること
ができる。署名付きDVCSリクエストの構造を図 4.4-2に示す。
ContentInfo
contentType(OID)=id-signedData content(SignedData)
version
digestAlgorithms
encapContentInfo(EncapsulatedContentInfo) eContentType(OID)=id-ct-DVCSRequestData eContent(DVCSRequest)
requestInformation(DVCSRequestInformation)
data (Data) = {message | messageImprint | certs}
message (OCTET STRING)?
dvcs (GeneralNames)?
dataLocations (GeneralNames)?
genTime(GeneralTime)?
timeStampToken(TimeStampToken)?
requester (GeneralNames)?
requestPolicy (PolicyInformation)?
transactionIdentifier(GeneralName) messageImprint (DigestInfo)?
digestAlgorithm(DigestAlgorithmIdentifier) digest(Digest)
target(CertEtcToken)={certificate|esscertid|pkistatus|assertion|crl|ocspcertstatus |ocspcertid|ocspresponse|capabilities|extesion}
pathProcInput(PathProcInput) chain(CertEtcToken)+
oc spc ertid(C ertId)?
oc spreponse(OC S P R esponse)?
c apabilities(S MIME C apabilities)?
version
service={cpd(1)|vsd(2)|cpkc(3)|ccpd(4)}
nonce?
requestTime={genTime| timeStampToken}
extensions (Extensions)?
essc ertid(E S S C ertId)?
pkistatus(P KIS tatusInfo)?
certs(TargetEtcChain)*
oc spc ertstatus(C ertS taus)?
extension(E xtension)?
c ertific ate (C ertific ate)?
assertion(C ontentInfo)?
c rl(C ertic ateL ist)?
図 4.4-2DVCSリクエスト(署名付)
表 4.4-1図の表記方法を表 4.4-1に示す。
表 4.4-1ASN.1構造図の表記方法
表記 説明
X(Y)=Z 属性名X、型Y、値Z
? 0個または、1個現れることを示す。
* 0個以上現れることを示す。
+ 1個以上現れることを示す。
{A | B} AまたはBのいずれかをとる。
requestInformationはリクエストに関する一般的な表している。
requestInformation.versionは1を指定するか、versionの項目自体が存在しない かのいずれかである。requestInformation.serviceはリクエストの種類を表し、
cpd,vsd,vpkc,ccpdのいずれかを表す値である。
vsd,vpkcのサービスではオプションとして、署名文書が有効であると主張する
時刻をrequestTimeフィールドで指定することができる。vsd,vpkc以外のサービ スではこのフィールドは無視される。時刻はGeneralizedTimeあるいはTSAから 発行されたTimeStampToken[TSP]を指定することができる。この指定を諸略し た場合は現時刻とみなされる。
DVCSRequestのDataはサービスに応じて、署名文書(vsd)、証明書チェーン (vpkc)、メッセージダイジェスト(ccpd)、任意のデータ(cpd)が置かれる。
4.4.4.2 DVCSレスポンス
DVCSレスポンスは、DVCSがデータや署名の検証を実施した結果として作成 する応答メッセージである。
DVCSレスポンスはCMS[CMS]のContentInfoであり、contentTypeには以下 のOIDを指定する。
id-ct-DVCSResponseData OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 8 }
contentは次に定義されるDVCSResponseである。
DVCSResponse ::= CHOICE {
dvCertInfo DVCSCertInfo ,
dvErrorNote [0] DVCSErrorNotice }
DVCSはデータ認証や署名検証が正しく実施された場合には、DVCを
DVCSResponseに含め、実施に失敗した場合にはDVCを発行せずエラーのみを
DVCResponseに含める。
DVCSレスポンスは機密性や認証を提供するために、他のcontentTypeによっ てカプセル化することができる。図 4.4-3は署名付きDVCSレスポンス
(SignedDataによるカプセル化)のデータ構造である。
extensions?
dvErrorNote(DVCSErrorNotice)?
transactionStatus(PKIStatusInfo) status( PKIS tatus) =rejec tion(2) statusString(PKIFreeText)?
failInfo(PKIFailureInfo)={badRequest(2)|badTime(3)|badDataFormat(5)|
wrongAuthority(6)|incorrectData(7)} ? transactionIdentifier(GeneralName)?
dvStatus(PKIStatusInfo)?
policy(PolicyInformation)?
reqSignature(SignerInfos)?
certs(TargetEtcChain)*
serialNumber
responseTime(DVCSTime) genT ime( GenenalT ime) ?
timeStampToken(TimeStampToken)?
dataLocations(GeneralNames)?
extensions?
messageImprint(DigestInfo)
digestAlgorithm(DigestAlgorithmIdentifier) digest(Digest)
version
digestAlgorithms
enc apC ontentInfo( Enc apsulatedC ontentInfo) C ontentInfo
c ontentT ype=id- signedData c ontent=S ignedData
eC ontentT ype( C ontentT ype) =id- c t- DVC S ResponseData eContent(DVCSRespose)={dvCertInfo | dvErrorNote}
dvCertInfo(DVCSCertInfo)?
version=1
dvReqInfo(DVCSRequestInformation)
timeStampToken(TimeStampToken)?
requester(GeneralNames)?
requestPolicy(PolicyImformation)?
dvcs(GeneralNames)?
c ertific ates?
c rls?
sinerInfos version=1
servic e={c pd(1) |vsd( 2) |c pkc ( 3) |c c pd(4) } nonc e?
requestT ime( DVC S T ime) ={genT ime | timeS tampT oken }?
genT ime( GenenalT ime) ?
図 4.4-3DVCSレスポンス(署名付)
dvCertInfo.responseTimeは応答に関する時刻であり、GeneralizedTime、 TimeStampToken、外部のサービスによって得られたDVCのいずれかを含めるこ とができる。
dvStatusフィールドは検証結果を表す。例えば、公開鍵証明書の検証 (vpkc) サ
たは一部の証明書の検証が失敗に終わった場合にはFAILEDが示される。各証明 書の検証結果はcertsフィールドの個々の要素によって示される。
4.4.4.3 データ検証証明書(DVC)
DVCはデータ検証の結果や、元となるリクエストなどの情報を含む署名データ である。
DVCはdvCertInfoが選択されたDVCSResponseを含むCMS SignedDataで ある。データ構造は図 4.4-3においてdvErrorNoteのCHOICEを除いたもので ある。