Contribution for the PKIX Working Group
Alan Lloyd(OpenDirectory)
 



Internet Draft Expires in six months                August 24, 1998


                Internet X.509 Public Key Infrastructure

               DIRECTORY SUPPORTED CERTIFICATE STATUS OPTIONS

                 <draft-lloyd-dir-cert-stat-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 view the entire list of current Internet-Drafts, please check
the "1id-abstracts.txt" listing contained in the Internet-Drafts
Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net
(Northern Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au
(Pacific Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu
(US West Coast).




Abstract

This Internet Draft specifies some proposed enhancements to the X.500 
information schema and matching rules to support Certificate path 
 processing, certificate status and CRL mechanisms. These
 enhancements provide advantages over existing Certificate validation
 and CRL mechanisms.  In particular, the mechanisms proposed can:

(a) reduce the need for unnecessarily fetching CRLs; 
(b) allow certificate status-CRL evaluation time to be improved;
(c) provide a directory supported certificate test and fetch 
    capability;
(d) better support use of certificates in multiple environments with 
    different CRL arrangements.
(e) simplify the client software in the areas of certificate path, 
    certificate validity and CRL processing.
(f) provide the client a range of trust options when validating 
    certificates.
(g) provide a range of implementation options so that gradual adoption
    is possible.

This document is submitted for consideration as the basis of possible 
future IETF/ITU standardization.  Please send comments on this 
document to the ietf-pkix@imc.com mail list.


Acknowledgments

This document has been developed in consideration of other documents 
that have been circulated on the pkix list. These documents identify 
issues associated with certificate validity processing and provide 
possible solutions to these issues.


1.  BACKGROUND

This draft (Dir-CertStat) (DCS) proposes a number of (X.500) directory 
based features and objects that can assist in the processing of 
certificate paths and testing the validity of certificates. However, 
the proposal does rely on the CA's schema management policy  and its 
supporting processing utilities to provide such objects. It is deemed 
that the way in which CAs (and multiple cross referenced CAs) manage 
their certificate environment and indicate their certificate 
validity, can have many variants in terms of information architectures.
 It is important for client software development that such variants do 
not have to be incorporated in the client software and in fact be 
subject to ongoing software maintenance because of CA evolution.

The current models for client - CA - certificate validation, put the 
onus on the client software design to comply to the many information 
schema policy options that CAs might put forward. Ie. The current CA 
directory data model is CA focussed, not client service focussed. 
This former approach is seen as being an unworkable situation for 
large scale systems. This proposal requests that CAs (and their 
directory systems) provide a uniform client interface for certificate 
validation, regardless of their information management policy.


In addition, some proposed validation models also permit information 
to be returned to the client that indicate the time and reason that 
the certificate was invalidated. This model has not incorporated such 
information on the basis that the client can do very little re 
invalidity. However, such features can be included if required. 






2. PRINCIPLES

Where public key certificates are applied and these are supported via 
directory services, a User/client that receives a signed message or 
wishes to encrypt a message for another recipient is required to 
verify the certificate of the public key material used. This includes 
validation of the certificate path in conjunction with its associated 
CRLS via the associated directory service.

In the certificate path validation process, the organisation and type 
of the CRLs used by the CA (direct or indirect or CRL distribution 
points) need to be "understood" or tracked/processed by the client. 
Specifically, the client software needs to understand "the CRL 
information management and policy" of the CA under which it operates. 
This process may be possible where a limited number of CAs are 
used by purpose built clients. However, it is important today that 
standard client software is of a generic nature so that it can be
 used under any CA. Also, where cross certification techniques are 
applied it is also necessary that the client software remains 
compatible.

The real solution to the client-CRL/validation problem is to have a 
directory supported function that a client can use when following a 
certificate path. Ie, the client can, in the same directory access, 
request validation of the presented certificate material as well as 
at the same time, retrieve the next certificate in the path. 
Naturally failure to validate the certificate presented, will 
terminate the access with an error without retrieving the next 
certificate. 
This client action can be achieved using a new directory matching 
rule and new CA directory objects. With these items, the client is 
not forced to understand the CRL management regimes of any particular 
CA. The client just needs to know what a valid/invalid certificate 
indication is.

This directory Search/Test feature is intended for "entry level" or 
commercial grade clients and CAs. Naturally, where greater degrees of 
trust are required, then the mechanisms and objects applied to CRL 
validation can be more extensive (as per the standard CRLs). 

There are four principles behind this proposal.

1. The CAs can use what ever CRL management approaches they chose, 
but are responsible for indicating validity/invalidity in a common 
way.

2.The User/client software is standard and efficient, regardless of 
the CA(s) they operate under.

3. Each directory access (a search) to follow a certificate path is 
accompanied with a matching rule that requests the nature of validity 
testing required. And that the directory system handles the "CRL 
evaluation".

4. That in the event of this feature not being available from the 
CA's directory service, the client can fall back to standard CRL 
processing - if required.





3. ELEMENTS OF THE PROPOSAL


There are two elements of the proposal:

(a) The Directory Access - Search/Validation Function;

(b) The Validation - Information Model of the CA.



4.	THE DIRECTORY ACCESS - SEARCH/VALIDATION FUNCTION.

In the client's LDAP/DAP (Search) request to retrieve the Issuer's 
certificate, the client presents the Subject's certificate attributes 
it has for validation and the validation type required. Included in 
these attributes is the DN of the Issuer. This is used to return the 
Issuer's certificate if the Subject's certificate is deemed valid.

For the sake of simplicity, it is assumed that the client has 
verified the signature integrity of the Subject's certificate and the 
Validity time. In addition the client may also validate any extension 
material (such as policy attributes) whose pre-configured values (if 
used) can be held in local storage. 
The certificate material presented to the directory system includes 
the Issuer DN, the Serial Number, the Subject DN and where used, the 
Subject and Issuer Unique Ids. Where extensions have been applied and 
these are critical to validation, the client can also submit these.


4.1 The Directory (DAP) Search is constructed as follows:

SearchArgument  ::=  OPTIONALLY-PROTECTED { SET {
    baseObject     [0]    Name, {set to the Certificate Issuer DN.
    subset         [1]    INTEGER {set to wholeSubtree(2)}
    filter         [2]    Filter {set to Validate Attrs - 
                           Matching Rule},
    searchAliases  [3]    BOOLEAN  DEFAULT TRUE,
    selection      [4]    {set to return Issuer certificate
                            and validation data} see below,
    pagedResults   [5]   PagedResultsRequest OPTIONAL {not applied},
    matchedValuesOnly    [6]    BOOLEAN DEFAULT FALSE {defaulted},
    extendedFilter       [7]    Filter OPTIONAL     {not used},
    checkOverspecified   [8]    BOOLEAN DEFAULT FALSE {not used},

    COMPONENTS OF CommonArguments {as required}},
    DIRQOP.&dapSearchArg-QOP{@dirqop} }



4.1.1 Selection:
The Directory (DAP) Search EIS (selection)can be constructed as 
follows:

Selection can be set to ALL attributes or:
attribute selection =
    select    [1]    SET OF AttributeType 
      where types = (issuers)certificate and BasicValidationResponse

Where validation records are required, then these attribute types 
should also be selected. 

Where ALL attributes are selected and returned, the client is 
responsible for processing the various entries. However, being non 
selective, may cause CRLs, etc to be returned.


The Directory (DAP) Search Filter is constructed as follows:

a) A Filter Item specifying the extensibleMatch    - 
MatchingRuleAssertion as specified in the section below.

b) Where extensible matches are not fully supported by the client or 
the directory service, a set of AND filter items can be used. The 
first item containing the matching rule assertion OID, the 
ValidationType and subsequent filter items containing the Subject 
certificate component attributes to be tested as AVAs. 
(Note this approach is not considered complete for this first draft. 
However, it does simplify client and directory software for initial 
implementation).



4.2 The Directory Response

The successful response to the validation request should be the CA's 
certificate and depending on validation options, the CA's 
BasicValidationResponse, the Subject's Validation Object with its 
BasicValidationResponse. Additionally a Validation Record may also be 
returned. (see below)


Where the matching rule is not supported by the directory service, 
then Attribute Problem - InappropriateMatching (X.511 - Errors) MUST 
be returned.





4.3 The Certificate Validation Matching Rule

The certificate validation matching rule compares a presented value 
with an attribute value of type CertificateValid. It selects 
validation material on the basis of various characteristics.

certificateValidMatch MATCHING-RULE ::= {
    SYNTAX   CertificateValidAssertion
    ID            id-TBA-certificateValidMatch }


CertificateValidAssertion ::= SEQUENCE {
    serialNumber            [0] CertificateSerialNumber, Subject SN
    subject                 [1] Name,    Subject DN
    subjectKeyIdentifier    [2] SubjectKeyIdentifier OPTIONAL,
    authorityKeyIdentifier  [3] AuthorityKeyIdentifier OPTIONAL,
    certificateValid        [4] Time OPTIONAL,
    privateKeyValid         [5] GeneralizedTime OPTIONAL,
    subjectPublicKeyAlgID   [6] OBJECT IDENTIFIER OPTIONAL,
    keyUsage                [7] KeyUsage OPTIONAL,
    subjectAltName          [8] AltNameType OPTIONAL,
    policy                  [9] CertPolicySet OPTIONAL,
    pathToName              [10] Name OPTIONAL,
    validationRequestor     [11] Name OPTIONAL,
    validationType          [12] ValidationType }


Note 1. Definitions are as per X.509 - 12.7.2.

Note 2. This matching rule is different from X.509 12.7.2 
CertificateAssertion, in that that parameter [1] is the Subject's 
(name - not the issuer, and that parameter [0] and [1] 
are mandatory.

Note 3. The certificate Issuer DN is provided as the Base Object 
parameter in the Search request.

Note 4.  The validation Requestor is the DN (domain) of the client, 
which if supplied and cross certificates are encountered, the cross 
certificate of the requestors Domain is supplied in the response. 
This area of operation requires study.




4.4 Validation Type
The Validation Type attribute is set to indicate what level of 
validation requested and validation response type by the client from 
the CA's directory service.
Note:This attribute must be provided by the client and not defaulted.


Simple: 
This value requests that if the validation is successful that the 
only response to the Search/Validate operation is the Issuer's 
certificate. Clients and CA directory systems MUST support this 
validation type.


Basic:
This value, requests that if the validation is successful that the 
response to the Search/Validate operation is the Issuer's certificate 
and a Validation Code.
Clients and CA directory systems MUST support this validation type.
 

Basic and Fail Code: 
This value, requests that if the validation is successful that the 
response to the Search/Validate operation is the Issuer's certificate 
and a Validation Code. If the Search/Validate operation indicates a 
validation failure, then the failure code is provided in the response.
Clients and CA directory systems MAY support this validation type.
 

Provide Record: 
This value, requests that if the validation is successful that the 
response to the Search/Validate operation is the Issuer's 
certificate and a Validation Record.
Clients and CA directory systems MAY support this validation type.


Provide Signed Record: 
This value, requests that if the validation is successful that the 
response to the Search/Validate operation is the Issuer's certificate 
and a Signed Validation Record. The signature key used is the 
Subject's certificate signature (the issuer's) key.
Clients and CA directory systems MAY support this validation type.


Extended: For additional validation methods. TBD




validationType ATTRIBUTE ::= {
      SYNTAX  validationTypeSyntax
      IDENTIFIED BY   { <oid tbd> } }

validationTypeSyntax ::=  INTEGER {simple (0), basic (1), 
basicAndFailCode (2), provideRecord (3),provideSignedRecord (4), 
extended (5)}




4.5 Basic Validation Response
The Basic Validation Response provides an indication (as well as the 
requested Issuer's certificate, if the Subject's certificate validity 
is true) in the Search/Validate response with value flags indicating 
the nature of the validation encountered. If there is a validity 
object present in the CA's directory, then the name of this object 
can be returned. Clients and CA directory systems MUST support this 
validation response.



BasicValidationResponse ::= SEQUENCE {
    basicValidationFlags  [0] BasicValidationFlags,
    validationTime        [1] Time,
    validityObject        [2] Name OPTIONAL,
    reasons               [3] ReasonFlags OPTIONAL }
    certPairProcessed     [4] INTEGER {fwd (0),rev (1)}OPTIONAL}} 


BasicValidationFlagsATTRIBUTE ::= {
      SYNTAX  basicValidationFlagsSyntax
      IDENTIFIED BY   { <oid tbd> } }

basicValidationFlagsSyntax ::=  INTEGER 
{valid (0), validAndCRLsProcessed (1),validityObjectPresent (2), 
certificate-invalid(255)}



4.6 Provide Record Responses
The Provide Record Responses is either an unsigned or signed 
attribute (depending on the validation response requested) 
indicating the nature of the validation. These response types are 
provided as audit records by the CA for the client.



SignedValidationRecord  ::=  SEQUENCE  {
      tbsValidationRecord  ValidationRecord,
      signatureAlgorithm   AlgorithmIdentifier,
      signatureValue     BIT STRING  }

   ValidationRecord ::=  SEQUENCE  {
      version                [0] EXPLICIT Version DEFAULT v1,
      serialNumber               CertificateSerialNumber,
      signature                  AlgorithmIdentifier,
      validatingCA               Name,
      time                       Time,
      subject                    Name,
      issuerUniqueID         [1] IMPLICIT UniqueIdentifier OPTIONAL,
      subjectUniqueID        [2] IMPLICIT UniqueIdentifier OPTIONAL,
      basicValidationFlags   [3] BasicValidationFlags,
      keyUsageTested         [4] keyUsage
      policyIDsValidated     [5] BOOLEAN OPTIONAL,
      policyIdentifier       [6] CertPolicyId OPTIONAL,
      crlsProcessed          [5] CRLsProcessed OPTIONAL, 
      reasons                [7] ReasonFlags OPTIONAL }

CRLsProcesssed ::= SEQUENCE {
         crlList           [0]     CRLList OPTIONAL,
         cRLIssuer         [1]     GeneralNames OPTIONAL }

   
CRLList ::= SET {serialNumber}

 KeyUsage ::= BIT STRING {
     digitalSignature     (0),
     nonRepudiation       (1),
     keyEncipherment      (2),
     dataEncipherment     (3),
     keyAgreement         (4),
     keyCertSign          (5),
     cRLSign              (6)}


 ReasonFlags ::= BIT STRING {
    unused                (0),
    keyCompromise         (1),
    cACompromise          (2),
    affiliationChanged    (3),
    superseded            (4),
    cessationOfOperation  (5),
    certificateHold       (6)}


Note the above processing does require that directory systems embrace 
a comprehensive validation process, which may be open to 
accreditation. However, if this level of validation and trust is 
required in the client software, then a similar accreditation issue 
exists.

It is a question of does the Client trust the CA and to what extent. 



5. THE VALIDATION - INFORMATION MODEL OF THE CA.

The Information model of the CA at the overall level is naturally the 
responsibility of the CA. From the level from a CA's Object Class in 
the CA's directory and what it represents this is defined in X.500. 
(Note: there may be more than one CA OC in the directory - depending 
on the number of certificate domains administered by this overall 
CA.) The CA(v2) OC is an Auxiliary OC and is added to a structural OC 
such as an Organisational Unit or Role depending on the CA's 
operational policy. This OC contains the CA Certificate(s) attribute 
including any Certificate Pair attributes. This OC may also contain 
any CRLs, ARLs or Delta CRLs. 

In addition X.509 defines a CRL Distribution Point structural OC 
which can contain the same items as the CA OC except for a CA 
certificate.

For the purpose of this proposal, each OC which represents a CA or an 
OC which represents a certificate status capability also contains the 
BasicValidationFlags attribute.


5.1 CA's DIB Design
>From an operational perspective of CA's DIB design, it is required 
that the CA system designer puts any CRL Distribution Point OCs in 
the DIB as named subordinate entries of the CA entry to which they 
relate. In addition, it will be normal practice for the CA to 
organise any entries that deal with the management of User/Client 
certificates (as issued), as named subordinate entries of the CA's 
entry. These entries could in fact contain copies of the Subject's 
certificate(s)as issued - for backup/archive reasons.


This proposal therefore demands two basic rules of operation for the 
CA's DIB.

1. In order to assist certificate validation for clients, the CA must 
have a disciplined directory information model and where 
appropriate, generate validation objects. These objects must be 
deemed as being useful for improved service levels or performance 
reasons.

2. That where such validation objects (or related Distribution Points 
containing CRLs, ARLs or Delta CRLs) are constructed, that they are 
placed as entries subordinate to the CA entry concerned in order for 
the Search/validation process to occur.

NOTE: In all cases where the client processes the CA's CRLs directly, 
etc, or provides a Search/Validate test operation on the CAs 
directory system. It is still the responsibility of the CA to make 
sure that such information is organised sensibly, available, correct 
and timely. This proposal does not alter this requirement.



5.2 Issued Certificate Details
A proposed Object Class that assists in the certificate validation 
process is provided below. This object represents each certificate 
issued by the CA. These objects when instantiated, are named relative 
to the CA entry by either a common name, a unique Id or DN qualifier, 
etc according to local policy. The matching rule used to validate the 
Subject's certificate locates this entry in the Search by using the 
Subjects DN value.


caIssuedCertDetails
The caIssuedCertDetails object class is used in defining entries and 
act as enablers for the management and validation of issued 
certificates. This object permits the CA to predefine validity flags.

cAIssuedCertDetails    OBJECT-CLASS    ::= {
    SUBCLASS OF { top }
    KIND           structural
    MUST CONTAIN  {commonName | 
                   subject |
                   serialNumber | 
                   basicValidationFlags }
MAY CONTAIN   {issuedCertificate |
                   subjectUniqueId }
    ID        id-oc-TBD }



5.3 Issued Certificate Group Details
This proposed Object Class also assists in the certificate 
validation process by grouping valid certificates. This object 
represents a group of certificates issued by the CA. These objects 
when instantiated, are named relative to the CA entry by either a 
common name, a unique Id or DN qualifier, etc according to local 
policy. 
The matching rule used to validate the Subject's certificate locates 
this entry in the Search by using the Subject's certificate serial 
number. Other validity attributes can be provided eg. Policy Ids.


caIssuedCertGroupDetails
The caIssuedCertGroupDetails object class is used in defining entries 
which act enablers for management and validation of issued 
certificates. This object permits the CA to predefine validity flags.

cAIssuedCertDetails    OBJECT-CLASS    ::= {
    SUBCLASS OF        { top }
    KIND            structural
    MUST CONTAIN    {commonName |
                lowSerialNumber | 
                highSerialNumber| 
                basicValidationFlags }

    MAY CONTAIN        { issuedCertificate |
                subjectUniqueId }
    ID        id-oc-TBD }


5.4 Other Validity Details
Additional Object Classes could also assist validation. These might 
be Policy Objects indicating what policies are valid/invalid.




6.  CROSS CERTIFICATION
This area requires additional study re the use of inter-working of CA 
directory domains and how these shared DIBs are orchestrated.




7.  EXAMPLES OF USE - Directory Process

The Search operation that has the validation matching rule applied 
and the validation level set to simple or basic operates in the 
following way.

a) If the proposed Matching Rule is not supported by the directory, 
the Search is terminated in error - Inappropriate Matching.


b) If there is no subordinate entries to the Issuer's CA's entry, 
and the entry does not contain the BasicValidationFlags attribute, 
then the Search is terminated in error - Inappropriate Matching. 

Otherwise the matching rule is processed on the CA's entry CRLs, 
ARLs  or DeltaCRLs and the BasicValidationFlags attribute value is 
returned with the CA's certificate if the BasicValidationFlags value 
is not set to certificate-invalid.

If the CA's entry has no CRL's, ARL's or DeltaCRL's present then 
and the BasicValidationFlags attribute value is returned with the 
CA's certificate if the BasicValidationFlags value is not set to 
certificate-invalid.


c) If there are subordinate entries to the Issuer's CA's entry, and 
the CA's entry does not contain the BasicValidationFlags attribute, 
then the Search is terminated in error - Inappropriate Matching. 

If there is a subordinate entry to the Issuer's CA's entry that 
matches the Subject's DN and the certificate serial number, and the 
CA's entry BasicValidationFlags attribute is not set to certificate-
invalid (blanket invalidation), then the subordinate entry's 
BasicValidationFlags attribute value is returned with the CA's 
certificate unless the subordinate entry's BasicValidationFlags 
value is not set to certificate-invalid (the subject's certificate 
isinvalid).



9.  PERFORMANCE ISSUES

This proposal requires additional objects/entries within the CAs 
directory system and therefore the CA process requires additional 
capacity to manage such objects. In addition the directory system 
must deal with the processing of the matching rules. Experience 
with scaleable (eg. 20 million entry) distributed (LDAP accessed 
X.500) RDBMS supported directory systems demonstrates that where 
additional functionality is required, then a higher rated platforms 
should be used. As this proposal is targeted at the larger CA - 
infrastructure providers, then it is considered that larger 
processing platforms, (that support millions of entries and 100's
  to 1000's of searches a second) can be used. This approach is in 
line with market forces and commercial service providers in offering 
competitive and improved service levels.



10.  SECURITY ISSUES

This proposal provides a range of certificate validation trust levels.
 And no doubt many security issues can be postulated. Eg. An attacker 
might provide replay or masquerading techniques to make a client 
erroneously believe that a certificate was valid when it had in fact 
been revoked. For this reason the validation level requested MUST be 
used as appropriate. 

In addition, trust eventually comes down to implementation features 
and quality - and these are always constrained by cost. Any security 
issues deemed with the above proposals should consider the 
implementation issues. Where higher degrees of trust are needed, 
then Signed/Confidential directory services can be used. In addition,
 the CAs information management processes should be formally 
accredited.


11.  INTELLECTUAL PROPERTY STATEMENT

The author(s) have no knowledge of any pending or granted patents 
covering the techniques described, except for the Entrust patent on 
CDPs. The mechanisms described are not inherently dependent on CDPs, 
and can be used in a way which may not require licensing of the 
Entrust patent. 

The mechanisms proposed are provided as a contribution to the 
development of CAs and Directory systems.


11.  REFERENCES
 TBD

Expires in six months                       August 24, 1998


Author Address:

   Alan lloyd
    OpenDirectory Pty Ltd.
    266 Maroondah Highway
    Mooroolbark 3138
    Australia
    Alan.lloyd@opendirectory.com.au