view Side-By-Side changes
PKIX Working GroupR. Zuccherato(Entrust Technologies)expires in six monthsSeptember 23, 1998July 12, 1999 Internet X.509 Public Key Infrastructure Data Certification Server Protocols<draft-ietf-pkix-dcs-00.txt><draft-ietf-pkix-dcs-01.txt> Status of this Memo This document is anInternet-Draft.Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."To learn the current statusThe list ofany Internet-Draft, please check the "1id-abstracts.txt" listing contained in thecurrent Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directorieson ftp.is.co.za (Africa), ftp.nordu.net (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast).can be accessed at http://www.ietf.org/shadow.html. Abstract This document describes a general data certification service and the protocols to be used when communicating with it. The Data Certification Server is a Trusted Third Party (TTP) that can be used as one component in building reliable non-repudiation services (see [ISONR]). Useful Data Certification Server responsibilities in a PKI are to validate signatures and to provide up-to-date information regarding the status of public key certificates. We give examples of how to use the Data Certification Server to extend the lifetime of a signature beyond key expiry or revocation and to query the Data Certification Server regarding the status of a public key certificate. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT","RECOMMENDED","RECO6MMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. Adams, Sylvester, Zuccherato [Page 1] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 1. Introduction A Data Certification Server (DCS) is a Trusted Third Party thatverifiesprovides an assertion of thecorrectnessusability ofspecificthe datasubmittedtransmitted to it. The assertion may be providing a time stamp, a validation of a public key certification or a signed document. The Data Certification Server provides the data certification service in order thatnon-repudiationnon-repudiability evidence may be constructed relating to the validity and correctness of an entity's claim to possess data, the validity and revocation status of an entity's public key certificate and/or the validity and correctness of another entity's signature. When certifying possession of data or another entity's signature, the DCSDocument Expiration: March 23, 1999 Page 1verifies the mathematical correctness of the actual signature value contained in the request and also checks the full certification path from the signing entity to a trusted point (e.g., the DCS's CA, or the root CA in a hierarchy). The DCS MAY be able to rely on all relevant CRLs and ARLs, or the DCS MAY need to supplement this with access to more current status information from the CA. It then includes a trusted time and creates a data certification token. (See Appendix B.) When certifying a public key certificate, the DCS verifies that the certificate included in the request is a valid certificate and determines its revocation status at a specified time. Again, it checks the full certification path from the certificate signing entity to a trusted point. The DCS MAY be able to rely on all relevant CRLs and ARLs, or the DCS MAY need to supplement this with access to more current status information from the CA. It includes this information, along with a trusted time, to create a Data Certification Token. (See Appendix C.) The presence of a data certification token supports non-repudiation in two ways. It provides evidence that a signature or public key certificate was valid at the time indicated in the token. The token can be used even after the corresponding public key certificate expires and its revocation information is no longer available on CRLs (for example). The production of a data certification token in response to a signed request for certification of another signature or public key certificate also provides evidence that due diligence was performed by the requester in validating the signature or public key certificate.It isDCS does notrecommended thatreplace theDCS be used as a substituteusage of CRLs and OCSP fornormalpublic key certificate revocation checking(e.g. CRLs, OCSP)in large open environments, due to Adams, Sylvester, Zuccherato [Page 2] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 concerns about the scalability of this protocol. It should only be used to support non-repudiation or to supplement more traditional revocation services when more timely information is required. An important application of DCS is an enterprise environment where all security decision are based on company wide rules. A company wide DCS service can be used to delegate all technical decisions (e.g., path validation, trust configuration) to a centrally managed service. In all cases, the trust that PKI entities have in the Data Certification Server is transferred to the contents of the data certification token (just as trust in a CA is transferred to the public key certificates that it issues). Asaparticularexample,examples, a data certification token pertaining to a signature may be useful for extending the life of that signature beyond the expiry or subsequent revocation of its corresponding verificationcertificate.certificate; and including a DCS response as an authenticated attribute in a signature allows to include an additional attestion about the usability of a certificate to be used for signing. It is outside the scope of this document to describe different operational scenarios, or usages for DCS. This document describes basic services and protocols. 2. Requirements of the Data Certification Server The Data Certification Server Protocols can be used in different service contexts. Examples include company wide centralised data validation services (verification of signatures, certification of of company certificates), service to cooperate in a multi-organisation community, or general third party services for time stamping or data archival. The Data Certification Server is REQUIRED to: 1. verify the correctness of the enclosed digital signature (according to [RFC2459]) using all appropriate status information and public key certificates and produce a signed data certification tokenattesting tocertifying the validity of the signature, if asked by the requester. 2. verify the validity (according to[CCP])[RFC2459]) oftheone or more enclosed public keycertificatecertificates anditstheir revocation status at the specified time using all appropriate statusinformationinformation, and/or other external services (including DCS and OCSP) and public key certificates and produce a signed data certification tokenattesting tocertifying the validity and revocation status of the publicDocument Expiration: March 23,Adams, Sylvester, Zuccherato [Page 3] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999Page 2key certificate, if asked by the requester. 3. include a monotonicallyincrementing value of theincreasing time of day value or a time stamp token into its data certification token. 4. include within each signed data certification token an identifier touniquelydetermine the trust and validation policy used for this signature. 5. sign each data certification token using a key generated exclusively for this purpose and have this property of the key indicated on the corresponding public key certificate. 6. indicate in the token whether or not the signature or public keycertificatecertificate(s) was verified, and if not, the reason the verification failed. 7. provide a signed receipt (i.e., in the form of an appropriately defined data certification token) to the requester, where appropriate, as defined by policy.3. Data Certification Server Transactions AsThe DCS service definition and thefirst transaction of this mechanism,policy defines how much information that have been used by therequesting entity requests aDCS service to determine the response status, e.g., public key certificates, OCSP and DCS responses will be included in a DCS Token. The [TSA] defines additional requirements: The DCS protocols can be used as a replacement for the services defined in [TSA], in this case the requirements of [TSA] apply to that service. A DCS service may be combined with or use archiving and logging systems, in order to serve as a strong building block in non- repudiation services. 3. Data Certification Server Transactions As the first transaction of this mechanism, the requesting entity requests a certification by sending arequest (which is or includes adata certificationrequest,request as definedbelow),below, including the data for which validity and/or possession is to be certified, to the Data Certification Server. Upon receiving the request, the Data Certification Server reviews and checks the validity of the request. A valid request is of the formdescribeddecribed later inSection 5 ofthis document, can be properly decoded, and is from a supported Data Certification Serversubscriber.subscriber (in case when signed requests are required). If the request is valid, the Data Certification Server performsthe certificationall necessary validations in order to create a certification, and sends a response (which is or includes a data certification token, as defined Adams, Sylvester, Zuccherato [Page 4] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 below) to the requesting entity. Otherwise, the Data Certification Server returns an error message (i.e., in the form of an appropriately defined data certification token). Upon receiving the token, the requesting entity verifies its validity. The requester SHOULD verify that it contains the correct time, the correct name for the DCS, the correct data imprint, a valid signature, and satisfactory status, service and policy fields.Since theA DCS's certificate may have beenrevoked,revoked. It is up to theappropriate status information SHOULD be checkedlocal application to verifythat thewhether or not a DCS certificate is still valid. Depending on the usage environment (e.g. organisation's central trust point or global time stamp authority) different methods (online or out of band, or CRLs) need to be used. The token can now be used to authenticate the correctness or possession of the corresponding data. 4. Identification of the DCS The DCS MUST sign all data certification messages with a key reservedspecificallyexplicitely for that purpose. The corresponding certificate MUST contain the extended key usage field extension as defined in[CCP][RFC2459] Section 4.2.1.14 with KeyPurposeID having value id-kp-dcs. This extension MUST be critical. id-kp-dcs OBJECT IDENTIFIER ::= {id-kp??} -- Certifying the validity of certain information. KeyX} Consistent key usagebits -- that may be consistent:bits: digitalSignature, nonRepudiationDocument Expiration: March 23, 1999 Page 3 5. Request and Token Formats The ServiceType type indicates which typeA DCS's certificate MAY contain an Authority Information Access extension [RFC2459] in order to convey the method ofData Certification Server service is required. ServiceTypecontacting the DCS. The accessMethod field in this extension MUST contain the OID id-ad-dcs: id-ad OBJECT IDENTIFIER ::=INTEGER{cpd(1), cs(2), cpkc(3)id-pkix 48 } id-ad-dcs OBJECT IDENTIFIER ::= { id-ad X } The valuecpd (Certify Possession of Data) is used when only the signature on the data certification request (i.e., possessionof thedata inaccessLocation field defines therequest) istransport (e.g. an URL) used tobe verified. In this caseaccess the DCS. 5. Service and DataCertification Server would be merely providing evidence that theTypes A DCS MAY support any subset of the following services: Certify Possession of Data, Certify Signature, Certify Public Key Certificate The Certify Possession of Data service provides evidence that the requester possessedthedatain the request and a valid signature keyor that data existed at the timeindicated. This is really an extension of the Time Stamp Authority [TSA]indicated Adams, Sylvester, Zuccherato [Page 5] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 inthat we are given the additional assurance about the validity of the signature, as well asthe request/response. A timebefore which it was applied.stamping services as described in [TSA] is a subset of this service. Thevalue cs (Certify Signature)Certify Signature service is used when another entity's signature is to be validated. The resulting token can then be used to support non-repudiationservices orservices, to allow use of the signature beyond public key certificate revocation orexpiry.expiry, or simply to delegate signature validation to a trusted central service. Thevalue cpkc (CertifyCertify Public KeyCertificate)Certificate service is used when the validityand revocation statusoftheone or more public key certificatesincluded in the request areis to be verified. This service can be usedto supplement the use of CRLswhen timely information regarding a certificate's revocation state is required (e.g. high value funds transfer or the compromise of a highly sensitive key) or when evidence supporting non-repudiation is required.A given DCS MAY support any subsetThe response of theabove services. Upon receivingvalidation of asigned requestcertificate containing a public key to be used foreitherencryption may contain additional certificates to be used as a simple method to encrypt data or a session key for additional authorised entities (e.g., company key recovery). DCS servicecsrequests MAY be signed orcpkcunsigned depending on theDCS MUST also verifyconfiguration and thesignature onservice that is to be provided. Some data types occur in several places in a request and/or a response: - MessageImprint: If the requestas is done forcontains a digest of some data, thecpd service. Note however, that signed requestsCertify Possession of Data service can be requested for a message imprint. Reponses include a MessageImprint of thecs or cpkc service are not required. Adatacertification request is as follows. It is encapsulated asreceived in order to allow to validate the correspondance to a request. - Message: For a CMS SignedDataconstruct [CMS]. The content is ofmessage, either the Certify Signature service or the Certify Possession of Data service can be requested. For other known data types, Certify Possession of Data service can be requested. The DCS may perform additional validation on the content of data. - Certificates: The request contains a list of public key certificates, certificate validation chains and policy requirements, The Certify Public Key Certificate service can be requested. Adams, Sylvester, Zuccherato [Page 6] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 - Nonce: A request and a response may include a nonce in order to minimize some replay attacks. - CertIds: As a replacement for certificates, certification identifier MAY be used. There are actually two types imported from OCSP and from S/MIME ESS. Signatures made by the DCS MUST include an ESS signing certificate attribute. Requests and responses of the public key certificate validation MAY contain certificates, OCSP and S/MIME ESS certificate identifiers. - TimeStamps Indicators of time occur in requests and responses. In the most simple form, they are represented as GeneralizedTime. Fractions of seconds are allowed. The alternate form is a TimeStamping token, either from [TSA] or as a DCS token. 6. Request and Token Format A data certification request is a SignedData construct of [CMS] or [PKCS7]. The contenttype indicated in the eContentType of the encapContentInfo is of typeDCSReqData. DCSRequest ContentInfoid-ct-DCSReqData signalling a DCSReqData as eContent of the encapContentInfo (carried as an octet string). id-ct-DCSReqData OBJECT IDENTIFIER ::= {id-ct ??} with: id-ct OBJECT IDENTIFIER ::=SEQUENCE{contentTypeid-smime 1 } id-smime OBJECTIDENTIFIER, --{pkcs-7 2}, SignedData content [0]IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) 16 } A data certification request MAY contain several SignerInfo structures, and countersignature attributes depending on operational environments. In a normal end user situation (or an application that initially creates a DCS request, there is normally one or zero occurences of SignerInfo. DCSReqData ::= SEQUENCE {version INTEGER, digestAlgorithms AlgorithmIdentifier, contentInfodcsReqInfo DCSReqInfo, Adams, Sylvester, Zuccherato [Page 7] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 data Data , requestIdentifier GeneralName OPTIONAL } The dcsReqInfo field contains information pertaining to the data certification request. DCSReqInfo ::= SEQUENCE {contentTypeversion Integer { v1(0) }, service ServiceType, requester [0] GeneralNames OPTIONAL, reqPolicy [1] PolicyInformation OPTIONAL, dcs [2] GeneralNames OPTIONAL, dataLocator [3] GeneralName OPTIONAL, nonce Integer, reqTime DCSTime OPTIONAL, extensions Extensions OPTIONAL } GeneralNames ::= SEQUENCE OF GeneralName The ServiceType type indicates which type of Data Certification Server service is required. ServiceType ::= INTEGER { cpd(1), cs(2), cpkc(3) } The value of requester indicates the requesting entity. If present, the requester MUST match the identity (subjectName or subjectAltName extension) for the corresponding signing certificate, unless the request is signed by a DCS (relaying a request to another server). A DCS may include a sequence of identities in the request, indication the original requester, and one or more other DCS. A DCS indicated in the list are acting by delegation. The value of dcs indicates a list a DCS which are to be contacted to provide (additional) information or to perform additional operations necessary to produce the response. It is up to the DCS policy whether to honour this field or not. The DCS MAY use local information to use additional external services. dataLocator describes the requester's idea of where the data are located. PolicyInformation is defined in Section 4.2.1.5 of [RFC2459]. The reqPolicy field SHOULD indicate the policy under which the certification is requested. This field MUST be checked by the DCS to verify agreement with its own policy. The absence of this field indicates that any policy is acceptable. Adams, Sylvester, Zuccherato [Page 8] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 DCSTime ::= CHOICE { genTime GeneralizedTime, timeStampToken SignedData } A timeStampToken is either a DCSToken or a TimeStampToken defined in [TSA]. If a timeStampToken is present, this indicates the time provided by another DCS or TSA. In situations where the Data Certification Server will certify the time included in the request (i.e., when stipulated by the policy of the Data Certification Server), the data certification request MUST include the reqTime field in DCSReqInfo. Thus, when verifying a public key certificate, the presence of this field indicates the time for which the validity and revocation status of the certificate SHOULD be reported. If this field is not present, the current time is assumed. The Data type is defined to be either the message itself, a hash of the message (this allows a signature indicating possession of private data to be certified) or the certificate to be verified. Data ::= CHOICE { message [0] Message, messageimprint [1] MessageImprint, certs [2] SEQUENCE SIZE (1..MAX) OF TargetandChain } In order to specify the format (i.e. the type) of the message so that it may be parsed and understood by the DCS or any verifying entity, we define the Message data type. Message ::= SEQUENCE { format MESSAGECLASS.&id, --objid rawdata MESSAGECLASS.&Type --open type } MESSAGECLASS ::= CLASS { &id OBJECTIDENTIFIER, --OID signalling TSTReqData content DCSReqDataIDENTIFIER UNIQUE, &Type }certificate [0] Certificate, signerInfos SignerInfosWITH SYNTAX { &Type IDENTIFIED BY &id } Possible message types include id-data and id-signedData [CMS]. id-data OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1 } id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) Adams, Sylvester, Zuccherato [Page 9] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }The data certification requestIn particular, if the message type is id-signedData (or any other message type that allows more than one signature) and more than one SignerInfo (or signature) is present under service type cs, the DCS MUSTeither be unsigned or contain onlyverify all signatures present. A failure of thesignatureverification of one of therequester. DCSReqDatasignatures does not necessarily result in the failure of the entire certification. For a Data Possession service, the requester may choose to send a message or a hash of a message instead using the MessageImprint data type. MessageImprint ::= SEQUENCE {dcsReqInfo DCSReqInfo, data Data Document Expiration: March 23, 1999 Page 4 --the data to be certified --thishashAlgorithm AlgorithmIdentifier, hashedMessage OCTET STRING } The hash algorithm indicated in the hashAlgorithm fieldMUSTSHOULD beof type Message ifa "strong" hash algorithm (that is, it SHOULD be one-way and collision resistant). It is up to theservice typeData Certification Server to decide whether or not the given hash algorithm iscs --andsufficiently "strong" (based on the current state oftype SEQUENCE OF Certificate ifknowledge in cryptanalysis and theservice type is cpkc }current state of the art in computational resources, for example). ThedcsReqInfohashedMessage fieldcontains information pertaining toSHOULD contain the hash of the DER encoding of the message expressed as a Message datacertification request. DCSReqInfotype. The hash is represented as an OCTET STRING. TargetandChain ::= SEQUENCE {version Integer { v1(0) }, service ServiceType, requester GeneralName OPTIONAL, --MUST be present if the service field is cpd --MUST match the identity (subjectName or subjectAltName --extension) for the corresponding signing certificate reqPolicy PolicyInformation OPTIONAL, dcs GeneralName, nonce Integer, reqTime ReqTimetarget CertetcToken, chain [0] SEQUENCE SIZE (1..MAX) OF CertetcToken OPTIONAL,extensions ExtensionspathProcInput [1] PathProcInput OPTIONAL }ReqTimePathProcInput ::= SEQUENCE { acceptablePolicySet CertificatePolicies, inhibitPolicyMapping BOOLEAN DEFAULT FALSE, explicitPolicyReqd BOOLEAN DEFAULT FALSE } CertetcToken ::= CHOICE {genTime GeneralizedTime, timeStampToken TimeStampTokencert [0] Certificate , esscertid [1] ESSCertId , dcstoken [2] DCSToken , oscpresponse [3] OCSPResponse, pkistatus [4] PKIStatusField , extension Extension }In situations where the Data Certification Server will verify the identity of the requester (i.e., when the serviceAdams, Sylvester, Zuccherato [Page 10] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 The certs fieldis cpd),SHOULD contain thedata certification request MUSTcertificate to be certified. Each certificate SHALL besigned by the requester using the signerInfos field. Similarly, in situations where the Data Certification Server will certify the timeincluded inthe request (i.e., when stipulated by the policya separate instance of TargetandChain. The target field SHALL contain theData Certification Server),cert to be verified and thedata certification requestchain field, if present, MUSTincludeindicate thereqTime field in DCSReqInfo. Thus,chain of trust to be used whenverifying a public key certificate,certifying thepresence of this field indicatescertificate. The pathProcInput field, if present, SHOULD indicate thetimeacceptable policy set and initial settings forwhich the validityexplicit-policy-indicator andrevocation status of the certificate SHOULDinhibit-policy- mapping indicators to bereported. If this field is not present, the current time is assumed. TimeStampToken is definedused inSect 2.4 of [TSA]. PolicyInformationX.509 public key certificate path validation (see [RFC2459]). CertificatePolicies is defined in Section 4.2.1.5 of[CCP]. The reqPolicy field SHOULD indicate the policy under which the certification is requested. This field[RFC2459]. Only Certificate and ESSCertId MUST bechecked byused in theDCS to verify agreement with its own policy. The absence of this field indicates that any policy is acceptable. The Data typerequest. ESSCertId isdefined to be eitheronly used when themessage itself, a hashcorresponding certificate is available in one of themessage (this allows a signature indicating possession of private data to be certified)TargetandChain components, or in the certificateto be verified. Data ::= CHOICE { message [0] Message, messageimprint [1] MessageImprint, certs [2] SEQUENCE SIZE (1..MAX) OF TargetandChain } Document Expiration: March 23, 1999 Page 5 In order to specifylist of theformat (i.e.SignerData of thetype)DCS request. Extensions are described in Section 4.2 of [RFC2459]. The criticality of themessage so that it mayextensions MUST beparsed and understoodhonoured bythe DCS or any verifying entity, we define the Message data type. Message ::= SEQUENCE { format MESSAGECLASS.&id, --objid rawdata MESSAGECLASS.&Type --open type } MESSAGECLASS ::= CLASS { &id OBJECT IDENTIFIER UNIQUE, &Type } WITH SYNTAX { &Type IDENTIFIED BY &id } Possible message types include id-dataconformant DCSs andid-signedData [CMS]. id-data OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1 } id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 } In particular, if the message type is id-signedData (or any other message type that allows more than one signature)clients (e.g. requests andmore than one SignerInfo (or signature) is present under service type cs, the DCSresponses containing critical extensions which are not understood MUSTverify all signatures present. Inbe rejected). requestIdentifier is an identifier that is returned as supplied in a response. The requester MAY use thiscase the failure of any one signatureelement in order toverify will resultassociate requests and responses. For example in a mail transport environment, thefailure of the entire certification. If the requester prefers to sendrequest identifier could be ahashcopy of a MessageId. A DCS Response is themessage instead, the MessageImprintfollowing datatype SHOULDstructure. At least one of the optional element MUST beused. MessageImprintpresent. DCS servers MAY choose produce only signed responses (DCSResp containing a dcsToken), i.e., not to return any information when they cannot decode a request or when signing is not possible. DCSResp ::= SEQUENCE {hashAlgorithm AlgorithmIdentifier, hashedMessage OCTET STRINGrequestIdentifier [0] GeneralName OPTIONAL , responseStatus [1] PKIStatusInfo OPTIONAL, dcsToken DCSToken OPTIONAL } Thehash algorithm indicated inresponseStatus is un unsigned information only message. A client should not put more trust into element than into thehashAlgorithm field SHOULD belower level transport. The reason for having a"strong" hash algorithm (that is, it SHOULD be one-way and collision resistant). ItSEQUENCE isup tothat that theData Certification Serverserver might want todecide whethersignal some additional information in a PKIFreeText of responseStatus. If the DCS Response contains a dcsToken, the PKIStatus field of the requestStatus MUST be `granted' (0), ornotthegiven hash algorithmrequestStatus MUST be absent. Adams, Sylvester, Zuccherato [Page 11] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 A dcsToken issufficiently "strong" (based on the current statea SignedData construct ofknowledge[CMS]. The contenttype indicated incryptanalysis andthecurrent stateeContentType of theart in computational resources, for example).encapContentInfo is of type id- ct-DCSInfo signalling a DCSReqData as eContent of the encapContentInfo (carried as an octet string). id-ct-DCSInfo OBJECT IDENTIFIER ::= {id-ct ??} A data certification MAY contain several SignerInfo structures, and countersignature attributes depending on operational environments. ThehashedMessage field SHOULDdata certification token MUST contain only thehash of the DER encodingDCS signatures, i.e., signatures signed with certificates having KeyPurposeID ofthe message expressed as a Message data type. The hash is represented as an OCTET STRING. TargetandChainid- kp-dcs. DCSInfo ::= SEQUENCE { infoStatus PKIStatusInfo OPTIONAL, dcsReqInfo DCSBasicInfo OPTIONAL, requestIdentifier GeneralName OPTIONAL } DCSBasicInfo ::= SEQUENCE { dcsReqInfo DCSReqInfo, messageImprint MessageImprint, dataLocator [0] GeneralName OPTIONAL , reqSignature [1] SignerInfos OPTIONAL, policy PolicyInformation, time DCSTime, serialNumber Integer OPTIONAL, chainCerts [2] SEQUENCE OF TargetandChainInfo OPTIONAL, crls [3] SEQUENCE OF CertificateList OPTIONAL, extensions [4] Extensions OPTIONAL } TargetandChainInfo ::= SEQUENCE { targetCertificate,CertetcToken, chain [0] SEQUENCE SIZE (1..MAX) OFCertificateCertetcToken OPTIONAL,pathProcInput PathProcInputpolicyReturnInfo [1] PolicyReturnInfo OPTIONAL }PathProcInputPolicyReturnInfo ::= SEQUENCE {acceptablePolicySet CertificatePolicies, inhibitPolicyMapping BOOLEAN DEFAULT FALSE, Document Expiration: March 23, 1999 Page 6 explicitPolicyReqd BOOLEAN DEFAULT FALSEpolicies SEQUENCE OF PolicyInformation, mappings SEQUENCE OF PolicyMappingsSyntax }The certs field SHOULD contain the certificate to be certified. Each certificate SHALL be includedPKIStatusInfo is defined ina separate instanceSection 3.2.3 ofTargetandChain.[RFC2510]. ThetargetinfoStatus fieldSHALL contain the cert to be verified andindicates whether or not thechain field,data certification request was fulfilled and, ifpresent, MUST indicatenot, failInfo indicates thechain of trust to be used when certifyingreason it Adams, Sylvester, Zuccherato [Page 12] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 was rejected. A valid data certification token will have a PKIStatus field with value `granted' (0) or 'grantedWithMods' (1). If thecertificate. The pathProcInput field, if present, SHOULD indicateonly content of theacceptable policy set and initial settings for explicit-policy-indicator and inhibit-policy-mapping indicators to be used in X.509 public key certificate path validation (see [CCP]). CertificatePoliciesPKIStatus isdefined in Section 4.2.1.5 of [CCP]. Extensions are described in Section 4.2 of [CCP]. The criticalitya PKIStatus field with a value ofthe extensions MUST be honoured by conformant DCSs and clients (e.g. requests and responses containing critical extensions which are'granted', PKIStatusField is notunderstood MUST be rejected).generated. Adata certification token isfailure of the verification of one of the signatures does not necessarily result in the production of an error message. For example, asfollows. It is encapsulatedlong as aSignedData construct [CMS]. The content issufficient number oftype DCSReqData. DCSToken ContentInfo ::= SEQUENCE { contentType OBJECT IDENTIFIER, --{pkcs-7 2}, SignedData content [0] SEQUENCE { version INTEGER, digestAlgorithms AlgorithmIdentifier, contentInfo SEQUENCE { contentType OBJECT IDENTIFIER, --OID signalling DCSInfo content DCSInfo } certificate [0] Certificate, signerInfos SignerInfos } } The data certificationsignature verifications was successful, a token with status `grantedWithMods` MAY be produced. A token with status `granted` MUSTcontainonlythe signaturebe produced if all signatures verified successfully. Whether a `grantedWithMods` response or an error response will be produced is a matter ofthe DCS. DCSInfo ::= SEQUENCE {local policy. The dcsReqInfoDCSReqInfo, --MUSTMUST be the same value as the dcsReqInfo field inDCSReqData messageImprint MessageImprint, --ifDCSReqData. If the data field in DCSReqData is MessageImprint,this --MUSTmessageImprint MUST contain that same value, otherwise it contains a hash of--thethe data field in DCSReqData using the hashalgorithm --specifiedalgorithms specified in the digestAlgorithm parameter ofSignerInfothe signerInfos in--thethe data certificationtoken reqSignature SignerInfo OPTIONAL, --MUSTtoken. The dataLocator MUST bepresent if servicethe same value as the dataLocator fieldof dcsReqInfo is cpd --MUSTin the DCSReqInfo. reqSignature MUST be the same value as thesignerInfosignerInfos fieldinof thedata --certification request policy PolicyInformation, status PKIStatusInfo, time DCSTime, serialNumber Integer OPTIONAL, chainCerts [0] SEQUENCE OFDCSRequest. For a Signature and CertificateOPTIONAL, --if present,validation, chainCerts MUST indicate thechainchains oftrusttrust, and additional information (OCSP responses, DCSToken, PKIStatusField) that was used by--thethe DCS toverify the signature or certificate in DCSReqData crls [2] SEQUENCE OF CertificateList OPTIONAL, Document Expiration: March 23, 1999 Page 7 policyReturnInfo [3] SEQUENCE OF PolicyReturnInfo OPTIONAL, extensions Extensions OPTIONAL } DCSTime ::= CHOICE { genTime GeneralizedTime, timeStampToken TimeStampToken } PolicyReturnInfo ::= SEQUENCE { policies SEQUENCE OF PolicyInformation, mappings SEQUENCE OF PolicyMappingsSyntax } PKIStatusInfo is defined in Section 3.2.3 of [CMP]. If the PKIStatus field has value `waiting' (3), then this token is a receipt, as defined in Section 2. Otherwise,verify thestatus field indicates whethersignature or certificate in DCSReqData. The chain field does not necessarily contain a single chain of trust, multiple hierarchies are possible. Furthermore, for example in thedata certification request was fulfilled and, if not, failInfo indicates the reason it was rejected. A valid data certification token will havecase of validation of aPKIStatus field with value `granted' (0).public key certificate used for encryption purposes, additional certificates may be included to indicate other encryption destinations (e.g., for organisation wide key recovery). For the purposes of the DCS, we define PKIFailureInfo for use in PKIStatusInfo. PKIFailureInfo ::= BITSTRING { badAlg (0), -- unrecognized or unsupported Algorithm Identifier badMessageCheck (1), -- integrity check failed (e.g., signature did not verify) Adams, Sylvester, Zuccherato [Page 13] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 badRequest (2), -- transaction not permitted or supported badTime (3), -- messageTime was not sufficiently close to the system time, -- as defined by local policy badCertId (4), -- no certificate could be found matching the provided criteria badDataFormat (5), -- the data submitted has the wrong formatwrongwrongAuthority (6), -- the DCS indicated in the request is different from the -- one creating the response token incorrectData (7), --the requester's data (i.e. signature) is incorrect--(i.e.--(i.e., invalid) missingTimeStamp (8), -- when the timestamp is missing but should be there (by policy) certInvalid (9), -- the certificate fails to validate against Section 6 of[CCP][RFC2459] certRevoked (10), -- the certificate is revoked certExpired (11), -- the certificate has expired certOnHold (12), -- the certificate has been operationally suspended certNotActive (13) -- the certificate was not active at the given time } The statusString field of PKIStatusInfo can be used to include reason text such as "CA's public key revoked".Document Expiration: March 23, 1999 Page 8 CertId is defined in Section 7.5 of [CRMF].The crls field (if present) SHOULD contain a sequence of certificate revocation lists that is sufficient to verify thechainchains of trust indicated in the chainCerts field. The policyReturnInfo field indicates the policies and mappings that were processed during X.509 public key certificate path validation. PolicyMappingsSyntax is defined in[CCP].[RFC2459]. The reqSignature, chainCerts, crls andpolicyReturnInfopolicyInfo fields are included as OPTIONAL. They SHOULD be present, when policy dictates, for use as supplementary evidence when resolving possible disputes. Dispute resolution would most likely be handled by one or more humans, in an off-line environment, and is beyond the scope of this document.6.7. Transports Adams, Sylvester, Zuccherato [Page 14] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 There is no mandatory transport mechanism in this document. All mechanisms are optional.6.1.7.1 File Based Data Certification Server Protocol A file containing a data certification message MUST contain only the DER encoding of one PKI message, i.e. there MUST be no extraneous header or trailer information in the file. Such files can be used to transport data certification messages using for example, FTP.6.2. Socket Based Data Certification Server Protocol The socket based protocol for data certification messages is identical to that used in [CMP] Section 5.2 except that port 309 MUST be used. 6.3.7.2 Data Certification Server Protocol Using Email This section specifies a means for conveying ASN.1-encoded messages for the protocol exchanges described in Section 4 via Internet mail.AThe DER encoded DCS requests and responses are encapsulated using a simple MIME objectis specified as follows. Content-Type:with Content-Type application/dcsContent-Transfer-Encoding: base64 <<the ASN.1 DER-encoded Data Certification Server message, base64- encoded>>with an appropriate Content-Transfer-Encoding. This MIME object can be sent and received using MIME processing engines and provides a simple Internet mail transport for Data Certification Server messages.6.4. Data Certification Server7.3 DCS Protocol via HTTP This subsection specifies a means for conveying ASN.1-encoded messages for the protocol exchanges described in Section42 and Appendix C via the HyperTextDocument Expiration: March 23, 1999 Page 9Transfer Protocol.AThe DER encoded DCS requests and responses are encapsulated using a simple MIME objectis specified as follows. Content-Type: application/dcs <<the ASN.1 DER-encoded Data Certification Server message>>with Content-Type application/dcs. This MIME object can be sent and received using common HTTP processing engines over WWW links and provides a simplebrowser-serverbrowser- server transport forData Certification ServerDCS messages.7.8. Security Considerations This entire document discusses security considerations. When designing a data certification service, the following considerations have been identified that have an impact upon the validity or "trust" in the data certification token. 1. The enclosed public key certificate is revoked or the signer's Adams, Sylvester, Zuccherato [Page 15] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 key is compromised and the corresponding public key certificate is revoked before the Data Certification Server acts upon the request. The Data Certification Server is REQUIRED to validate appropriate information within the request before it constructs the data certification token. It is therefore mandated that the DCS have access to current information regarding public key certificate status before it creates the token. In this situation, the certification process would produce an error. 2. The enclosed public key certificate is revoked or the signer's key is compromised and the corresponding certificate is revoked after the Data Certification Server acts upon the request. This is not a concern to the DCS once the Data Certification Server has constructed the token, as long as the compromise date in the CRL is not before the time of certification. If it is, this situation would have to be handled by off-line, possibly human- aided, means specific to the situation at hand. 3. The Data Certification Server's private key is compromised and the corresponding certificate is revoked. In this case, any token signed by the Data Certification Server cannot be trusted. For this reason, it is imperative that the Data Certification Server's key be guarded with proper security and controls in order to minimize the possibility of compromise. Nevertheless, in case the private key does become compromised, an audit trail of all the tokens generated by the DCS SHOULD be kept as a means to help discriminate between genuine and false tokens. 4. The DCS signing key MUST be of a sufficient length to allow for a sufficiently long lifetime. Even if this is done, the key will have a finite lifetime. Thus, any token signed by the DCS SHOULD be time stamped (if authentic copies of old CRLs are available) or certified again (if they aren't) at a later date to renew the trust that exists in the DCS's signature. Data certification tokens could also be kept with an Evidence Recording Authority [ISONR] to maintain this trust. 5. When there is a reason to believe that the DCS can no longerDocument Expiration: March 23, 1999 Page 10be trusted, its certificate MUST berevoked and placed on the appropriate CRL.revoked. Thus, at any future time the tokens signed with the corresponding key will not be trusted. 6. In certain circumstances, a DCS may not be able to produce a valid response to a request (for example, if it is unable to compute signatures for a period oftime). In these situations the DCS MUST wait until it is again able to produce a valid response and then respond to the request. Under no circumstances shall a DCS produce an unsigned response to a request. 7. A CA shall normally conduct a test for proof of possession for each user's signing private key (including the DCS signing private key). However, in some environments, the CA might not perform a proof-of-possession of the private key when issuing certificates.time). In theseinstances, in order to prevent certain attacks and to properly check the validity ofsituations thebinding between an end entity andDCS MAY create akey pair,response that only contain acertificate identifier of thePKIStatusInfo. Adams, Sylvester, Zuccherato [Page 16] draft-ietf-pkix-dcs-01.txt DCS(resp. user) shall be included asProtocols July 12, 1999 7. DCS clients SHOULD NOT trust unsigned responses. A DCS client may trust unsigned responses, if the communication channel provides for server authentication (e.g. by services defined by TLS [RFC2246]). 7. Client identification and authentication may use services defined by TLS [RFC2246]) instead of using a signedattribute of the token (resp. request).request. 8. In situations where confidentiality is required, requests and responses MAY be protected using appropriate mechanisms (e.g. CMS encapsulation [CMS] or TLS [RFC2246]). 9. Patent Information The following United States Patents related to data certificationservers (notaries),services, listed in chronological order, are known by the authors to exist at this time. This may not be an exhaustive list. Other patents may exist or be issued at any time. Implementers ofthisthe DCS protocol and applications using the protocol SHOULD perform their own patent search and determine whether or not any encumberences exist on their implementation. # 4,309,569 Method of Providing Digital Signatures (issued) January 5, 1982 (inventor) Ralph C. Merkle (assignee) The Board of Trustees of the Leland Stanford Junior University # 5,001,752 Public/Key Date-Time Notary Facility (issued) March 19, 1991 (inventor) Addison M. Fischer # 5,022,080 Electronic Notary (issued) June 4, 1991 (inventors) Robert T. Durst, Kevin D. Hunter # 5,136,643 Public/Key Date-Time Notary Facility (issued) August 4, 1992 (inventor) Addison M. Fischer (Note: This is a continuation of patent # 5,001,752.) # 5,136,646 Digital Document Time-Stamping with Catenate Certificate (issued) August 4, 1992 (inventors) Stuart A. Haber, Wakefield S. Stornetta Jr. (assignee) Bell Communications Research, Inc.,Document Expiration: March 23, 1999 Page 11# 5,136,647 Method for Secure Time-Stamping of Digital Documents Adams, Sylvester, Zuccherato [Page 17] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 (issued) August 4, 1992 (inventors) Stuart A. Haber, Wakefield S. Stornetta Jr. (assignee) Bell Communications Research, Inc., # 5,373,561 Method of Extending the Validity of a Cryptographic Certificate (issued) December 13, 1994 (inventors) Stuart A. Haber, Wakefield S. Stornetta Jr. (assignee) Bell Communications Research, Inc., # 5,422,95 Personal Date/Time Notary Device (issued) June 6, 1995 (inventor) Addison M. Fischer9.# 5,781,629 Digital Document Authentication System (issued) July 14, 1998 (inventor) Stuart A. Haber, Wakefield S. Stornetta Jr. (assignee) Surety Technologies, Inc., 10. References [RFC2119] "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119. [TSA] C. Adams, P. Cain, D. Pinkas, R. Zuccherato, "Internet X.509 Public Key Infrastructure, Time Stamp Protocols,"draft-ietf-pkix-time- stamp-0X.txt, 1998draft-ietf-pkix- time-stamp-02.txt, 1999 (work in progress).[CMP][RFC2510] C. Adams, S. Farrell, "Internet X.509 Public Key Infrastructure, Certificate Management Protocols,"draft-ietf-pkix-ipki3cmp- 0X.txt, 1998 (work in progress). [CCP]RFC-2510, 1999. [RFC2459] R. Housley, W. Ford, W. Polk, D. Solo, "Internet X.509 Public Key Infrastructure, Certificate and CRLProfile," draft-ietf-pkix-ipki- part1-0X.txt, 1998 (work in progress).Profile", RFC-2459. January 1999. [CMS] R.HousleyHousley, "Cryptographic Message Syntax",draft-ietf-smime-cms-draft-ietf-smime- cms- 0X.txt, 1998 (work in progress). [ISONR] ISO/IEC 10181-5: Security Frameworks in Open Systems.Non-RepudiationNon- Repudiation Framework. [RFC2119] Key works for use in RFCs to Indicate Requirement Levels, S. Bradner, RFC 2119, March 1997.[CRMF][RFC2511] M. Myers, C. Adams, D. Solo, D. Kemp "Internet X.509 Certificate Request Message Format,"draft-ietf-pkix-crmf-0X.txt, 1998RFC-2511, March 1999. Adams, Sylvester, Zuccherato [Page 18] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 [RFC2246] T. Dierks, C. Allen, "The TLS Protocol, Version 1.0," RFC 2246, January 1999. [ESS] P. Hoffman, "Enhanced Security Services for S/MIME", draft- ietf- smime-ess-0X.txt, 1999 (work in progress).10.[OCSP] M. Myers, R. Ankney, A. Malpani, S. Galperin, C. Adams, "X.509 Internet Public Key Infrastructure Online Certificate Status Protocol", draft-ietf-pkix-ocsp-0X.txt, 1999 (work in progress). 11. Authors' Addresses Carlisle AdamsRobert Zuccherato Entrust TechnologiesEntrust Technologies 750 Heron Road Ottawa, Ontario K1V 1A7 CANADA cadams@entrust.com Peter Sylvester EdelWeb SA 33 avenue du Maine F-75755 Paris Cedex 15 FRANCE peter.sylvester@edelweb.fr Robert Zuccherato Entrust Technologies 750 Heron Road Ottawa, OntarioOttawa, Ontario K1V 1A7K1V 1A7 CANADACANADA cadams@entrust.comrobert.zuccherato@entrust.comDocument Expiration: March 23, 1999 Page 12;fi APPENDIX A - Storage of Data and Token A data certification token is useless without the data to which it applies. For this reason tokens and their related data MUST be securely stored together. The change of a single bit in either the data or the token renders the entire certification process for that data meaningless. Storage of tokens and data in a secure (e.g., tamper proof) environment is strongly RECOMMENDED. When data and data certification tokens are stored together, the following ASN.1 data type MAY be used. Adams, Sylvester, Zuccherato [Page 19] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 DataAndToken ::= SEQUENCE { message Message, dcsToken DCSInfo }Note that this object does not need to be signed, as the data certificationFurthermore, we define a PKCS #9 [PKCS9] dcs tokenalready verifies the integrity of the data inattribute type. This attribute type specifies themessage. Any supplementary information whose integrity needs to be protected SHOULDdcs token, which MAY bepartincluded as a signed attribute of themessage or token.SignedData object. The dcs token attribute type has ASN.1 type DCSToken (as defined in this document). The object identifier id-aa-timeStampToken identifies the dcs token attribute type. id-aa-timeDCSToken OBJECT IDENTIFIER ::= { id-aa XX } id-aa OBJECT IDENTIFIER ::= { id-smime 2 } APPENDIX B - Extending the Life of a Signature We present an example of a possible use of this data certification service. It produces a stand-alone token that can be used to extend the life of a signature. This example assumes that we have total trust in the Data Certification Server. Signature algorithms and keys have a definite lifetime. Therefore, signatures have a definite lifetime. The Data Certification Server can be used to extend the lifetime of a signature. In order to extend the lifetime of a signature in this way, the following technique MAY be used. A) The signature needs to be certified. 1) The signed message is presented to the Data Certification Server in the data field of DCSReqInfo under service type cs and an appropriate policy. 2) The Data Certification Server verifies that the signature and verification key are valid at that time by checking expiry dates and status information, and returns a data certification token. B) The certified signature MUST be verified. 1) The signature of the Data Certification Server in data certification token SHALL be verified using the Data Certification Server's valid verification key. In this situation the signer's signing key (and therefore, its signature) is only valid until some specified time T1. The DCS's signing key (and therefore, its signature) is valid until somespecified Document Expiration: March 23,Adams, Sylvester, Zuccherato [Page 20] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999Page 13specified time T2 that is (usually) after time T1. Without certification, the signer's signature would only be valid until time T1. With certification, the signer's signature remains valid until time T2, regardless of subsequent revocation or expiry at time T1. If the signature of the DCS is valid, the trust we have in the DCS allows us to conclude that the original signature on the data was valid at the time included in the dcsInfo field of the data certification token. APPENDIX C - Verifying the Status of a Public Key Certificate We now present an example of how to produce a stand-alone token that can be used to confirm the revocation status of a public key certificate. CRLs and ARLs are updated according to a schedule at regular intervals. For some purposes, the granularity provided by the CRLs and ARLs is not fine enough. Up-to-date revocation status may be needed before the next CRL or ARL update. Since the DCS MUST have access to current information regarding public key certificate status, it can also be used to verify the revocation status of a certificate in this situation. In order to produce such a token, the following technique MAY be used. A) The public key certificate needs to be certified. 1) The certificate is presented to the Data Certification Server in the data field of DCSReqInfo under service type cpkc and an appropriate policy. 2) The Data Certification Server verifies that the public key certificate is valid and that it hasn't been revoked and then returns a data certification token. B) The data certification token MUST be verified. 1) The signature of the Data Certification Server in the data certification token SHALL be verified using the Data Certification Server's valid verification key. This data certification token can now be used when verifying signatures using the key contained in the public key certificate. This service provided by the DCS can be thought of as a supplement to the usual method of checking revocation status.Document Expiration: March 23,Adams, Sylvester, Zuccherato [Page 21] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999 Appendix D - MIME Registration To: ietf-types@iana.org Subject: Registration of MIME media type application/timestamp MIME media type name: application MIME subtype name: dcs Required parameters: None Optional parameters: None Encoding considerations: binary or Base64 Security considerations: Carries a request for a data certification service and the response. A request may be cryptographically signed. The response will be cryptographically signed. Interoperability considerations: None Published specification: IETF PKIX Working Group Draft on Data Certification Server Protocols Applications which use this media type: Data Certification clients Additional information: Magic number(s): None File extension(s): .dcs Macintosh File Type Code(s): none Person & email address to contact for further information: Peter Sylvester <peter.sylvester@edelweb.fr> Intended usage: COMMON Author/Change controller: Peter Sylvester <peter.sylvester@edelweb.fr> Appendix E - Acknowledgements This text is based on initial work from Robert Zuccerato and Carlisle Adams, both at Entrust Technologies, and from Denis Pinkas at Bull, for time stamping, notary and data certification services. Thanks to Michael Zolotarev from Baltimore for his useful comments. Adams, Sylvester, Zuccherato [Page 22] draft-ietf-pkix-dcs-01.txt DCS Protocols July 12, 1999Page 14Appendix F - Full Copyright Statement Copyright (C) The Internet Society 1999. All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process shall be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Adams, Sylvester, Zuccherato [Page 23] ----