Internet DRAFT - draft-adams-notary

draft-adams-notary



                                          C. Adams(Entrust Technologies)
Internet Draft                       R. Zuccherato(Entrust Technologies)
expires in six months                                  February 27, 1997


                          Notary Protocols 

                     <draft-adams-notary-01.txt>


Status of this Memo

This document is an Internet-Draft.  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 status of any Internet-Draft, please check the
"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
Directories on 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).

Abstract

This document describes a general notary service and the protocols to
be used when communicating with it.  The Notary Authority is a Trusted 
Third Party (TTP) that can be used as one component in building reliable 
non-repudiation services (see [ISONR]).  Useful Notary Authority 
responsibilities in a PKI are to validate signatures and to provide up-
to-date information regarding the status of certificates.  We give  
examples of how to use the notary to extend the lifetime of a signature 
beyond key expiry or revocation and to query the notary regarding the 
status of a certificate.

      The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and
      "OPTIONAL" in this document are to be interpreted as described in
      RFC 2119 [RFC2119].

1. Introduction

A Notary Authority (NA) is a Trusted Third Party that verifies the
correctness of specific data submitted to it.  The Notary Authority 
provides the notary service in order that non-repudiation 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 notarizing possession of data or another 
entity’s signature, the NA verifies the mathematical correctness of the 
actual signature value contained in the request and also checks the full 

Document Expiration:  August 27, 1998                            Page 1

certification path from the signing entity to a trusted point (e.g., the 
NA's CA, or the root CA in a hierarchy).  The NA MAY be able to rely on 
all relevant CRLs and ARLs, or the NA MAY need to supplement this with 
access to more current status information from the CA.  It then includes

a trusted time and creates a notary token.  (See Appendix B.)

When notarizing a certificate, the NA 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 NA MAY be able to rely on all relevant CRLs and ARLs, or the 
NA 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 Notary Token.  (See Appendix C.)

The presence of a notary token supports non-repudiation in two ways.
It provides evidence that a signature or certificate was valid at the
time of notarization.  This token can be used even after the 
corresponding certificate expires and its revocation information is 
no longer available on CRLs (for example).  The production of a notary
token in response to a signed request for notarization of another 
signature or certificate also provides evidence that due diligence 
was performed by the requester in validating the signature or 
certificate.

In all cases, the trust that PKI entities have in the Notary Authority 
is transferred to the contents of the notary token (just as trust in a 
CA is transferred to the certificates that it issues).  As a particular 
example, a notary token pertaining to a signature may be useful for 
extending the life of that signature beyond the expiry or subsequent 
revocation of its corresponding verification certificate.

2. Requirements of the Notary Authority

The Notary Authority is MAY to:

     1. verify the correctness of the enclosed digital signature using 
        all appropriate status information and public key certificates 
        and produce a signed notary token attesting to the validity of 
        the signature, if asked by the requester.
     2. verify the validity (according to [CCP]) of the enclosed 
        certificate and its revocation status at the specified time
        using all appropriate status information and public key 
        certificates and produce a signed notary token attesting to the
        validity and revocation status of the certificate, if asked by 
        the requester.
     3. include a monotonically incrementing value of the time of day 
        or a time stamp token into its notary token.
     4. include within each signed notary token an identifier to 
        uniquely determine the trust and validation policy used for this
        signature.
     5. sign each notary token using a key generated exclusively for 
        this purpose and have this property of the key indicated on the 
        corresponding certificate.


Document Expiration:  August 27, 1998                            Page 2

     6. indicate in the token whether or not the signature or
        certificate verified, and if not, the reason the verification 
        failed.
     7. provide a signed receipt (i.e., in the form of an appropriately
        defined notary token) to the requester, where appropriate, as
        defined by policy.

3. Notary Transactions

As the first transaction of this mechanism, the requesting entity 
requests a notarization by sending a request (which is or includes a 
notary request, as defined below), including the data for which validity 
and/or possession is to be notarized, to the Notary Authority.  Upon 
receiving the request, the Notary Authority reviews and checks the 
validity of the request.  A valid request is of the form described in
Section 5 of this document and can be properly decoded.  If the request 
is valid, the Notary Authority performs the notarization and sends a 
response (which is or includes a notary token, as defined below) to the 
requesting entity.  Otherwise, the Notary Authority returns an error 
message (i.e., in the form of an appropriately defined notary 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 NA, the correct data imprint, a valid signature, 
and satisfactory status, service and policy fields.  Since the NA’s 
certificate may have been revoked, the appropriate status information
SHOULD be checked to verify that the certificate is still valid.  The 
token can now be used to authenticate the correctness or possession of 
the corresponding data.

4. Identification of the NA

The NA MUST sign all notary messages with a key reserved specifically 
for that purpose.  The corresponding certificate MUST contain the 
extended key usage field extension as defined in [CCP] Section 
4.2.1.14 with KeyPurposeID having value id-kp-notary.  This extension 
MUST be critical.

id-kp-notary    OBJECT IDENTIFIER ::= {id-kp  ??}
  -- Notarizing the validity of certain information.  Key usage bits 
  -- that may be consistent:  digitalSignature, nonRepudiation

5. Request and Token Formats

The ServiceType type indicates which type of Notary Service is required.

ServiceType ::= INTEGER  { npd(1), ns(2), nc(3) }

The value npd (Notarize Possession of Data) is used when only the 
signature on the notary request (i.e., possession of the data in the 
request) is to be verified.  In this case the Notary Authority would be 
merely providing evidence that the requester possessed the data in the 
request and a valid signature key at the time indicated.  This is really 
an extension of the Time Stamp Authority [TSA] in that we are given the 
additional assurance about the validity of the signature, as well as the 
time before which it was applied.  The value ns (Notarize Signature) is 

Document Expiration:  August 27, 1998                            Page 3

used when another entity’s signature is to be validated.  The resulting 
token can then be used to support non-repudiation services or to allow 
use of the signature beyond certificate revocation or expiry.

The value nc (Notarize Certificate) is used when the validity and 
revocation status of the certificate included in the request is to be 
verified.  This service can be used to supplement the use of CRLs when 
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 NA MAY support any subset of the above services. 

Upon receiving a signed request for either service ns or nc the NA MUST
also verify the signature on the request as is done for the npd service.
Note however, that signed requests for the ns or nc service are not
required.

A notary request is as follows.  It is encapsulated as a SignedData 
construct [CMS].  The content is of type NotaryReqData, which is 
indicated by the OID:

NotaryReqData OBJECT IDENTIFIER  ::= { ??????  }

The notary request MUST contain only the signature of the requester.

The data and information that will be notarized are contained in the 
content field of the SignedData content type.

NotaryReqData ::= SEQUENCE  {
     notaryReqInfo                NotaryReqInfo,
     data                         Data
       --the data to be notarized
       --this field MUST be of type Message if the service type is ns 
       --and of type SEQUENCE OF Certificate if the service type is nc            
}

The notaryReqInfo field contains information pertaining to the notary 
request.

NotaryReqInfo ::= SEQUENCE  {
     version                      Integer { v1(0) },
     service                      ServiceType,
     requester                    GeneralName OPTIONAL,
      --MUST be present if the service field is npd
      --MUST match the identity (subjectName or subjectAltName 
      --extension) for the corresponding signing certificate
     reqPolicy                    PolicyInformation OPTIONAL,
     notary                       GeneralName,
     nonce                        Integer,
     reqTime                      ReqTime OPTIONAL   }

ReqTime ::= CHOICE  {
     genTime                      GeneralizedTime,
     timeStampToken               TimeStampToken   }



Document Expiration:  August 27, 1998                            Page 4

In situations where the Notary Authority will verify the identity of the
requester (i.e., when the service field is npd), the notary request MUST 
be signed by the requester using the signerInfos field.

Similarly, in situations where the Notary Authority will certify the 
time included in the request (i.e., when stipulated by the policy of the 
Notary Authority), the notary request MUST include the reqTime field in 
NotaryReqInfo. Thus, when verifying a 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. TimeStampToken is defined in Sect 2.4 of [TSA].

PolicyInformation is defined in Section 4.2.1.5 of [CCP].  The 
reqPolicy field SHOULD indicate the policy under which the notarization 
is requested or the policy for which certificate validity is to be
reported.  This field MUST be checked by the NA to verify agreement 
with its own policy or to determine certificate validity.  The absence 
of this field indicates that any policy is acceptable.

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 notarized) or the certificate to be verified.  

Data ::= CHOICE  {
     message                [0]  Message,
     messageimprint         [1]  MessageImprint,
     cert                   [2]  SEQUENCE SIZE (1..MAX) OF Certificate       
}

In order to specify the format (i.e. the type) of the message so that
it may be parsed and understood by the NA 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 }

If the requester prefers to send a hash of the message instead, the
MessageImprint data type SHOULD be used.

MessageImprint ::= SEQUENCE  {
     hashAlgorithm                AlgorithmIdentifier,
     hashedMessage                OCTET STRING  }

The hash algorithm indicated in the hashAlgorithm field SHOULD be a 
“strong” hash algorithm (that is, it SHOULD be one-way and collision 
resistant).  It is up to the Notary Authority to decide whether or not 
the given hash algorithm is sufficiently “strong” (based on the current 
state of knowledge in cryptanalysis and the current state of the art in 
computational resources, for example).

Document Expiration:  August 27, 1998                            Page 5

The hashedMessage field SHOULD contain the hash of the DER encoding of
the message expressed as a Message data type.  The hash is represented 
as an OCTET STRING.

The cert field SHOULD contain the certificate to be notarized.  If the
sequence has length greater than 1, then the certificates MUST indicate
a chain of trust to be used when notarizing the certificate.

A notary token is as follows.  It is encapsulated as a SignedData 
construct [CMS].  The content is of type NotaryInfo, which is indicated 
by the OID:

NotaryInfo OBJECT IDENTIFIER  ::= { ??????  }

The notary token MUST contain only the signature of the NA.

NotaryInfo ::= SEQUENCE  {
     notaryReqInfo                NotaryReqInfo,
       --MUST be the same value as the notaryReqInfo field in 
       --NotaryReqData
     messageImprint               MessageImprint,
       --if the data field in NotaryReqData is MessageImprint, this
       --MUST contain that same value, otherwise it contains a hash of
       --the data field in NotaryReqData using the hash algorithm
       --specified in the digestAlgorithm parameter of SignerInfo in 
       --the notary token
     reqSignature                 SignerInfo OPTIONAL,
       --MUST be present if service field of notaryReqInfo is npd
       --MUST be the same value as the signerInfo field in notary 
request
     policy                       PolicyInformation,
     status                       PKIStatusInfo,
     time                         NotaryTime, 
     chainCerts              [0]  SEQUENCE OF Certificate OPTIONAL, 
       --if present, MUST indicate the chain of trust that was used by 
       --the NA to verify the signature or certificate in NotaryReqData
     crls                    [2]  SEQUENCE OF CertificateList OPTIONAL 
   }

NotaryTime ::= CHOICE  {
     genTime                      GeneralizedTime,
     timeStampToken               TimeStampToken   }

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, the status field indicates whether or not the 
notary request was fulfilled and, if not, failInfo indicates the reason 
it was rejected.  A valid notary token will have a PKIStatus field with 
value ‘granted’ (0).  For the purposes of the NA, 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)

Document Expiration:  August 27, 1998                            Page 6

    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 format
    wrongAuthority   (6),
      -- the authority 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. 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]
    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”.

CertId is defined in Section 7.5 of [CRMF].

The crls field (if present) SHOULD contain a sequence of certificate and
authority revocation lists that is sufficient to verify the chain of 
trust indicated in the chainCerts field.
 
The reqSignature, chainCerts and crls 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. Transports

6.1. File Based Notary Protocol

A file containing a notary 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 notary messages using for example, 
FTP.



Document Expiration:  August 27, 1998                            Page 7

6.2. Socket Based Notary Protocol

The socket based protocol for notary messages is identical to that used 
in [CMP] Section 5.2 except that port 309 MUST be used.

6.3. Notary 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. 

A simple MIME object is specified as follows.

   Content-Type: application/notary
   Content-Transfer-Encoding: base64

   <<the ASN.1 DER-encoded Notary message, base64-encoded>>

This MIME object can be sent and received using MIME processing engines 
and provides a simple Internet mail transport for Notary messages.

6.4. Notary Protocol via HTTP

This subsection specifies a means for conveying ASN.1-encoded messages
for the protocol exchanges described in Section 4 via the HyperText 
Transfer Protocol.

A simple MIME object is specified as follows.

   Content-Type: application/notary

   <<the ASN.1 DER-encoded Notary message>>

This MIME object can be sent and received using common HTTP processing
engines over WWW links and provides a simple browser-server transport
for Notary messages.

7.  Security Considerations

This entire document discusses security considerations.

When designing a notary service, the following considerations have been
identified that have an impact upon the validity or “trust” in the 
notary token.

1.  The enclosed certificate is revoked or the signer’s key is 
        compromised and the corresponding certificate is revoked before 
        the notary acts upon the request. The notary is MAY to 
        validate appropriate information within the request before it 
        constructs the notary token.  It is therefore mandated that the 
        NA have access to current information regarding certificate 
        status before it creates the token.  In this situation, the 
        notarization process would produce an error.
     2. The enclosed certificate is revoked or the signer’s key is 
        compromised and the corresponding certificate is revoked after 
        the notary acts upon the request. This is not a concern to the 
        NA once the notary has constructed the token, as long as the 

Document Expiration:  August 27, 1998                            Page 8

        compromise date in the CRL is not before the time of 
        notarization.  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 notary’s private key is compromised and the corresponding 
        certificate is revoked.  In this case, any token signed by the 
        notary cannot be trusted.  For this reason, it is imperative 
        that the notary’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 NA SHOULD be 
        kept as a means to help discriminate between genuine and false 
        tokens.  
     4. The NA 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 NA 
        SHOULD be time stamped (if authentic copies of old CRLs 
        are available) or notarized again (if they aren’t) at a later 
        date to renew the trust that exists in the NA’s signature.  
        Notary 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 NA can no longer
        be trusted, the authority’s certificate MUST be revoked and 
        placed on the appropriate ARL.  Thus, at any future time the 
        tokens signed with the corresponding key will not be trusted.
6.  In certain circumstances, an NA may not be able to produce a 
        valid response to a request (for example, if it is unable to 
        compute signatures for a period of time).  In these situations   
        the NA MUST wait until it is again able to produce a valid  
        response and then respond to the request.  Under no 
        circumstances shall an NA produce an unsigned response to a 
        request.
7.  This protocol assumes that the CA has conducted a test for proof 
        of possession for each user's signing private key.  If this is 
        not the case, or when additional assurances are required, the 
        certificate of the reqester (resp. NA) SHALL be included in the 
        encapsulation of the notary request (resp. notary token) as an 
        authenticated attribute.

8. References

[TSA] C. Adams, P. Cain, D. Pinkas, R. Zuccherato, “Time Stamp 
Protocols,” draft-adams-time-stamp-0X.txt, 1997 (work in progress).

[CMP] C. Adams, S. Farrell, “Internet Public Key Infrastructure, 
Certificate Management Protocols,” draft-ietf-pkix-ipki3cmp-
0X.txt, 1997 (work in progress).

[CRMF] C. Adams, “Internet Public Key Infrastructure, Certificate
Request Message Format,” draft-ietf-pkix-crmf-0X.txt, 1998 (work in
progress).

[CCP] R. Housley, W. Ford, W. Polk, D. Solo, “Internet Public Key
Infrastructure, X.509 Certificate and CRL Profile,” draft-
ietf-pkix-ipki-part1-0X.txt, 1997 (work in progress).


Document Expiration:  August 27, 1998                            Page 9

[CMS] R. Housley “Cryptographic Message Syntax”, draft-ietf-smime-cms-
02.txt, 1998 (work in progress).

[ISONR] ISO/IEC 10181-5:  Security Frameworks in Open Systems.  
Non-Repudiation Framework.

[RFC2119] Key works for use in RFCs to Indicate Requirement Levels,
S. Bradner, RFC 2119, March 1997.

9. Authors’ Addresses

Carlisle Adams
Entrust Technologies
750 Heron Road
Ottawa, Ontario
K1V 1A7
CANADA
cadams@entrust.com

Robert Zuccherato
Entrust Technologies
750 Heron Road
Ottawa, Ontario
K1V 1A7
CANADA
robert.zuccherato@entrust.com































Document Expiration:  August 27, 1998                            Page 10

APPENDIX A - Storage of Data and Token

A notary 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 notarization process for that data meaningless.  
Storage of tokens and data in a secure (e.g., tamper proof) environment 
is strongly RECOMMENDED.

When data and notary tokens are stored together, the following ASN.1
data type MAY be used.

DataAndToken ::= SEQUENCE  {
     message                      Message,
     notaryToken                  Content Info  }

Note that this object does not need to be signed, as the notary token 
already verifies the integrity of the data in the message.  Any 
supplementary information whose integrity needs to be protected SHOULD 
be part of the message or token.



APPENDIX B - Extending the Life of a Signature

We present an example of a possible use of this notary 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 Notary 
Authority.

Signature algorithms and keys have a definite lifetime.  Therefore, 
signatures have a definite lifetime.  The Notary Authority 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 notarized.

     1) The signed message is presented to the Notary in the data 
        field of NotaryReqInfo under service type ns and an appropriate
        policy.

     2) The Notary verifies that the signature and verification key are
        valid at that time by checking expiry dates and status 
        information, and returns a notary token.

B)  The notarized signature MUST be verified.

     1) The signature of the Notary in notary token SHALL be verified
        using the Notary’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 NA’s 
signing key (and therefore, its signature) is valid until some specified
time T2 that is (usually) after time T1.  Without notarization, the 

Document Expiration:  August 27, 1998                            Page 11

signer’s signature would only be valid until time T1.  With 
notarization, the signer’s signature remains valid until time T2,
regardless of subsequent revocation or expiry at time T1.

If the signature of the NA is valid, the trust we have in the NA allows 
us to conclude that the original signature on the data was valid at 
the time included in the notaryInfo field of the notary token.  



APPENDIX C - Verifying the Status of a 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 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 NA MUST have access to current information
regarding certificate status, it can 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 certificate needs to be notarized.

     1) The certificate is presented to the Notary in the data field of 
        NotaryReqInfo under service type nc and an appropriate policy.

2)  The Notary verifies that the certificate is valid and that it
        hasn’t been revoked and then returns a notary token.

B)  The notary token MUST be verified.

     1) The signature of the Notary in notary token SHALL be verified
        using the Notary’s valid verification key.

This notary token can now be used when verifying signatures using the
key corresponding to the certificate.  This service provided by the 
NA can be thought of as a supplement to the usual method of checking 
revocation status.
















Document Expiration:  August 27, 1998                            Page 12