home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_j_p / draft-ietf-pkix-ipki-part1-03.txt < prev    next >
Text File  |  1996-12-23  |  135KB  |  3,660 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6. PKIX Working Group                                   R. Housley (SPYRUS)
  7. Internet Draft                                        W. Ford (Verisign)
  8.                                                           W. Polk (NIST)
  9.                                                            D. Solo (BBN)
  10. expires in six months                                      December 1996
  11.  
  12.  
  13.                    Internet Public Key Infrastructure
  14.  
  15.                Part I:  X.509 Certificate and CRL Profile
  16.  
  17.                   <draft-ietf-pkix-ipki-part1-03.txt>
  18.  
  19.  
  20. Status of this Memo
  21.  
  22.    This document is an Internet-Draft.  Internet-Drafts are working
  23.    documents of the Internet Engineering Task Force (IETF), its areas,
  24.    and its working groups.  Note that other groups may also distribute
  25.    working documents as Internet-Drafts.
  26.  
  27.    Internet-Drafts are draft documents valid for a maximum of six months
  28.    and may be updated, replaced, or obsoleted by other documents at any
  29.    time.  It is inappropriate to use Internet- Drafts as reference
  30.    material or to cite them other than as "work in progress."
  31.  
  32.    To learn the current status of any Internet-Draft, please check the
  33.    "1id-abstracts.txt" listing contained in the Internet- Drafts Shadow
  34.    Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  35.    munnari.oz.au Pacific Rim), ds.internic.net (US East Coast), or
  36.    ftp.isi.edu (US West Coast).
  37.  
  38.  
  39. Abstract
  40.  
  41.    This is the second draft of the Internet Public Key Infrastructure
  42.    X.509 Certificate and CRL Profile.  Since the first version was
  43.    distributed, ISO has completed work on X.509 Version 3 Certificates
  44.    and X.509 Version 2 Certificate Revocation Lists (CRLs).  Many of the
  45.    Internet community requirements that were in the previous version of
  46.    this document have been included in the final ISO document.  As a
  47.    result, this document has gotten simpler.  Please send comments on
  48.    this document to the ietf-pkix@tandem.com mail list.
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57. Housley, Ford, Polk, & Solo                                     [Page 1]
  58.  
  59.  
  60.  
  61.  
  62.  
  63. INTERNET DRAFT                                             December 1996
  64.  
  65.  
  66. 1  Executive Summary
  67.  
  68.    This specification is Part 1 of a four part standard for development
  69.    of a Public Key Infrastructure for the Internet.  This specification
  70.    is a standalone document; implementations of this standard may
  71.    proceed before completion of parts two through four.
  72.  
  73.    This specification profiles the format and semantics of certificates
  74.    and certificate revocation lists for the Internet PKI.  Procedures
  75.    are described for processing of certification paths in the Internet
  76.    environment.  Encoding rules are provided for popular cryptographic
  77.    algorithms.  Finally, a comprehensive ASN.1 module is provided in the
  78.    appendices for all data structure defined or referenced.
  79.  
  80.    The specification presents profiles of the X.509 version 3
  81.    certificate and version 2 certificate revocation lists. The profiles
  82.    include the identification of ISO and ANSI extensions which may be
  83.    useful in the Internet PKI and definition of new extensions to meet
  84.    the Internet's requirements. The profiles are presented in the 1988
  85.    Abstract Syntax Notation One (ASN.1) rather than the 1993 syntax used
  86.    in the ISO standards.
  87.  
  88.    This specification also includes path validation procedures.  These
  89.    procedures are based upon the ISO definition, but incorporate the
  90.    Internet defined extensions.  Implementations are required to derive
  91.    the same results but are not required to use the specified
  92.    procedures.
  93.  
  94.    Finally, the specification describes procedures for identification
  95.    and encoding of public key materials and digital signatures.
  96.    Implementations are not required to use any particular cryptographic
  97.    algorithms.  However, conforming implementations which use the
  98.    identified algorithms are required to identify and encode the public
  99.    key materials and digital signatures as described.
  100.  
  101.    An Appendix is provided containing all ASN.1 structures defined or
  102.    referenced within this specification.  As above, the material is
  103.    presented in the 1988 Abstract Syntax Notation One (ASN.1) rather
  104.    than the 1993 syntax.
  105.  
  106. 2  Requirements and Assumptions
  107.  
  108.    Goal is to develop a profile and associated management structure to
  109.    facilitate the adoption/use of X.509 certificates within Internet
  110.    applications for those communities wishing to make use of X.509
  111.    technology. Such applications may include WWW, electronic mail, user
  112.    authentication, and IPSEC, as well as others.  In order to relieve
  113.    some of the obstacles to using X.509 certificates, this document
  114.  
  115.  
  116.  
  117. Housley, Ford, Polk, & Solo                                     [Page 2]
  118.  
  119.  
  120.  
  121.  
  122.  
  123. INTERNET DRAFT                                             December 1996
  124.  
  125.  
  126.    defines a profile to promote the development of certificate
  127.    management systems; development of application tools; and
  128.    interoperability determined by policy, as opposed to syntax.
  129.  
  130.    Some communities will need to supplement, or possibly replace, this
  131.    profile in order to meet the requirements of specialized application
  132.    domains or environments with additional authorization, assurance, or
  133.    operational requirements.  However, for basic applications, common
  134.    representations of frequently used attributes are defined so that
  135.    application developers can obtain necessary information without
  136.    regard to the issuer of a particular certificate or certificate
  137.    revocation list (CRL).
  138.  
  139.    As supplemental authorization and attribute management tools emerge,
  140.    such as attribute certificates, it may be appropriate to limit the
  141.    authenticated attributes that are included in a certificate.  These
  142.    other management tools may be more appropriate method of conveying
  143.    many authenticated attributes.
  144.  
  145. 2.1  Communication and Topology
  146.  
  147.    The users of certificates will operate in a wide range of
  148.    environments with respect to their communication topology, especially
  149.    users of secure electronic mail.  This profile supports users without
  150.    high bandwidth, real-time IP connectivity, or high connection
  151.    availablity.  In addition, the profile allows for the presence of
  152.    firewall or other filtered communication.
  153.  
  154.    This profile does not assume the deployment of an X.500 Directory
  155.    system.  The profile does not prohibit the use of an X.500 Directory,
  156.    but other means of distributing certificates and certificate
  157.    revocation lists (CRLs) are supported.
  158.  
  159. 2.2  Acceptability Criteria
  160.  
  161.    The goal of the Internet Public Key Infrastructure (PKI) is to meet
  162.    the needs of deterministic, automated identification, authentication,
  163.    access control, and authorization functions. Support for these
  164.    services determines the attributes contained in the certificate as
  165.    well as the ancillary control information in the certificate such as
  166.    policy data and certification path constraints.
  167.  
  168. 2.3  User Expectations
  169.  
  170.    Users of the Internet PKI are people and processes who use client
  171.    software and are the subjects named in certificates.  These uses
  172.    include readers and writers of electronic mail, the clients for WWW
  173.    browsers, WWW servers, and the key manager for IPSEC within a router.
  174.  
  175.  
  176.  
  177. Housley, Ford, Polk, & Solo                                     [Page 3]
  178.  
  179.  
  180.  
  181.  
  182.  
  183. INTERNET DRAFT                                             December 1996
  184.  
  185.  
  186.    This profile recognizes the limitations of the platforms these users
  187.    employ and the sophistication/attentiveness of the users themselves.
  188.    This manifests itself in minimal user configuration responsibility
  189.    (e.g., root keys, rules), explicit platform usage constraints within
  190.    the certificate, certification path constraints which shield the user
  191.    from many malicious actions, and applications which sensibly automate
  192.    validation functions.
  193.  
  194. 2.4  Administrator Expectations
  195.  
  196.    As with users, the Internet PKI profile is structured to support the
  197.    individuals who generally operate Certification Authorities (CAs).
  198.    Providing administrators with unbounded choices increases the chances
  199.    that a subtle CA administrator mistake will result in broad
  200.    compromise.  Also, unbounded choices greatly complicates the software
  201.    that must process and validate the  certificates created by the CA.
  202.  
  203. 3  Overview of Approach
  204.  
  205.    Following is a simplified view of the architectural model assumed by
  206.    the PKIX specifications.
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237. Housley, Ford, Polk, & Solo                                     [Page 4]
  238.  
  239.  
  240.  
  241.  
  242.  
  243. INTERNET DRAFT                                             December 1996
  244.  
  245.  
  246.       +---+
  247.       | C |                       +------------+
  248.       | e | <-------------------->| End entity |
  249.       | r |       Operational     +------------+
  250.       | t |       transactions         ^
  251.       |   |      and management        |  Management
  252.       | / |       transactions         |  transactions
  253.       |   |                            |
  254.       | C |    PKI users               v
  255.       | R |             -------+-------+--------+------
  256.       | L |   PKI management   ^                ^
  257.       |   |      entities      |                |
  258.       |   |                    v                |
  259.       | R |                 +------+            |
  260.       | e | <-------------- | RA   | <-----+    |
  261.       | p |   certificate   |      |       |    |
  262.       | o |       publish   +------+       |    |
  263.       | s |                                |    |
  264.       | I |                                v    v
  265.       | t |                            +------------+
  266.       | o | <--------------------------|     CA     |
  267.       | r |   certificate publish      +------------+
  268.       | y |           CRL publish             ^
  269.       |   |                                   |
  270.       +---+                                   |    Management
  271.                                               |    transactions
  272.                                               v
  273.                                           +------+
  274.                                           |  CA  |
  275.                                           +------+
  276.  
  277.                           Figure 1 - PKI Entities
  278.  
  279.    The components in this model are:
  280.  
  281.    end entity:  user of PKI certificates and/or end user system that
  282.                 the PKI certifies;
  283.    CA:          certification authority;
  284.    RA:          registration authority, i.e., an optional system to
  285.                 which a CA delegates certain management functions;
  286.    repository:  a system or collection of distributed systems that
  287.                 store certificates and CRLs and serves as a means of
  288.                 distributing these certificates and CRLs to end
  289.                 entities.
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297. Housley, Ford, Polk, & Solo                                     [Page 5]
  298.  
  299.  
  300.  
  301.  
  302.  
  303. INTERNET DRAFT                                             December 1996
  304.  
  305.  
  306. 3.1  X.509 Version 3 Certificate
  307.  
  308.    Application of public key technology requires the user of a public
  309.    key to be confident that the public key belongs to the correct remote
  310.    subject (person or system) with which an encryption or digital
  311.    signature mechanism will be used.  This confidence is obtained
  312.    through the use of public key certificates, which are data structures
  313.    that bind public key values to subject identities.  The binding is
  314.    achieved by having a trusted certification authority (CA) digitally
  315.    sign each certificate.  A certificate has a limited valid lifetime
  316.    which is indicated in its signed contents.  Because a certificate's
  317.    signature and timeliness can be independently checked by a
  318.    certificate-using client, certificates can be distributed via
  319.    untrusted communications and server systems, and can be cached in
  320.    unsecured storage in certificate-using systems.
  321.  
  322.    The standard known as ITU-T X.509 (formerly CCITT X.509) or ISO/IEC
  323.    9594-8, which was first published in 1988 as part of the X.500
  324.    Directory recommendations, defines a standard certificate format. The
  325.    certificate format in the 1988 standard is called the version 1 (v1)
  326.    format.  When X.500 was revised in 1993, two more fields were added,
  327.    resulting in the version 2 (v2) format. These two fields are used to
  328.    support directory access control.
  329.  
  330.    The Internet Privacy Enhanced Mail (PEM) proposals, published in
  331.    1993, include specifications for a public key infrastructure based on
  332.    X.509 v1 certificates [RFC 1422].  The experience gained in attempts
  333.    to deploy RFC 1422 made it clear that the v1 and v2 certificate
  334.    formats are deficient in several respects.  Most importantly, more
  335.    fields were needed to carry information which PEM design and
  336.    implementation experience has proven necessary.  In response to these
  337.    new requirements, ISO/IEC and ANSI X9 developed the X.509 version 3
  338.    (v3) certificate format.  The v3 format extends the v2 format by
  339.    adding provision for additional extension fields.  Particular
  340.    extension field types may be specified in standards or may be defined
  341.    and registered by any organization or community. In June 1996,
  342.    standardization of the basic v3 format was completed [X.509-AM].
  343.  
  344.    ISO/IEC and ANSI X9 have also developed a set of standard extensions
  345.    for use in the v3 extensions field [X.509-AM][X9.55].  These
  346.    extensions can convey such data as additional subject identification
  347.    information, key attribute information, policy information, and
  348.    certification path constraints.
  349.  
  350.    However, the ISO/IEC and ANSI standard extensions are very broad in
  351.    their applicability.  In order to develop interoperable
  352.    implementations of X.509 v3 systems for Internet use, it is necessary
  353.    to specify a profile for use of the X.509 v3 extensions tailored for
  354.  
  355.  
  356.  
  357. Housley, Ford, Polk, & Solo                                     [Page 6]
  358.  
  359.  
  360.  
  361.  
  362.  
  363. INTERNET DRAFT                                             December 1996
  364.  
  365.  
  366.    the Internet.  It is one goal of this document to specify a profile
  367.    for Internet WWW, electronic mail, and IPSEC applications.
  368.    Environments with additional requirements may build on this profile
  369.    or may replace it.
  370.  
  371. 3.2  Certification Paths and Trust
  372.  
  373.    A user of a security service requiring knowledge of a public key
  374.    generally needs to obtain and validate a certificate containing the
  375.    required public key.  If the public-key user does not already hold an
  376.    assured copy of the public key of the CA that signed the certificate,
  377.    then it might need an additional certificate to obtain that public
  378.    key.  In general, a chain of multiple certificates may be needed,
  379.    comprising a certificate of the public key owner (the end entity)
  380.    signed by one CA, and zero or more additional certificates of CAs
  381.    signed by other CAs.  Such chains, called certification paths, are
  382.    required because a public key user is only initialized with a limited
  383.    number (often one) of assured CA public keys.
  384.  
  385.    There are different ways in which CAs might be configured in order
  386.    for public key users to be able to find certification paths.  For
  387.    PEM, RFC 1422 defined a rigid hierarchical structure of CAs.  There
  388.    are three types of PEM certification authority:
  389.  
  390.    (a)  Internet Policy Registration Authority (IPRA):  This authority,
  391.    operated under the auspices of the Internet Society, acts as the root
  392.    of the PEM certification hierarchy at level 1.  It issues
  393.    certificates only for the next level of authorities, PCAs.  All
  394.    certification paths start with the IPRA.
  395.  
  396.    (b)  Policy Certification Authorities (PCAs):  PCAs are at level 2 of
  397.    the hierarchy, each PCA being certified by the IPRA.  A PCA must
  398.    establish and publish a statement of its policy with respect to
  399.    certifying users or subordinate certification authorities.  Distinct
  400.    PCAs aim to satisfy different user needs. For example, one PCA (an
  401.    organizational PCA) might support the general electronic mail needs
  402.    of commercial organizations, and another PCA (a high-assurance PCA)
  403.    might have a more stringent policy designed for satisfying legally
  404.    binding signature requirements.
  405.  
  406.    (c)  Certification Authorities (CAs):  CAs are at level 3 of the
  407.    hierarchy and can also be at lower levels. Those at level 3 are
  408.    certified by PCAs.  CAs represent, for example, particular
  409.    organizations, particular organizational units (e.g., departments,
  410.    groups, sections), or particular geographical areas.
  411.  
  412.    RFC 1422 furthermore has a name subordination rule which requires
  413.    that a CA can only issue certificates for entities whose names are
  414.  
  415.  
  416.  
  417. Housley, Ford, Polk, & Solo                                     [Page 7]
  418.  
  419.  
  420.  
  421.  
  422.  
  423. INTERNET DRAFT                                             December 1996
  424.  
  425.  
  426.    subordinate (in the X.500 naming tree) to the name of the CA itself.
  427.    The trust associated with a PEM certification  path is implied by the
  428.    PCA name. The name subordination rule ensures that CAs below the PCA
  429.    are sensibly constrained as to the set of subordinate entities they
  430.    can certify (e.g., a CA for an organization can only certify entities
  431.    in that organization's name tree). Certificate user systems are able
  432.    to mechanically check that the name subordination rule has been
  433.    followed.
  434.  
  435.    The RFC 1422 CA hierarchical model has been found to have several
  436.    deficiencies, including:
  437.  
  438.    (a)  The pure top-down hierarchy, with all certification paths
  439.    starting from the root, is too restrictive for many purposes.  For
  440.    some applications, verification of certification paths should start
  441.    with a public key of a CA in a user's own domain, rather than
  442.    mandating that verification commence at the top of a hierarchy. In
  443.    many environments, the local domain is often the most trusted.  Also,
  444.    initialization and key-pair-update operations can be more effectively
  445.    conducted between an end entity and a local management system.
  446.  
  447.    (b)  The name subordination rule introduces undesirable constraints
  448.    upon the X.500 naming system an organization may use.
  449.  
  450.    (c)  Use of the PCA concept requires knowledge of individual PCAs to
  451.    be built into certificate chain verification logic.  In the
  452.    particular case of Internet mail, this is not a major problem -- the
  453.    PCA name can always be displayed to the human user who can make a
  454.    decision as to what trust to imply from a particular chain.  However,
  455.    in many commercial applications, such as electronic commerce or EDI,
  456.    operator intervention to make policy decisions is impractical.  The
  457.    process needs to be automated to a much higher degree.  In fact, the
  458.    full process of certificate chain processing needs to be
  459.    implementable in trusted software.
  460.  
  461.    Because of the above shortcomings, it is proposed that more flexible
  462.    CA structures than the RFC 1422 hierarchy be supported by the PKIX
  463.    specifications.  In fact, the main reason for the structural
  464.    restrictions imposed by RFC 1422 was the restricted certificate
  465.    format provided with X.509 v1.  With X.509 v3, most of the
  466.    requirements addressed by RFC 1422 can be addressed using certificate
  467.    extensions, without a need to restrict the CA structures used.  In
  468.    particular, the certificate extensions relating to certificate
  469.    policies obviate the need for PCAs and the constraint extensions
  470.    obviate the need for the name subordination rule.
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477. Housley, Ford, Polk, & Solo                                     [Page 8]
  478.  
  479.  
  480.  
  481.  
  482.  
  483. INTERNET DRAFT                                             December 1996
  484.  
  485.  
  486. 3.3  Revocation
  487.  
  488.    When a certificate is issued, it is expected to be in use for its
  489.    entire validity period.  However, various circumstances may cause a
  490.    certificate to become invalid prior to the expiration of the validity
  491.    period. Such circumstances might include change of name, change of
  492.    association between subject and CA (e.g., an employee terminates
  493.    employment with an organization), and compromise or suspected
  494.    compromise of the corresponding private key.  Under such
  495.    circumstances, the CA needs to revoke the certificate.
  496.  
  497.    X.509 defines one method of certificate revocation.  This method
  498.    involves each CA periodically issuing a signed data structure called
  499.    a certificate revocation list (CRL).  A CRL is a time stamped list
  500.    identifying revoked certificates which is signed by a CA and made
  501.    freely available in a public repository.  Each revoked certificate is
  502.    identified in a CRL by its certificate serial number. When a
  503.    certificate-using system uses a certificate (e.g., for verifying a
  504.    remote user's digital signature), that system not only checks the
  505.    certificate signature and validity but also acquires a suitably-
  506.    recent CRL and checks that the certificate serial number is not on
  507.    that CRL.  The meaning of "suitably-recent" may vary with local
  508.    policy, but it usually means the most recently-issued CRL.  A CA
  509.    issues a new CRL on a regular periodic basis (e.g., hourly, daily, or
  510.    weekly).  Entries are added to CRLs as revocations occur, and an
  511.    entry may be removed when the certificate expiration date is reached.
  512.  
  513.    An advantage of this revocation method is that CRLs may be
  514.    distributed by exactly the same means as certificates themselves,
  515.    namely, via untrusted communications and server systems.
  516.  
  517.    One limitation of the CRL revocation method, using untrusted
  518.    communications and servers, is that the time granularity of
  519.    revocation is limited to the CRL issue period.  For example, if a
  520.    revocation is reported now, that revocation will not be reliably
  521.    notified to certificate-using systems until the next periodic CRL is
  522.    issued -- this may be up to one hour, one day, or one week depending
  523.    on the frequency that the CA issues CRLs.
  524.  
  525.    Another potential problem with CRLs is the risk of a CRL growing to
  526.    an entirely unacceptable size.  In the 1988 and 1993 versions of
  527.    X.509, the CRL for the end-user certificates needed to cover the
  528.    entire population of end-users for one CA.  It is desirable to allow
  529.    such populations to be in the range of thousands, tens of thousands,
  530.    or possibly even hundreds of thousands of users. The end-user CRL is
  531.    therefore at risk of growing to such sizes, which present major
  532.    communication and storage overhead problems.  With the version 2 CRL
  533.    format, introduced along with the v3 certificate format, it becomes
  534.  
  535.  
  536.  
  537. Housley, Ford, Polk, & Solo                                     [Page 9]
  538.  
  539.  
  540.  
  541.  
  542.  
  543. INTERNET DRAFT                                             December 1996
  544.  
  545.  
  546.    possible to arbitrarily divide the population of certificates for one
  547.    CA into a number of partitions, each partition being associated with
  548.    one CRL distribution point (e.g., directory entry or URL) from which
  549.    CRLs are distributed.  Therefore, the maximum CRL size can be
  550.    controlled by a CA.  Separate CRL distribution points can also exist
  551.    for different revocation reasons.  For example, routine revocations
  552.    (e.g., name change) may be placed on a different CRL to revocations
  553.    resulting from suspected key compromises, and policy may specify that
  554.    the latter CRL be updated and issued more frequently than the former.
  555.  
  556.    As with the X.509 v3 certificate format, in order to facilitate
  557.    interoperable implementations from multiple vendors, the X.509 v2 CRL
  558.    format needs to be profiled for Internet use.  It is one goal of this
  559.    document to specify such profiles.
  560.  
  561.    Furthermore, it is recognized that on-line methods of revocation
  562.    notification may be applicable in some environments as an alternative
  563.    to the X.509 CRL.  On-line revocation checking eliminates the latency
  564.    between a revocation report and CRL the next issue.  Once the
  565.    revocation is reported, any query to the on-line service will
  566.    correctly reflect the certificate validation impacts of the
  567.    revocation.  Therefore, this profile will also consider standard
  568.    approaches to on-line revocation notification.
  569.  
  570. 3.4  Operational Protocols
  571.  
  572.    Operational protocols are required to deliver certificates and CRLs
  573.    to certificate using client systems. Provision is needed for a
  574.    variety of different means of certificate and CRL delivery, including
  575.    request/delivery procedures based on E-mail, http, X.500, and
  576.    WHOIS++.  These specifications include definitions of, and/or
  577.    references to, message formats and procedures for supporting all of
  578.    the above operational environments, including definitions of or
  579.    references to appropriate MIME content types.
  580.  
  581. 3.5  Management Protocols
  582.  
  583.    Management protocols are required to support on-line interactions
  584.    between Public Key Infrastructure (PKI) components.  For example,
  585.    management protocol might be used between a CA and a client system
  586.    with which a key pair is associated, or between two CAs which cross-
  587.    certify each other.  The set of functions which potentially need to
  588.    be supported by management protocols include:
  589.  
  590.    (a)  registration:  This is the process whereby a user first makes
  591.    itself known to a CA, prior to that CA issuing  a certificate or
  592.    certificates for that user.
  593.  
  594.  
  595.  
  596.  
  597. Housley, Ford, Polk, & Solo                                    [Page 10]
  598.  
  599.  
  600.  
  601.  
  602.  
  603. INTERNET DRAFT                                             December 1996
  604.  
  605.  
  606.    (b)  initialization:  Before a client system can operate securely it
  607.    is necessary to install in it necessary key materials which have the
  608.    appropriate relationship with keys stored elsewhere in the
  609.    infrastructure.  For example, the client needs to be securely
  610.    initialized with the public key of a CA, to be used in validating
  611.    certificate paths.  Furthermore, a client typically needs to be
  612.    initialized with its own key pair(s).
  613.  
  614.    (c)  certification:  This  is the process in which a CA issues a
  615.    certificate for a user's public key, and returns that certificate to
  616.    the user's client system and/or posts that certificate in a public
  617.    repository.
  618.  
  619.    (d)  key pair recovery:  As an option, user client key materials
  620.    (e.g., a user's private key used for encryption purposes) may be
  621.    backed up by a CA or a key backup system associated with a CA.  If a
  622.    user needs to recover these backed up key materials (e.g., as a
  623.    result of a forgotten password or a lost key chain file), an on-line
  624.    protocol exchange may be needed to support such recovery.
  625.  
  626.    (e)  key pair update:  All key pairs need to be updated regularly,
  627.    i.e., replaced with a new key pair, and new certificates issued.
  628.  
  629.    (f)  revocation request:  An authorized person advises a CA of an
  630.    abnormal situation requiring certificate revocation.
  631.  
  632.    (g)  cross-certification:  Two CAs exchange the information necessary
  633.    to establish cross-certificates between those CAs.
  634.  
  635.    Note that on-line protocols are not the only way of implementing the
  636.    above functions.  For all functions there are off-line methods of
  637.    achieving the same result, and this specification does not mandate
  638.    use of on- line protocols.  For example, when hardware tokens are
  639.    used, many of the functions may be achieved through as part of the
  640.    physical token delivery.  Furthermore, some of the above functions
  641.    may be combined into one protocol exchange.  In particular, two or
  642.    more of the registration, initialization, and certification functions
  643.    can be combined into one protocol exchange.
  644.  
  645.    Part 3 of the PKIX series of specifications defines a set of standard
  646.    message formats supporting the above functions.  The protocols for
  647.    conveying these messages in different environments (on-line, e-mail,
  648.    and WWW) are also specified.
  649.  
  650. 4  Certificate and Certificate Extensions Profile
  651.  
  652.    This section presents a profile for public key certificates that will
  653.    foster interoperability and a reusable public key infrastructure.
  654.  
  655.  
  656.  
  657. Housley, Ford, Polk, & Solo                                    [Page 11]
  658.  
  659.  
  660.  
  661.  
  662.  
  663. INTERNET DRAFT                                             December 1996
  664.  
  665.  
  666.    This section is based upon the X.509 V3 certificate format and the
  667.    standard certificate extensions defined in the Amendment [X.509-AM].
  668.    The ISO definitions use the 1993 version of ASN.1; while this
  669.    document uses the older ASN.1 syntax, the encoded certificate and
  670.    standard extensions are equivalent.  This section also defines
  671.    private extensions required to support a public key infrastructure
  672.    for the Internet community.
  673.  
  674.    Certificates may be used in a wide range of applications and
  675.    environments covering a broad spectrum of interoperability goals and
  676.    a broader spectrum of operational and assurance requirements.  The
  677.    goal of this document is to establish a common baseline for generic
  678.    applications requiring broad interoperability and limited special
  679.    purpose requirements.  In particular, the emphasis will be on
  680.    supporting the use of X.509 v3 certificates for informal internet
  681.    electronic mail, IPSEC, and WWW applications.  Other efforts are
  682.    looking at certificate profiles for payment systems.
  683.  
  684. 4.1  Basic Certificate Fields
  685.  
  686.    The X.509 v3 certificate basic syntax is as follows.  For signature
  687.    calculation, the certificate is encoded using the ASN.1 distinguished
  688.    encoding rules (DER) [X.208].  ASN.1 DER encoding is a tag, length,
  689.    value encoding system for each element.
  690.  
  691.    Certificate  ::=  SEQUENCE  {
  692.         tbsCertificate       TBSCertificate,
  693.         signatureAlgorithm   AlgorithmIdentifier,
  694.         signature            BIT STRING  }
  695.  
  696.    TBSCertificate  ::=  SEQUENCE  {
  697.         version         [0]  Version DEFAULT v1,
  698.         serialNumber         CertificateSerialNumber,
  699.         signature            AlgorithmIdentifier,
  700.         issuer               Name,
  701.         validity             Validity,
  702.         subject              Name,
  703.         subjectPublicKeyInfo SubjectPublicKeyInfo,
  704.         issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
  705.                              -- If present, version must be v2 or v3
  706.         subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
  707.                              -- If present, version must be v2 or v3
  708.         extensions      [3]  Extensions OPTIONAL
  709.                              -- If present, version must be v3
  710.         }
  711.  
  712.    Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }
  713.  
  714.  
  715.  
  716.  
  717. Housley, Ford, Polk, & Solo                                    [Page 12]
  718.  
  719.  
  720.  
  721.  
  722.  
  723. INTERNET DRAFT                                             December 1996
  724.  
  725.  
  726.    CertificateSerialNumber  ::=  INTEGER
  727.  
  728.    Validity ::= SEQUENCE {
  729.         notBefore      CertificateValidityDate,
  730.         notAfter       CertificateValidityDate }
  731.  
  732.    CertificateValidityDate ::= CHOICE {
  733.         utcTime        UTCTime,
  734.         generalTime    GeneralizedTime }
  735.  
  736.    UniqueIdentifier  ::=  BIT STRING
  737.  
  738.    SubjectPublicKeyInfo  ::=  SEQUENCE  {
  739.         algorithm            AlgorithmIdentifier,
  740.         subjectPublicKey     BIT STRING  }
  741.  
  742.    Extensions  ::=  SEQUENCE OF Extension
  743.  
  744.    Extension  ::=  SEQUENCE  {
  745.         extnID      OBJECT IDENTIFIER,
  746.         critical    BOOLEAN DEFAULT FALSE,
  747.         extnValue   OCTET STRING  }
  748.  
  749.    The following items describe a proposed use of the X.509 v3
  750.    certificate for the Internet.
  751.  
  752. 4.1.1  Certificate Fields
  753.  
  754.    The Certificate is a SEQUENCE of three required fields. The fields
  755.    are are described in detail in the following subsections
  756.  
  757. 4.1.1.1  tbsCertificate
  758.  
  759.    The first field in the sequence is the tbsCertificate.  This is a
  760.    itself a sequence, and contains the names of the subject and issuer,
  761.    a public key associated with the subject an expiration date, and
  762.    other associated information.  The fields of the basic tbsCertificate
  763.    are described in detail in section 4.1.2; the tbscertificate may also
  764.    include extensions which are described in section 4.2.
  765.  
  766. 4.1.1.2  signatureAlgorithm
  767.  
  768.    The signatureAlgorithm field contains the algorithm identifier for
  769.    the algorithm used by the CA to sign the certificate.  Section 7.2
  770.    lists the supported signature algorithms.
  771.  
  772.    This field should contain the same algorithm identifier as the field
  773.    signature in the sequence tbsCertificate (see section 4.1.2.3)
  774.  
  775.  
  776.  
  777. Housley, Ford, Polk, & Solo                                    [Page 13]
  778.  
  779.  
  780.  
  781.  
  782.  
  783. INTERNET DRAFT                                             December 1996
  784.  
  785.  
  786. 4.1.1.3  signature
  787.  
  788.    The signature field contains a digital signature computed upon the
  789.    ASN.1 DER encoded TBSCertificate.  The ASN.1 DER encoded
  790.    TBSCertificate is used as the input to a one-way hash function.  The
  791.    one-way hash function output value is ASN.1 encoded as an OCTET
  792.    STRING and the result is encrypted (e.g., using RSA Encryption) to
  793.    form the signed quantity.  This signature value is then ASN.1 encoded
  794.    as a BIT STRING and included in the Certificate's signature field.
  795.  
  796.    By generating this signature, a CA certifies the validity of the
  797.    information in tbscertificate.  In particular, the CA certifies the
  798.    binding between the public key material and the subject of the
  799.    certificate.
  800.  
  801. 4.1.2  TBSCertificate
  802.  
  803.    The sequence TBSCertificate is a sequence which contains information
  804.    associated with the subject of the certificate and the CA who issued
  805.    it.  Every TBSCertificate contains the names of the subject and
  806.    issuer, a public key associated with the subject, an expiration date,
  807.    a version number and a serial number; some will contain optional
  808.    unique identifier fields.  The remainder of this section describes
  809.    the syntax and semantics of these fields.  A TBSCertificate may also
  810.    include extensions.  Extensions for the Internet PKI are described in
  811.    Section 4.2.
  812.  
  813. 4.1.2.1  Version
  814.  
  815.    This field describes the version of the encoded certificate.  When
  816.    extensions are used, as expected in this profile, use X.509 version 3
  817.    (value is 2).  If no extensions are present, but a UniqueIdentifier
  818.    is present, use version 2 (value is 1).  If only basic fields are
  819.    present, use version 1 (the value is omitted from the certificate as
  820.    the default value).
  821.  
  822.    Implementations should be prepared to accept any version certificate.
  823.    In particular, at a minimum, implementations must recognize version 3
  824.    certificates; determine whether any critical extensions are present;
  825.    and accept certificates without critical extensions even if they
  826.    don't recognize any extensions.  A certificate with an unrecognized
  827.    critical extension must always be rejected.
  828.  
  829.    Generation of version 2 certificates is not expected by
  830.    implementations based on this profile.
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837. Housley, Ford, Polk, & Solo                                    [Page 14]
  838.  
  839.  
  840.  
  841.  
  842.  
  843. INTERNET DRAFT                                             December 1996
  844.  
  845.  
  846. 4.1.2.2  Serial number
  847.  
  848.    The serial number is an integer assigned by the certification
  849.    authority to each certificate.  It must be unique for each
  850.    certificate issued by a given CA (i.e., the issuer name and serial
  851.    number identify a unique certificate).
  852.  
  853. 4.1.2.3  Signature
  854.  
  855.    This field contains the algorithm identifier for the algorithm used
  856.    by the CA to sign the certificate.  Section 7.2 lists the supported
  857.    signature algorithms.
  858.  
  859. 4.1.2.4  Issuer Name
  860.  
  861.    The issuer name identifies the entity who has signed (and issued the
  862.    certificate).  The issuer identity may be carried in the issuer name
  863.    field and/or the issuerAltName extension.  If identity information is
  864.    present only in the issuerAltName extension, then the issuer name may
  865.    be an empty sequence and the issuerAltName extension must be
  866.    critical.
  867.  
  868. 4.1.2.5  Validity
  869.  
  870.    This field indicates the dates on which the certificate becomes valid
  871.    (notBefore) and on which the certificate ceases to be valid
  872.    (notAfter).  Both notBefore and notAfter may be encoded as UTCTime or
  873.    GeneralizedTime.
  874.  
  875.    CAs conforming to this profile shall not issue certificates where
  876.    notAfter or notBefore is encoded as GeneralizedTime before the year
  877.    2005. CAs conforming to this profile shall not issue certificates
  878.    where notAfter or notBefore is encoded as UTCTime after the year
  879.    2015.
  880.  
  881. 4.1.2.5.1  UTCTime
  882.  
  883.    The universal time type, UTCTime, is a standard ASN.1 type intended
  884.    for international applications where local time alone is not
  885.    adequate. UTCTime specifies the year through the two low order digits
  886.    and time is specified to the precision of one minute or one second.
  887.    UTCTime includes either Z (for Zulu, or Greenwich Mean Time) or a
  888.    time differential.
  889.  
  890.    For the purposes of this profile, UTCTime values shall be expressed
  891.    Greenwich Mean Time (Zulu) and shall include< seconds (i.e., times
  892.    are YYMMDDHHMMSSZ), even where the number of seconds is zero.
  893.    Conforming systems shall interpret the year field (YY) as follows:
  894.  
  895.  
  896.  
  897. Housley, Ford, Polk, & Solo                                    [Page 15]
  898.  
  899.  
  900.  
  901.  
  902.  
  903. INTERNET DRAFT                                             December 1996
  904.  
  905.  
  906.       Where YY is greater than 50, the year shall be interpreted as
  907.       19YY; and
  908.  
  909.       Where YY is less than or equal to 50, the year shall be
  910.       interpreted as 20YY.
  911.  
  912. 4.1.2.6  GeneralizedTime
  913.  
  914.    The generalized time type, GeneralizedTime, is a standard ASN.1 type
  915.    for variable precision representation of time.  Optionally, the
  916.    GeneralizedTime field can include a representation of the time
  917.    differential between local and Greenwich Mean Time.
  918.  
  919.    For the purposes of this profile, GeneralizedTime values shall be
  920.    expressed Greenwich Mean Time (Zulu) and shall include seconds (i.e.,
  921.    times are YYYYMMDDHHMMSSZ), even where the number of seconds is zero.
  922.    GeneralizedTime values shall not include fractional seconds.
  923.  
  924. 4.1.2.6  Subject Name
  925.  
  926.    The subject name identifies the entity associated with the public key
  927.    stored in the subject public key field. The subject identity may be
  928.    carried in the subject field and/or the subjectAltName extension.  If
  929.    identity information is present only in the subjectAltName extension
  930.    (e.g., a key bound only to an email address or URI), then the subject
  931.    name may be an empty sequence and the subjectAltName extension must
  932.    be critical.
  933.  
  934. 4.1.2.7  Subject Public Key Info
  935.  
  936.    This field is used to carry the public key and identify the algorithm
  937.    with which the key is used.
  938.  
  939. 4.1.2.8  Unique Identifiers
  940.  
  941.    The subject and issuer unique identifier are present in the
  942.    certificate to handle the possibility of reuse of subject and/or
  943.    issuer names over time.  This profile recommends that names not be
  944.    reused and that Internet certificates not make use of unique
  945.    identifiers.  CAs conforming to this profile should not generate
  946.    certificates with unique identifiers.  Applications conforming to
  947.    this profile should be capable of parsing unique identifiers and
  948.    making comparisons.
  949.  
  950. 4.2  Certificate Extensions
  951.  
  952.    The extensions defined for X.509 v3 certificates provide methods for
  953.    associating additional attributes with users or public keys, for
  954.  
  955.  
  956.  
  957. Housley, Ford, Polk, & Solo                                    [Page 16]
  958.  
  959.  
  960.  
  961.  
  962.  
  963. INTERNET DRAFT                                             December 1996
  964.  
  965.  
  966.    managing the certification hierarchy, and for managing CRL
  967.    distribution.  The X.509 v3 certificate format also allows
  968.    communities to define private extensions to carry information unique
  969.    to those communities.  Each extension in a certificate may be
  970.    designated as critical or non-critical.  A certificate using system
  971.    (an application validating a certificate) must reject the certificate
  972.    if it encounters a critical extension it does not recognize.  A non-
  973.    critical extension may be ignored if it is not recognized.  The
  974.    following presents recommended extensions used within Internet
  975.    certificates and standard locations for information.  Communities may
  976.    elect to use additional extensions; however, caution should be
  977.    exercised in adopting any critical extensions in certificates which
  978.    might be used in a general context.
  979.  
  980.    Each extension includes an object identifier and an ASN.1 structure.
  981.    When an extension appears in a certificate, the object identifier
  982.    appears as the field extnID and the corresponding ASN.1 encoded
  983.    structure is the value of the bit string extnValue.  Only one
  984.    instance of a particular extension may appear in a particular
  985.    certificate. For example, a certificate may contain only one
  986.    authority key identifier extension (4.2.1.1).  An extension may also
  987.    include the optional boolean critical; critical's default value is
  988.    FALSE.  The text for each extension specifies the acceptable values
  989.    for the critical field.
  990.  
  991.    Conforming CAs are required to support the Basic Constraints
  992.    extension (Section 4.2.1.10).  If the CA issues certificates with an
  993.    empty sequence for the subject field, the CA must support the
  994.    altSubjectName extension.  If the CA issues certificates with an
  995.    empty sequence for the issuer field, the CA must support the
  996.    altIssuerName extension.  Support for the remaining extensions is
  997.    optional. Conforming CAs may support extensions that are not
  998.    identified within this specification; certificate issuers are
  999.    cautioned that marking such extensions as critical may inhibit
  1000.    interoperability.
  1001.  
  1002.    At a minimum, applications conforming to this profile shall recognize
  1003.    extensions which shall or may be critical. These extensions are:  key
  1004.    usage (4.2.1.3), certificate policies (4.2.1.5), the alternative
  1005.    subject name (4.2.1.7), issuer alternative name (4.2.1.8), basic
  1006.    constraints (4.2.1.10), name constraints (4.2.1.11), policy
  1007.    constraints (4.2.1.12), authority information access (4.2.2.2), and
  1008.    CA information access (4.2.2.3).
  1009.  
  1010.    In addition, this profile recommends support for key identifiers
  1011.    (4.2.1.2 and 4.2.1.3) and CRL distribution points (4.2.1.13).
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017. Housley, Ford, Polk, & Solo                                    [Page 17]
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023. INTERNET DRAFT                                             December 1996
  1024.  
  1025.  
  1026. 4.2.1  Standard Extensions
  1027.  
  1028.    This section identifies standard certificate extensions defined in
  1029.    [X.509-AM] for use in the Internet Public Key Infrastructure.  Each
  1030.    extension is associated with an object identifier defined in [X.509-
  1031.    AM].  These object identifiers are members of the
  1032.    certificateExtension arc, which is defined by the following:
  1033.  
  1034.    certificateExtension  OBJECT IDENTIFIER ::=  {joint-iso-ccitt(2) ds(5) 29}
  1035.    id-ce                 OBJECT IDENTIFIER ::=  certificateExtension
  1036.  
  1037.    4.2.1.1  Authority Key Identifier
  1038.  
  1039.    The authority key identifier extension provides a means of
  1040.    identifying the particular public key used to sign a certificate.
  1041.    This extension would be used where an issuer has multiple signing
  1042.    keys (either due to multiple concurrent key pairs or due to
  1043.    changeover).  In general, this extension should be included in
  1044.    certificates.
  1045.  
  1046.    The identification can be based on either the key identifier (the
  1047.    subject key identifier in the issuer's certificate) or on the issuer
  1048.    name and serial number.  The key identifier method is recommended in
  1049.    this profile. Conforming CAs that generate this extension shall
  1050.    include or omit both authorityCertIssuer and
  1051.    authorityCertSerialNumber. If authorityCertIssuer and
  1052.    authorityCertSerialNumber are omitted, the keyIdentifier field shall
  1053.    be present.
  1054.  
  1055.    This extension shall not be marked critical.
  1056.  
  1057.    id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 35 }
  1058.  
  1059.    AuthorityKeyIdentifier ::= SEQUENCE {
  1060.         keyIdentifier                   [0] KeyIdentifier               OPTIONAL,
  1061.         authorityCertIssuer             [1] GeneralNames                OPTIONAL,
  1062.         authorityCertSerialNumber       [2] CertificateSerialNumber     OPTIONAL
  1063.     }
  1064.  
  1065.    KeyIdentifier ::= OCTET STRING
  1066.  
  1067. 4.2.1.2  Subject Key Identifier
  1068.  
  1069.    The subject key identifier extension provides a means of identifying
  1070.    the particular public key used in an application.  Where a reference
  1071.    to a public key identifier is needed (as with an Authority Key
  1072.    Identifier) and one is not included in the associated certificate, a
  1073.    SHA-1 hash of the subject public key shall be used.  The hash shall
  1074.  
  1075.  
  1076.  
  1077. Housley, Ford, Polk, & Solo                                    [Page 18]
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083. INTERNET DRAFT                                             December 1996
  1084.  
  1085.  
  1086.    be calculated over the value (excluding tag and length) of the
  1087.    subject public key field in the certificate.  This extension should
  1088.    be marked non-critical.
  1089.  
  1090.    id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 14 }
  1091.  
  1092.    SubjectKeyIdentifier ::= KeyIdentifier
  1093.  
  1094. 4.2.1.3  Key Usage
  1095.  
  1096.    The key usage extension defines the purpose (e.g., encipherment,
  1097.    signature, certificate signing) of the key contained in the
  1098.    certificate.  The usage restriction might be employed when a
  1099.    multipurpose key is to be restricted (e.g., when an RSA key should be
  1100.    used only for signing or only for key encipherment).  The profile
  1101.    recommends that when used, this be marked as a critical extension.
  1102.  
  1103.    id-ce-keyUsage OBJECT IDENTIFIER ::=  { id-ce 15 }
  1104.  
  1105.    KeyUsage ::= BIT STRING {
  1106.         digitalSignature        (0),
  1107.         nonRepudiation          (1),
  1108.         keyEncipherment         (2),
  1109.         dataEncipherment        (3),
  1110.         keyAgreement            (4),
  1111.         keyCertSign             (5),
  1112.         cRLSign                 (6) }
  1113.  
  1114. 4.2.1.4  Private Key Usage Period
  1115.  
  1116.    The private key usage period extension allows the certificate issuer
  1117.    to specify a different validty period for the private key than the
  1118.    certificate. This extension is intended for use with digital
  1119.    signature keys.  This extension consists of two optional components
  1120.    notBefore and notAfter.  The private key associated with the
  1121.    certificate should not be used to sign objects before or after the
  1122.    times specified by the two components, respectively. CAs conforming
  1123.    to this profile shall not generate certificates with private key
  1124.    usage period extensions unless at least one of the two components is
  1125.    present.
  1126.  
  1127.    This profile recommends against the use of this extension.  CAs
  1128.    conforming to this profile shall not generate certificates with
  1129.    critical private key usage period extensions.
  1130.  
  1131.    id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::=  { id-ce 16 }
  1132.  
  1133.    PrivateKeyUsagePeriod ::= SEQUENCE {
  1134.  
  1135.  
  1136.  
  1137. Housley, Ford, Polk, & Solo                                    [Page 19]
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143. INTERNET DRAFT                                             December 1996
  1144.  
  1145.  
  1146.         notBefore       [0]     GeneralizedTime OPTIONAL,
  1147.         notAfter        [1]     GeneralizedTime OPTIONAL }
  1148.  
  1149. 4.2.1.5  Certificate Policies
  1150.  
  1151.    The certificate policies extension contains a sequence of policy
  1152.    information terms, each of which consists of an object identifier
  1153.    (OID) and optional qualifiers.  These policy information terms
  1154.    indicate the policy under which the certificate has been issued and
  1155.    the purposes for which the certificate may be used.  This profile
  1156.    strongly recommends that a simple OID be present in this field.
  1157.    Optional qualifiers which may be present are expected to provide
  1158.    information about obtaining CA rules, not change the definition of
  1159.    the policy.
  1160.  
  1161.    Applications with specific policy requirements are expected to have a
  1162.    list of those policies which they will accept and to compare the
  1163.    policy OIDs in the certificate to that list.  If this extension is
  1164.    critical, the path validation software must be able to interpret this
  1165.    extension, or must reject the certificate.  (Applications are free to
  1166.    ignore the policy field, even if the extension is marked critical.)
  1167.  
  1168.    This specification defines two policy qualifiers types for use by
  1169.    certificate policy writers and certificate issuers at their own
  1170.    discretion. The quailfier types are the CPS Pointer qualifier, and
  1171.    the User Notice qualifier.
  1172.  
  1173.    The CPS Pointer qualifier contains a pointer to a Certification
  1174.    Practice Statement (CPS) published by the CA.  The pointer is in the
  1175.    form of a URI.
  1176.  
  1177.    The User Notice qualifier contains a text string that is to be
  1178.    displayed to a certificate user (including subscribers and relying
  1179.    parties) prior to the use of the certificate.  The text string may be
  1180.    an IA5String or a BMPString - a subset of the ISO 100646-1 multiple
  1181.    octet coded character set.  A CA may invoke a procedure that requires
  1182.    that the certficate user acknowledge that the applicable terms and
  1183.    conditions have been disclosed or accepted.
  1184.  
  1185.    id-ce-certificatePolicies OBJECT IDENTIFIER ::=  { id-ce 32 }
  1186.  
  1187.    certificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
  1188.  
  1189.    PolicyInformation ::= SEQUENCE {
  1190.         policyIdentifier   CertPolicyId,
  1191.         policyQualifiers   SEQUENCE SIZE (1..MAX) OF
  1192.                 PolicyQualifierInfo OPTIONAL }
  1193.  
  1194.  
  1195.  
  1196.  
  1197. Housley, Ford, Polk, & Solo                                    [Page 20]
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203. INTERNET DRAFT                                             December 1996
  1204.  
  1205.  
  1206.    CertPolicyId ::= OBJECT IDENTIFIER
  1207.  
  1208.    PolicyQualifierInfo ::= SEQUENCE {
  1209.         policyQualifierId   PolicyQualifierId,
  1210.         qualifier           ANY DEFINED BY policyQualifierId }
  1211.  
  1212.    -- policyQualifierIds for Internet policy qualifiers
  1213.  
  1214.    id-pkix-cps      OBJECT IDENTIFIER ::=  { pkix 4 }
  1215.    id-pkix-unotice  OBJECT IDENTIFIER ::=  { pkix 5 }
  1216.  
  1217.    PolicyQualifierId ::= ENUMERATED { id-pkix-cps, id-pkix-unotice }
  1218.  
  1219.    Qualifier ::= CHOICE {
  1220.         cPSuri    CPSuri,
  1221.         userNotice     UserNotice }
  1222.  
  1223.    CPSuri ::= IA5String
  1224.  
  1225.    UserNotice ::= CHOICE {
  1226.      ia5String     IA5String,
  1227.      bmpString     ANY }
  1228.  
  1229. 4.2.1.6  Policy Mappings
  1230.  
  1231.    This extension is used in CA certificates.  It lists pairs of
  1232.    obbjectidentifiers; each pair includes an issuerDomainPolicy and a
  1233.    subjectDomainPolicy. The pairing indicates the issuing CA considers
  1234.    its issuerDomainPolicy equivalent to the subject CA's
  1235.    subjectDomainPolicy.
  1236.  
  1237.    The issuing CA's users may accept an issuerDomainPolicy for certain
  1238.    applications. The policy mapping tells the issuing CA's users which
  1239.    policies associated with the subject CA are comparable to the policy
  1240.    they accept.
  1241.  
  1242.    This extension may be supported by CAs and/or applications, and it is
  1243.    always non-critical.
  1244.  
  1245.    id-ce-policyMappings OBJECT IDENTIFIER ::=  { id-ce 33 }
  1246.  
  1247.    PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
  1248.         issuerDomainPolicy      CertPolicyId,
  1249.         subjectDomainPolicy     CertPolicyId }
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257. Housley, Ford, Polk, & Solo                                    [Page 21]
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263. INTERNET DRAFT                                             December 1996
  1264.  
  1265.  
  1266. 4.2.1.7  Subject Alternative Name
  1267.  
  1268.    The subject alternative names extension allows additional identities
  1269.    to be bound to the subject of the certificate.  Defined options
  1270.    include an rfc822 name (electronic mail address), a DNS name, an IP
  1271.    address, and a URI.  Other options exist, including completely local
  1272.    definitions.  Multiple instances of a name and multiple name forms
  1273.    may be included.  Whenever such identities are to be bound into a
  1274.    certificate, the subject alternative name (or issuer alternative
  1275.    name) extension shall be used.  (Note: a form of such an identifier
  1276.    may also be present in the subject distinguished name; however, the
  1277.    alternative name extension is the preferred location for finding such
  1278.    information.)
  1279.  
  1280.    Further, if the only subject identity included in the certificate is
  1281.    an alternative name form (e.g., an electronic mail address), then the
  1282.    subject distinguished name should be empty (an empty sequence), the
  1283.    subjectAltName extension should be used. If the subject field
  1284.    contains an empty squence, the subjectAltName extension shall be
  1285.    marked critical.
  1286.  
  1287.    Alternative names may be constrained in the same manner as subject
  1288.    distinguished names using the name constraints extension as described
  1289.    in section 4.2.1.11.
  1290.  
  1291.    id-ce-subjectAltName OBJECT IDENTIFIER ::=  { id-ce 17 }
  1292.  
  1293.    SubjectAltName ::= GeneralNames
  1294.  
  1295.    GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
  1296.  
  1297.    GeneralName ::= CHOICE {
  1298.         otherName                       [0]     ANY,
  1299.         rfc822Name                      [1]     IA5String,
  1300.         dNSName                         [2]     IA5String,
  1301.         x400Address                     [3]     ORAddress,
  1302.         directoryName                   [4]     Name,
  1303.         ediPartyName                    [5]     EDIPartyName,
  1304.         uniformResourceIdentifier       [6]     IA5String,
  1305.         iPAddress                       [7]     OCTET STRING,
  1306.         registeredID                    [8]     OBJECT IDENTIFIER }
  1307.  
  1308.    EDIPartyName ::= SEQUENCE {
  1309.         nameAssigner            [0]     DirectoryString OPTIONAL,
  1310.         partyName               [1]     DirectoryString }
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317. Housley, Ford, Polk, & Solo                                    [Page 22]
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323. INTERNET DRAFT                                             December 1996
  1324.  
  1325.  
  1326. 4.2.1.8  Issuer Alternative Name
  1327.  
  1328.    As with 4.2.1.7, this extension is used to associate Internet style
  1329.    identities with the certificate issuer.  If the only issuer identity
  1330.    included in the certificate is an alternative name form (e.g., an
  1331.    electronic mail address), then the issuer distinguished name should
  1332.    be empty (an empty sequence), the issuerAltName extension should be
  1333.    used. If the issuer field is empty and more than one issuerAltName
  1334.    extension is included in the certificate, the issuerAltName extension
  1335.    shall be marked critical.
  1336.  
  1337.    id-ce-issuerAltName OBJECT IDENTIFIER ::=  { id-ce 18 }
  1338.  
  1339.    IssuerAltName ::= GeneralNames
  1340.  
  1341. 4.2.1.9  Subject Directory Attributes
  1342.  
  1343.    The subject directory attributes extension is not recommended as an
  1344.    essential part of this profile, but it may
  1345.    be used in local environments.  This extension is always non-critical.
  1346.  
  1347.    id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::=  { id-ce 9 }
  1348.  
  1349.    SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
  1350.  
  1351. 4.2.1.10  Basic Constraints
  1352.  
  1353.    The basic constraints extension identifies whether the subject of the
  1354.    certificate is a CA and how deep a certification path may exist
  1355.    through that CA.  This profile requires the use of this extension,
  1356.    and it shall be critical for all certificates issued to CAs.
  1357.  
  1358.    id-ce-basicConstraints OBJECT IDENTIFIER ::=  { id-ce 19 }
  1359.  
  1360.    BasicConstraints ::= SEQUENCE {
  1361.         cA                      BOOLEAN DEFAULT FALSE,
  1362.         pathLenConstraint       INTEGER (0..MAX) OPTIONAL }
  1363.  
  1364. 4.2.1.11  Name Constraints
  1365.  
  1366.    The name constraints extension provides permitted and excluded
  1367.    subtrees that place restrictions on names that may be included within
  1368.    a certificate issued by a given CA.  Restrictions may apply to the
  1369.    subject distringuished name or subject alternative names.  Any name
  1370.    matching a restriction in the excluded subtrees field is invalid
  1371.    regardless of information appearing in the permitted subtrees. This
  1372.    extension may be critical or non-critical.
  1373.  
  1374.  
  1375.  
  1376.  
  1377. Housley, Ford, Polk, & Solo                                    [Page 23]
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383. INTERNET DRAFT                                             December 1996
  1384.  
  1385.  
  1386.    Restrictions for the rfc822, dNSName, and uri name forms are all
  1387.    expressed in terms of strings with wild card matching.  An "*" is the
  1388.    wildcard character.  The minimum and maximum fields in general
  1389.    subtree are not used for these name forms.  For uris and rfc822
  1390.    names, the restriction applies to the host part of the name.
  1391.    Examples would be foo.bar.com; www*.bar.com; *.xyz.com.
  1392.  
  1393.    Restrictions of the form directoryName shall be applied to the
  1394.    subject field in the certificate and to the subjectAltName extensions
  1395.    of type directoryName.  Restrictions of the form x400Address shall be
  1396.    applied to subjectAltName extensions of type x400Address.
  1397.  
  1398.    The syntax and semantics for name constraints for otherName,
  1399.    ediPartyName, and registeredID are not defined by this specification.
  1400.  
  1401.    id-ce-nameConstraints OBJECT IDENTIFIER ::=  { id-ce 30 }
  1402.  
  1403.    NameConstraints ::= SEQUENCE {
  1404.         permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
  1405.         excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }
  1406.  
  1407.    GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
  1408.  
  1409.    GeneralSubtree ::= SEQUENCE {
  1410.         base                    GeneralName,
  1411.         minimum         [0]     BaseDistance DEFAULT 0,
  1412.         maximum         [1]     BaseDistance OPTIONAL }
  1413.  
  1414.    BaseDistance ::= INTEGER (0..MAX)
  1415.  
  1416. 4.2.1.12  Policy Constraints
  1417.  
  1418.    The policy constraints extension can be used in certificates issued
  1419.    to CAs.  The policy constraints extension constrains path validation
  1420.    in two ways. It can be used to prohibit policy mapping or limit the
  1421.    set of poicies that can in subsequent certificates. This extension
  1422.    may be critical or non-critical.
  1423.  
  1424.    id-ce-policyConstraints OBJECT IDENTIFIER ::=  { id-ce 34 }
  1425.  
  1426.    PolicyConstraints ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
  1427.         policySet                       [0] CertPolicySet OPTIONAL,
  1428.         requireExplicitPolicy           [1] SkipCerts OPTIONAL,
  1429.         inhibitPolicyMapping            [2] SkipCerts OPTIONAL }
  1430.  
  1431.    SkipCerts ::= INTEGER (0..MAX)
  1432.  
  1433.    CertPolicySet ::= SEQUENCE SIZE (1..MAX) OF CertPolicyId
  1434.  
  1435.  
  1436.  
  1437. Housley, Ford, Polk, & Solo                                    [Page 24]
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443. INTERNET DRAFT                                             December 1996
  1444.  
  1445.  
  1446. 4.2.1.13  CRL Distribution Points
  1447.  
  1448.    The CRL distribution points extension identifies how CRL information
  1449.    is obtained.  The extension shall be non-critical, but this profile
  1450.    recommends support for this extension by CAs and applications.
  1451.    Further discussion of CRL management is contained in section 5.
  1452.  
  1453.    id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::=  { id-ce 31 }
  1454.  
  1455.    cRLDistributionPoints ::= {
  1456.         CRLDistPointsSyntax }
  1457.  
  1458.    CRLDistPointsSyntax ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
  1459.  
  1460.    DistributionPoint ::= SEQUENCE {
  1461.         distributionPoint       [0]     DistributionPointName OPTIONAL,
  1462.         reasons                 [1]     ReasonFlags OPTIONAL,
  1463.         cRLIssuer               [2]     GeneralNames OPTIONAL }
  1464.  
  1465.    DistributionPointName ::= CHOICE {
  1466.         fullName                [0]     GeneralNames,
  1467.         nameRelativeToCRLIssuer [1]     RelativeDistinguishedName }
  1468.  
  1469.    ReasonFlags ::= BIT STRING {
  1470.         unused                  (0),
  1471.         keyCompromise           (1),
  1472.         cACompromise            (2),
  1473.         affiliationChanged      (3),
  1474.         superseded              (4),
  1475.         cessationOfOperation    (5),
  1476.         certificateHold         (6) }
  1477.  
  1478. 4.2.2  Private Internet Extensions
  1479.  
  1480.    This section defines new extensions for use in the Internet Public
  1481.    Key Infrastructure.  These extensions may be used to direct
  1482.    applications to additional information about the certificate's
  1483.    subject or issuer. This extension includes the type of information,
  1484.    where it is located, and a method for obtaining the information. The
  1485.    types of information include certificate status, CA policy
  1486.    information, and related certificates.
  1487.  
  1488.    The object identifiers associated with the private extensions are
  1489.    defined under the iso (1), org (3), dod (6), internet (1),
  1490.    security(5) or 1.3.6.1.5, branch of the name space.  These extensions
  1491.    make use of OIDs of the form {applTCPProtoID port}, which identify
  1492.    TCP-based protocols that don't have OIDs assigned by other means, to
  1493.    identify common methods for retrieving information.
  1494.  
  1495.  
  1496.  
  1497. Housley, Ford, Polk, & Solo                                    [Page 25]
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503. INTERNET DRAFT                                             December 1996
  1504.  
  1505.  
  1506.    The following ASN.1 defines object identifiers which may be used by
  1507.    applications that implement the private extensions; additional access
  1508.    methods may be used, but the semantics are undefined by this
  1509.    document.
  1510.  
  1511.    pkix  OBJECT IDENTIFIER ::= { iso(1) org(3) dod (6) internet (1)
  1512.                   security(5) pkix(?) }
  1513.  
  1514.    -- Object identifiers for ftp, http, smtp and ldap protocols
  1515.  
  1516.    applTCPProto OBJECT IDENTIFIER ::= { 1 3 6 1 2 1 27 4 }
  1517.  
  1518.    ftpID    OBJECT-IDENTIFIER ::= {applTCPProtoID 21}
  1519.    httpID   OBJECT-IDENTIFIER ::= {applTCPProtoID 80}
  1520.    smtpID   OBJECT-IDENTIFIER ::= {applTCPProtoID 25}
  1521.    ldapID   OBJECT-IDENTIFIER ::= {applTCPProtoID 389}
  1522.  
  1523.    -- Object identifier for the X.500 directory access protocol
  1524.  
  1525.    dap OBJECT-IDENTIFIER ::= { 2 5 3 1 }
  1526.  
  1527. 4.2.2.1  Subject Information Access
  1528.  
  1529.    The name information in the certificate identifies the entity to
  1530.    which the public key is bound.  In some instances, it may also be
  1531.    necessary to know where to find additional information about the
  1532.    named entity.  In the case of X.500 names, this relationship is
  1533.    automatic.  The subject information access extension provides a means
  1534.    of identifying where and how to find information about the subject.
  1535.    The extension specifies a method of obtaining information and a
  1536.    general name form indicating where.  This extension shall always be
  1537.    non-critical.
  1538.  
  1539.    id-pkix-subjectInfoAccess OBJECT-IDENTIFIER ::= { pkix 1}
  1540.  
  1541.    -- subjectInfoAccess ::=  { SubjectInfoAccessSyntax }
  1542.  
  1543.    SubjectInfoAccessSyntax ::= SEQUENCE SIZE (1..MAX) OF AccessDescription
  1544.  
  1545.    AccessDescription  ::=  SEQUENCE  {
  1546.         accessMethod          OBJECT IDENTIFIER,
  1547.         accessLocation        GeneralName  }
  1548.  
  1549.    This specification defines the following values for accessMethod:
  1550.    ftpID, httpID, smtpID, ldapID, and dap. The accessMethod value
  1551.    indicates the protocol required to obtain the information. If
  1552.    accessMethod is ftpID, then the information must available through
  1553.    anonymous ftp.  If accessMethod is ftpID, httpID, smtpID, or ldapID,
  1554.  
  1555.  
  1556.  
  1557. Housley, Ford, Polk, & Solo                                    [Page 26]
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563. INTERNET DRAFT                                             December 1996
  1564.  
  1565.  
  1566.    then the accessLocation shall be a uniformResourceIndicator (i.e., a
  1567.    URI). The URI shall specify all information required to retrieve the
  1568.    information.  If accessMethod is dap, then the accessLocation shall
  1569.    be a directoryName.
  1570.  
  1571. 4.2.2.2  Authority Information Access
  1572.  
  1573.    The authority information access extension indicates how to access CA
  1574.    information and services for the issuer of the certificate in which
  1575.    the extension appears.  Information and services include certificate
  1576.    status or on-line validation services, certificate retrieval, CA
  1577.    policy data, and CA certificates (certificates certifying the target
  1578.    CA to aid in certification path navigation).  This extension may be
  1579.    included in subject or CA certificates and may be critical or non-
  1580.    critical.
  1581.  
  1582.    id-pkix-authorityInfoAccess OBJECT-IDENTIFIER ::= { pkix 2}
  1583.  
  1584.    -- authorityInfoAccess ::=  { AuthorityInfoAccessSyntax  }
  1585.  
  1586.    AuthorityInfoAccessSyntax  ::=  SEQUENCE  {
  1587.         certStatus        [0] SEQUENCE OF AccessDescription OPTIONAL,
  1588.         certRetrieval     [1] SEQUENCE OF AccessDescription OPTIONAL,
  1589.         caPolicy          [2] SEQUENCE OF AccessDescription OPTIONAL,
  1590.         caCerts           [3] SEQUENCE OF AccessDescription OPTIONAL  }
  1591.  
  1592.    If certStatus is present, each entry in that sequence describes a
  1593.    mechanism and location for
  1594.  
  1595.       on-line verification of the status of this certificate, or
  1596.  
  1597.       the CRL on which this certificate would appear if revoked.
  1598.  
  1599.    If certRetrieval is present, each entry in the sequence describes how
  1600.    to retrieve all current certificates whose subject is the issuer of
  1601.    the certificate in which this extension appears.
  1602.  
  1603.    If caPolicy is present, each entry in the sequence describes how to
  1604.    retrieve the policy that was in effect when this certificate was
  1605.    issued.
  1606.  
  1607.    If caCerts is present, each entry in the sequence describes a
  1608.    mechanism and location for retrieval of certificates the issuer has
  1609.    issued to other CAs.
  1610.  
  1611.    If the certStatus, certRetrieval, caPolicy, or caCerts sequence has
  1612.    more than one value, conforming applications are not required to
  1613.    process all the values. Successful processing of any one
  1614.  
  1615.  
  1616.  
  1617. Housley, Ford, Polk, & Solo                                    [Page 27]
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623. INTERNET DRAFT                                             December 1996
  1624.  
  1625.  
  1626.    AccessDescritpion shall be sufficient.  It is the responsibility of
  1627.    the certificate issuer to ensure all mechanisms provide the same
  1628.    information.
  1629.  
  1630.    The expected values for AccessDescription are the values defined in
  1631.    4.2.2.1. Processing rules for other values for accessMethod are not
  1632.    defined.
  1633.  
  1634.    If this extension is critical, applications are required to use the
  1635.    information in the certStatus field (if present) to check the
  1636.    revocation status of this certificate, the certRetrieval field (if
  1637.    present) to obtain the issuer's current certificates, and the caCerts
  1638.    field (if present) to obtain certificates issued by the subject to
  1639.    other CAs.
  1640.  
  1641.    There are no additional processing requirements for cAPolicy if the
  1642.    extension is marked as critical.
  1643.  
  1644. 4.2.2.3  CA Information Access
  1645.  
  1646.    Where the subject of a certificate is a CA, the subjectInfoAccess
  1647.    extension may be insufficient.  The CA information access extension
  1648.    indicates how to access CA information and services for the subject
  1649.    of the certificate in which the extension appears.  Information and
  1650.    services include certificate status or on-line validation services,
  1651.    certificate retrieval, CA policy data, and CA certificates
  1652.    (certificates certifying the target CA to aid in cert path
  1653.    navigation).  This extension is syntactically identical to
  1654.    authorityInfoAccess, but is identified by a different OID.  This
  1655.    extension may be included only in CA certificates and may be critical
  1656.    or non-critical.  CA certificates may include both an authority and a
  1657.    caInfoAccess extension to describe access methods for both the CA and
  1658.    its issuer.
  1659.  
  1660.    id-pkix-caInfoAccess OBJECT-IDENTIFIER ::= { pkix 3 }
  1661.  
  1662.    -- caInfoAccess ::=  { AuthorityInfoAccessSyntax  }
  1663.  
  1664.    If certStatus is present, each entry in that sequence describes a
  1665.    mechanism and location for
  1666.  
  1667.       on-line verification of the status of this certificate, or
  1668.  
  1669.       CRL issued by the subject of this certificate.
  1670.  
  1671.    If certRetrieval is present, each entry in the sequence describes how
  1672.    to retrieve all current certificates whose subject is the subject of
  1673.    the certificate in which this extension appears.
  1674.  
  1675.  
  1676.  
  1677. Housley, Ford, Polk, & Solo                                    [Page 28]
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683. INTERNET DRAFT                                             December 1996
  1684.  
  1685.  
  1686.    If caPolicy is present, each entry in the sequence describes how to
  1687.    retrieve the current policy tssociated with the subject of this
  1688.    certificate.
  1689.  
  1690.    If caCerts is present, each entry in the sequence describes a
  1691.    mechanism and location for retrieval of certificates the subject has
  1692.    issued to other CAs.
  1693.  
  1694.    If the certStatus, certRetrieval, caPolicy, or caCerts sequence has
  1695.    more than one value, conforming applications are not required to
  1696.    process all the values. Successful processing of any one
  1697.    AccessDescritpion shall be sufficient.  It is the responsibility of
  1698.    the certificate issuer to ensure all mechanisms provide the same
  1699.    information.
  1700.  
  1701.    The legal values for AccessDescription shall be as defined in
  1702.    4.2.2.1.
  1703.  
  1704.    If this extension is critical, applications are required to use the
  1705.    information in the certStatus field (if present) to check the
  1706.    revocation status of this certificate, the certRetrieval field (if
  1707.    present) to obtain the subject's other current certificates, and the
  1708.    caCerts field (if present) to obtain certificates issued by the
  1709.    subject to other CAs.
  1710.  
  1711.    There are no additional processing requirements for cAPolicy if the
  1712.    extension is marked as critical.
  1713.  
  1714. 4.3  Examples
  1715.  
  1716.    << Certificate samples including descriptive text and ASN.1 encoded
  1717.    blobs will be inserted. >>
  1718.  
  1719.    4.3.1 Simple certificate, no extensions
  1720.  
  1721.    <<TBD>>
  1722.  
  1723.    4.3.2 Certificate with Private extensions
  1724.  
  1725.    <<TBD>>
  1726.  
  1727.    4.3.3 certificate with no subject DN
  1728.  
  1729.    <<TBD>>
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737. Housley, Ford, Polk, & Solo                                    [Page 29]
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743. INTERNET DRAFT                                             December 1996
  1744.  
  1745.  
  1746. 5  CRL and CRL Extensions Profile
  1747.  
  1748.    As described above, one goal of this X.509 v2 CRL profile is to
  1749.    foster the creation of an interoperable and reusable Internet PKI.
  1750.    To achieve this goal, guidelines for the use of extensions are
  1751.    specified, and some assumptions are made about the nature of
  1752.    information included in the CRL.
  1753.  
  1754.    CRLs may be used in a wide range of applications and environments
  1755.    covering a broad spectrum of interoperability goals and an even
  1756.    broader spectrum of operational and assurance requirements.  This
  1757.    profile establishes a common baseline for generic applications
  1758.    requiring broad interoperability.  Emphasis is placed on support for
  1759.    X.509 v2 CRLs.  The profile defines a baseline set of information
  1760.    that can be expected in every CRL.  Also, the profile defines common
  1761.    locations within the CRL for frequently used attributes, and common
  1762.    representations for these attributes.
  1763.  
  1764.    This profile does not define any private Internet CRL extensions or
  1765.    CRL entry extensions.
  1766.  
  1767.    Environments with additional or special purpose requirements may
  1768.    build on this profile or may replace it.
  1769.  
  1770.    Conforming CAs are not required to issue CRLs if other revocation or
  1771.    status mechanisms are provided.  Conforming CAs that issue CRLs are
  1772.    required to issue version 2 CRLs.  Conforming applications are
  1773.    required to process version 1 and 2 certificates.
  1774.  
  1775. 5.1  CRL Fields
  1776.  
  1777.    The X.509 v2 CRL syntax is as follows.  For signature calculation,
  1778.    the data that is to be signed is ASN.1 DER encoded.  ASN.1 DER
  1779.    encoding is a tag, length, value encoding system for each element.
  1780.  
  1781.    CertificateList  ::=  SEQUENCE  {
  1782.         tbsCertList          TBSCertList,
  1783.         signatureAlgorithm   AlgorithmIdentifier,
  1784.         signature            BIT STRING  }
  1785.  
  1786.    TBSCertList  ::=  SEQUENCE  {
  1787.         version                 Version OPTIONAL,
  1788.                                      -- if present, must be v2
  1789.         signature               AlgorithmIdentifier,
  1790.         issuer                  Name,
  1791.         thisUpdate              ChoiceOfTime,
  1792.         nextUpdate              ChoiceOfTime,
  1793.         revokedCertificates     SEQUENCE OF SEQUENCE  {
  1794.  
  1795.  
  1796.  
  1797. Housley, Ford, Polk, & Solo                                    [Page 30]
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803. INTERNET DRAFT                                             December 1996
  1804.  
  1805.  
  1806.              userCertificate         CertificateSerialNumber,
  1807.              revocationDate          ChoiceOfTime,
  1808.              crlEntryExtensions      Extensions OPTIONAL
  1809.                                                  -- if present, must be v2
  1810.                                   }  OPTIONAL,
  1811.         crlExtensions           [0]  Extensions OPTIONAL
  1812.                                                  -- if present, must be v2
  1813.                                   }
  1814.  
  1815.    ChoiceOfTime ::= CHOICE {
  1816.         utcTime        UTCTime,
  1817.         generalTime    GeneralizedTime }
  1818.  
  1819.    Version  ::= INTEGER  {  v1(0), v2(1), v3(2)  }
  1820.  
  1821.    AlgorithmIdentifier  ::=  SEQUENCE  {
  1822.         algorithm               OBJECT IDENTIFIER,
  1823.         parameters              ANY DEFINED BY algorithm OPTIONAL  }
  1824.                                      -- contains a value of the type
  1825.                                      -- registered for use with the
  1826.                                      -- algorithm object identifier value
  1827.  
  1828.    CertificateSerialNumber  ::=  INTEGER
  1829.  
  1830.    Extensions  ::=  SEQUENCE OF Extension
  1831.  
  1832.    Extension  ::=  SEQUENCE  {
  1833.         extnId                  OBJECT IDENTIFIER,
  1834.         critical                BOOLEAN DEFAULT FALSE,
  1835.         extnValue               OCTET STRING  }
  1836.                                      -- contains a DER encoding of a value
  1837.                                      -- of the type registered for use with
  1838.                                      -- the extnId object identifier value
  1839.  
  1840.    The following items describe the proposed use of the X.509 v2 CRL in
  1841.    the Internet PKI.
  1842.  
  1843. 5.1.1  CertificateList Fields
  1844.  
  1845.    The CertificateList is a SEQUENCE of three required fields. The
  1846.    fields are are described in detail in the following subsections
  1847.  
  1848. 5.1.1.1  tbsCertList
  1849.  
  1850.    The first field in the sequence is the tbsCertList.  This is a itself
  1851.    a sequence, and is generally thought of as the X.509 CRL. It contains
  1852.    the names of the subject and issuer, a public key associated with the
  1853.    subject an expiration date, and other associated information.  The
  1854.  
  1855.  
  1856.  
  1857. Housley, Ford, Polk, & Solo                                    [Page 31]
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863. INTERNET DRAFT                                             December 1996
  1864.  
  1865.  
  1866.    fields of the basic tbsCertificate are described in detail in section
  1867.    4.1.2; the tbscertificate may also include extensions which are
  1868.    described in section 4.2.
  1869.  
  1870. 5.1.1.2  signatureAlgorithm
  1871.  
  1872.    The signatureAlgorithm field contains the algorithm identifier for
  1873.    the algorithm used by the CA to sign the CertificateList.  Section
  1874.    7.2 lists the supported signature algorithms.
  1875.  
  1876. 5.1.1.3  signature
  1877.  
  1878.    The signature field contains a digital signature computed upon the
  1879.    ASN.1 DER encoded TBSCertList.  The ASN.1 DER encoded  TBSCertificate
  1880.    is used as the input to a one-way hash function.  The one-way hash
  1881.    function output value is ASN.1 encoded as an OCTET STRING and the
  1882.    result is encrypted (e.g., using RSA Encryption) to form the signed
  1883.    quantity.  This signature value is then ASN.1 encoded as a BIT STRING
  1884.    and included in the Certificate's signature field.
  1885.  
  1886. 5.1.2  Certificate List "To Be Signed"
  1887.  
  1888.    The certificate list to be signed, or tBSCertList, is a SEQUENCE of
  1889.    required and optional fields.  The required fields identify the CRL
  1890.    issuer, the algorithm used to sign the CRL, the date and time the CRL
  1891.    was issued, and the date and time by which the CA will issue the next
  1892.    CRL.
  1893.  
  1894.    Optional fields include lists of revoked certificates and CRL
  1895.    extensions.  The revoked certificate list is optional to support the
  1896.    special case where a CA has not revoked any unexpired certificates it
  1897.    has issued.  It is expected that nearly all CRLs issued in the
  1898.    Internet PKI will contain one or more lists of revoked certificates.
  1899.    Similarly, the profile requires conforming CAs to use of one CRL
  1900.    extension (CRL number) in all CRLs issued.
  1901.  
  1902. 5.1.2.1  Version
  1903.  
  1904.    This field describes the version of the encoded CRL.  When extensions
  1905.    are used, as expected in this profile, use version 2 (the integer
  1906.    value is 1).  If neither CRL extensions nor CRL entry extensions are
  1907.    present, version 1 CRLs are recommended (e.g., the integer value
  1908.    should be omitted).
  1909.  
  1910. 5.1.2.2  Signature
  1911.  
  1912.    This field contains the algorithm identifier for the algorithm used
  1913.    to sign the CRL.  Section 7.2 lists the signature algorithms used in
  1914.  
  1915.  
  1916.  
  1917. Housley, Ford, Polk, & Solo                                    [Page 32]
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923. INTERNET DRAFT                                             December 1996
  1924.  
  1925.  
  1926.    the Internet PKI.
  1927.  
  1928. 5.1.2.3  Issuer Name
  1929.  
  1930.    The issuer name identifies the entity who has signed (and issued the
  1931.    CRL).  The issuer identity may be carried in the issuer name field
  1932.    and/or the issuerAltName extension.  If identity information is
  1933.    present only in the issuerAltName extension, then the issuer name may
  1934.    be an empty sequence and the issuerAltName extension must be
  1935.    critical.
  1936.  
  1937. 5.1.2.4  This Update
  1938.  
  1939.    This field indicates the issue date of this CRL. ThisUpdate may be
  1940.    encoded as UTCTime or GeneralizedTime.
  1941.  
  1942.    CAs conforming to this profile shall not issue CRLs where thisUpdate
  1943.    is encoded as GeneralizedTime before the year 2005. CAs conforming to
  1944.    this profile shall not issue CRLs where thisUpdate is encoded as
  1945.    UTCTime after the year 2015.
  1946.  
  1947.    Where encoded as UTCTime, thisUpdate shall be specified and
  1948.    interpreted as defined in Section 4.1.2.5.1.  Where encoded as
  1949.    GeneralizedTime, thisUpdate shall be specified and interpreted as
  1950.    defined in Section 4.1.2.5.2.
  1951.  
  1952. 5.1.2.5  Next Update
  1953.  
  1954.    This field indicates the date by which the next CRL will be issued.
  1955.    The next CRL could be issued before the indicated date, but it will
  1956.    not be issued any later than the indicated date. nextUpdate may be
  1957.    encoded as UTCTime or GeneralizedTime.
  1958.  
  1959.    CAs conforming to this profile shall not issue CRLs where nextUpdate
  1960.    is encoded as GeneralizedTime before the year 2005. CAs conforming to
  1961.    this profile shall not issue CRLs where nextUpdate is encoded as
  1962.    UTCTime after the year 2015.
  1963.  
  1964.    Where encoded as UTCTime, nextUpdate shall be specified and
  1965.    interpreted as defined in Section 4.1.2.5.1.  Where encoded as
  1966.    GeneralizedTime, nextUpdate shall be specified and interpreted as
  1967.    defined in Section 4.1.2.5.2.
  1968.  
  1969. 5.1.2.6  Revoked Certificates
  1970.  
  1971.    Revoked certificates are listed.  The revoked certificates are named
  1972.    by their serial numbers.  Certificates are uniquely identified by the
  1973.    combination of the issuer name or issuer alternative name along with
  1974.  
  1975.  
  1976.  
  1977. Housley, Ford, Polk, & Solo                                    [Page 33]
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983. INTERNET DRAFT                                             December 1996
  1984.  
  1985.  
  1986.    the user certificate serial number.  The date on which the revocation
  1987.    occured is specified.  The time for revocationDate shall be expressed
  1988.    as described in section 5.1.2.4. Additional information may be
  1989.    supplied in CRL entry extensions; CRL entry extensions are discussed
  1990.    in section 5.3.
  1991.  
  1992. 5.2  CRL Extensions
  1993.  
  1994.    The extensions defined by ANSI X9 and ISO for X.509 v2 CRLs [X.509-
  1995.    AM] [X9.55] provide methods for associating additional attributes
  1996.    with CRLs.  The X.509 v2 CRL format also allows communities to define
  1997.    private extensions to carry information unique to those communities.
  1998.    Each extension in a CRL may be designated as critical or non-
  1999.    critical.  A CRL validation must fail if it encounters an critical
  2000.    extension which it does not know how to process.  However, an
  2001.    unrecognized non-critical extension may be ignored.  The following
  2002.    presents those extensions used within Internet CRLs.  Communities may
  2003.    elect to include extensions in CRLs which are not defined in this
  2004.    specification. However, caution should be exercised in adopting any
  2005.    critical extensions in CRLs which might be used in a general context.
  2006.  
  2007.    Conforming CAs that issue CRLs are required to support the CRL number
  2008.    extension (5.2.3), and include it in all CRLs issued. Conforming
  2009.    applications are required to support the critical and optionally
  2010.    critical CRL extensions issuer alternative name (5.2.2), issuing
  2011.    distribution point (5.2.4) and delta CRL indicator (5.2.5).
  2012.  
  2013. 5.2.1  Authority Key Identifier
  2014.  
  2015.    The authority key identifier extension provides a means of
  2016.    identifying the particular public key used to sign a CRL.  The
  2017.    identification can be based on either the key identifier (the subject
  2018.    key identifier in the CRL signer's certificate) or on the issuer name
  2019.    and serial number.  The key identifier method is recommended in this
  2020.    profile.  This extension would be used where an issuer has multiple
  2021.    signing keys, either due to multiple concurrent key pairs or due to
  2022.    changeover.  In general, this non-critical extension should be
  2023.    included in certificates.
  2024.  
  2025.    The syntax for this CRL extension is defined in Section 4.2.1.1.
  2026.  
  2027. 5.2.2  Issuer Alternative Name
  2028.  
  2029.    The issuer alternative names extension allows additional identities
  2030.    to be associated with the issuer of the CRL.  Defined options include
  2031.    an rfc822 name (electronic mail address), a DNS name, an IP address,
  2032.    and a URI.  Multiple instances of a name and multiple name forms may
  2033.    be included.  Whenever such identities are used, the issuer
  2034.  
  2035.  
  2036.  
  2037. Housley, Ford, Polk, & Solo                                    [Page 34]
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043. INTERNET DRAFT                                             December 1996
  2044.  
  2045.  
  2046.    alternative name extension shall be used.
  2047.  
  2048.    Further, if the only issuer identity included in the CRL is an
  2049.    alternative name form (e.g., an electronic mail address), then the
  2050.    issuer distinguished name should be empty (an empty sequence), the
  2051.    issuerAltName extension should be used, and the issuerAltName
  2052.    extension must be marked critical. If more than one issuerAltName
  2053.    extension appears in the CRL and the issuer distinguished name is
  2054.    empty, exactly one issuerAltName extension must be marked critical.
  2055.  
  2056.    The object identifier and syntax for this CRL extension are defined
  2057.    in Section 4.2.1.8.
  2058.  
  2059. 5.2.3  CRL Number
  2060.  
  2061.    The CRL number is a non-critical CRL extension which conveys a
  2062.    monotonically increacing sequence number for each CRL issued by a
  2063.    given CA through a specific CA X.500 Directory entry or CRL
  2064.    distribution point.  This extension allows users to easily determine
  2065.    when a particular CRL supercedes another CRL.  CAs conforming to this
  2066.    profile shall include this extension in all CRLs.
  2067.  
  2068.    id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 }
  2069.  
  2070.    cRLNumber ::= INTEGER (0..MAX)
  2071.  
  2072. 5.2.4  Issuing Distribution Point
  2073.  
  2074.    The issuing distribution point is a critical CRL extension that
  2075.    identifies the CRL distribution point for a particular CRL, and it
  2076.    indicates whether the CRL covers revocation for end entity
  2077.    certificates only, CA certificates only, or a limitied set of reason
  2078.    codes.  Since this extension is critical, all certificate users must
  2079.    be prepared to receive CRLs with this extension.
  2080.  
  2081.    The CRL is signed using the CA's private key.  CRL Distribution
  2082.    Points do not have their own key pairs.  If the CRL is stored in the
  2083.    X.500 Directory, it is stored in the Directory entry corresponding to
  2084.    the CRL distribution point, which may be different that the Directory
  2085.    entry of the CA.
  2086.  
  2087.    CRL distribution points, if used by a CA, should be partition the CRL
  2088.    on the basis of compromise and routine revocation.  That is, the
  2089.    revocations with reason code keyCompromise (1) shall appear in one
  2090.    distribution point, and the revocations with other reason codes shall
  2091.    appear in another distribution point.
  2092.  
  2093.    id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 }
  2094.  
  2095.  
  2096.  
  2097. Housley, Ford, Polk, & Solo                                    [Page 35]
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103. INTERNET DRAFT                                             December 1996
  2104.  
  2105.  
  2106.    issuingDistributionPoint ::= SEQUENCE {
  2107.         distributionPoint       [0] DistributionPointName OPTIONAL,
  2108.         onlyContainsUserCerts   [1] BOOLEAN DEFAULT FALSE,
  2109.         onlyContainsCACerts     [2] BOOLEAN DEFAULT FALSE,
  2110.         onlySomeReasons         [3] ReasonFlags OPTIONAL,
  2111.         indirectCRL             [4] BOOLEAN DEFAULT FALSE }
  2112.  
  2113. 5.2.5  Delta CRL Indicator
  2114.  
  2115.    The delta CRL indicator is a critical CRL extension that identifies a
  2116.    delta-CRL.  The use of delta-CRLs can significantly improve
  2117.    processing time for applications which store revocation information
  2118.    in a format other than the CRL structure.  This allows changes to be
  2119.    added to the local database while ignoring unchanged information that
  2120.    is already in the local databse.
  2121.  
  2122.    When a delta-CRL is issued, the CAs shall also issue a complete CRL.
  2123.  
  2124.    The value of BaseCRLNumber identifies the CRL number of the base CRL
  2125.    that was used as the starting point in the generation of this delta-
  2126.    CRL.  The delta-CRL contains the changes between the base CRL and the
  2127.    current CRL issued along with the delta-CRL.  It is the decision of a
  2128.    CA as to whether to provide delta-CRLs.  Again, a delta-CRL shall not
  2129.    be issued without a corresponding CRL.  The value of CRLNumber for
  2130.    both the delta-CRL and the corresponding CRL shall be identical.
  2131.  
  2132.    A CRL user constructing a locally held CRL from delta-CRLs shall
  2133.    consider the constructed CRL incomplete and unusable if the CRLNumber
  2134.    of the received delta-CRL is more that one greater that the CRLnumber
  2135.    of the delta-CRL last processed.
  2136.  
  2137.    id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 }
  2138.  
  2139.    deltaCRLIndicator ::= BaseCRLNumber
  2140.  
  2141.    BaseCRLNumber ::= CRLNumber
  2142.  
  2143. 5.3  CRL Entry Extensions
  2144.  
  2145.    The CRL entry extensions already defined by ANSI X9 and ISO for X.509
  2146.    v2 CRLs [X.509-AM] [X9.55] provide methods for associating additional
  2147.    attributes with CRL entries.  The X.509 v2 CRL format also allows
  2148.    communities to define private CRL entry extensions to carry
  2149.    information unique to those communities.  Each extension in a CRL
  2150.    entry may be designated as critical or non-critical.  A CRL
  2151.    validation must fail if it encounters a critical CRL entry extension
  2152.    which it does not know how to process.  However, an unrecognized
  2153.    non-critical CRL entry extension may be ignored.  The following
  2154.  
  2155.  
  2156.  
  2157. Housley, Ford, Polk, & Solo                                    [Page 36]
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163. INTERNET DRAFT                                             December 1996
  2164.  
  2165.  
  2166.    presents recommended extensions used within Internet CRL entries and
  2167.    standard locations for information.  Communities may elect to use
  2168.    additional CRL entry extensions; however, caution should be exercised
  2169.    in adopting any critical extensions in CRL entries which might be
  2170.    used in a general context.
  2171.  
  2172.    All CRL entry extensions are non-critical; support for these
  2173.    extensions is optional for conforming CAs and applications.  However,
  2174.    CAs that issue CRLs are strongly encouraged to include reason codes
  2175.    (5.3.1) whenever this information is available.
  2176.  
  2177. 5.3.1  Reason Code
  2178.  
  2179.    The reasonCode is a non-critical CRL entry extension that identifies
  2180.    the reason for the certificate revocation. CAs are strongly
  2181.    encouraged to include reason codes in CRL entries; however, the
  2182.    reason code CRL entry extension should be absent instead of using the
  2183.    unspecified (0) reasonCode value.
  2184.  
  2185.    id-ce-cRLReason OBJECT IDENTIFIER ::= { id-ce 21 }
  2186.  
  2187.    -- reasonCode ::= { CRLReason }
  2188.  
  2189.    CRLReason ::= ENUMERATED {
  2190.         unspecified             (0),
  2191.         keyCompromise           (1),
  2192.         cACompromise            (2),
  2193.         affiliationChanged      (3),
  2194.         superseded              (4),
  2195.         cessationOfOperation    (5),
  2196.         certificateHold         (6),
  2197.         removeFromCRL           (8) }
  2198.  
  2199. 5.3.2  Hold Instruction Code
  2200.  
  2201.    The hold instruction code is a non-critical CRL entry extension that
  2202.    provides a registered instruction identifier which indicates the
  2203.    action to be taken after encountering a certificate that has been
  2204.    placed on hold.
  2205.  
  2206.    id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 }
  2207.  
  2208.    holdInstructionCode ::= OBJECT IDENTIFIER
  2209.  
  2210.    The following instruction codes have been defined.  Conforming applications
  2211.    that process this extension shall recognize the following instruction codes.
  2212.  
  2213.    holdInstruction    OBJECT IDENTIFIER ::=
  2214.  
  2215.  
  2216.  
  2217. Housley, Ford, Polk, & Solo                                    [Page 37]
  2218.  
  2219.  
  2220.  
  2221.  
  2222.  
  2223. INTERNET DRAFT                                             December 1996
  2224.  
  2225.  
  2226.                           { iso(1) member-body(2) us(840) x9-57(10040) 2 }
  2227.  
  2228.    id-holdinstruction-none       OBJECT IDENTIFIER ::= {holdInstruction 1}
  2229.    id-holdinstruction-callissuer OBJECT IDENTIFIER ::= {holdInstruction 2}
  2230.    id-holdinstruction-reject     OBJECT IDENTIFIER ::= {holdInstruction 3}
  2231.  
  2232.    Conforming applications which encounter a id-holdinstruction-
  2233.    callissuer must call the certificate issuer or reject the
  2234.    certificate.  Conforming applications which encounter a id-
  2235.    holdinstruction-reject ID shall reject the transaction. id-
  2236.    holdinstruction-none is semantically equivalent to the absence of a
  2237.    holdInstructionCode.  Its use is strongly deprecated for the Internet
  2238.    PKI.
  2239.  
  2240.    <<Note: I didn't think id-holdinstruction-pickupToken was appropriate
  2241.    for the Internet PKI>>
  2242.  
  2243. 5.3.3  Invalidity Date
  2244.  
  2245.    The invalidity date is a non-critical CRL entry extension that
  2246.    provides the date on which it is known or suspected that the private
  2247.    key was compromised or that the certificate otherwise became invalid.
  2248.    This date may be earlier than the revocation date in the CRL entry,
  2249.    but it must be later than the issue date of the previously issued
  2250.    CRL.  Remember that the revocation date in the CRL entry specifies
  2251.    the date that the CA revoked the certificate.  Whenever this
  2252.    information is available, CAs are strongly encouraged to share it
  2253.    with CRL users.
  2254.  
  2255.    The GeneralizedTime values included in this field shall be expressed
  2256.    in Greenwich Mean Time (Zulu) and omit trailing zeros in fractional
  2257.    seconds.  GeneralizedTime shall be expressed as YYYYMMDDHHMMSSZ.
  2258.  
  2259.    id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 }
  2260.  
  2261.    invalidityDate ::=  GeneralizedTime
  2262.  
  2263. 5.4  Examples
  2264.  
  2265.    5.4.1 Empty CRL
  2266.  
  2267.    <<TBD>>
  2268.  
  2269.    5.4.2 CRL with entries, no extensions
  2270.  
  2271.    <<TBD>>
  2272.  
  2273.    5.4.3 CRL with extensions
  2274.  
  2275.  
  2276.  
  2277. Housley, Ford, Polk, & Solo                                    [Page 38]
  2278.  
  2279.  
  2280.  
  2281.  
  2282.  
  2283. INTERNET DRAFT                                             December 1996
  2284.  
  2285.  
  2286.    <<TBD>>
  2287.  
  2288. 6  Certificate Path Validation
  2289.  
  2290.    Certification path validation procedures for the Internet PKI are
  2291.    based on Section 12.4.3 of [X.509-AM].
  2292.  
  2293.    Certification path processing verifies the binding between the
  2294.    subject distinguished name and subject public key.  The basic
  2295.    constraints and policy constraints extensions facilitate automated,
  2296.    self-contained implementation of certification path processing logic.
  2297.  
  2298.    The following is an outline of a procedure for validating
  2299.    certification paths.  An implementation shall be functionally
  2300.    equivalent to the external behaviour resulting from this procedure.
  2301.    Any algorithm may be used by a particular implementation so long as
  2302.    it derives the correct result.
  2303.  
  2304.    The inputs to the certification path processing procedure are:
  2305.  
  2306.       (a)  a set of certificates comprising a certification path;
  2307.  
  2308.       (b)  a CA name and trusted public key value (or an identifier of
  2309.       such a key if the key is stored internally to the certification
  2310.       path processing module) for use in verifying the first certificate
  2311.       in the certification path;
  2312.  
  2313.  
  2314.       (c)  a set of initial-policy identifiers (each comprising a
  2315.       sequence of policy element identifiers), which identifies one or
  2316.       more certificate policies, any one of which would be acceptable
  2317.       for the purposes of certification path processing; and
  2318.  
  2319.       (d)  the current date/time (if not available internally to the
  2320.       certification path processing module).
  2321.  
  2322.    The outputs of the procedure are:
  2323.  
  2324.       (a)  an indication of success or failure of certification path
  2325.       validation;
  2326.  
  2327.       (b)  if validation failed, a reason for failure; and
  2328.  
  2329.       (c)  if validation was successful, a (possibly empty) set of
  2330.       policy qualifiers obtained from CAs on the path.
  2331.  
  2332.    The procedure makes use of the following set of state variables:
  2333.  
  2334.  
  2335.  
  2336.  
  2337. Housley, Ford, Polk, & Solo                                    [Page 39]
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343. INTERNET DRAFT                                             December 1996
  2344.  
  2345.  
  2346.       (a)  acceptable policy set:  A set of certificate policy
  2347.       identifiers comprising the policy or policies recognized by the
  2348.       public key user together with policies deemed equivalent through
  2349.       policy mapping;
  2350.  
  2351.       (b)  constrained subtrees:  A set of root names defining a set of
  2352.       subtrees within which all subject names in subsequent certificates
  2353.       in the certification path shall fall; if no restriction is in
  2354.       force this state variable takes the special value unbounded; and
  2355.  
  2356.       (c)  excluded subtrees:  A set of root names defining a set of
  2357.       subtrees within which no subject name in subsequent certificates
  2358.       in the certification path may fall; if no restriction is in force
  2359.       this state variable takes the special value empty.
  2360.  
  2361.       The procedure involves an initialization step, followed by a
  2362.       series of certificate-processing steps.  The initialization step
  2363.       comprises:
  2364.  
  2365.       (a)  Initialize the constrained subtress to unbounded;
  2366.  
  2367.       (b)  Initialize the excluded subtrees indicator to empty; and
  2368.  
  2369.       (c)  Initialize the acceptable policy set to the set of initial-
  2370.       policy identifiers.
  2371.  
  2372.    Each certificate is then processed in turn, starting with the
  2373.    certificate signed using the trusted CA public key which was input to
  2374.    this procedure.  The last certificate is processed as an end-entity
  2375.    certificate; all other certificates (if any) are processed as CA-
  2376.    certificates.
  2377.  
  2378.    The following checks are applied to all certificates:
  2379.  
  2380.       (a)  Check that the signature verifies, that dates are valid, that
  2381.       the subject and issuer names chain correctly, and that the
  2382.       certificate has not been revoked;
  2383.  
  2384.       If the certificate has an empty sequence in the name field, name
  2385.       chaining will use the critical altSubjectNames and altIssuerNames
  2386.       fields. If the certificate has a critical authorityInfoAccess or
  2387.       caInfoAccess extension, the information in that extension must be
  2388.       used to determine the status of the certificates.
  2389.  
  2390.       (b)  If a key usage restriction extension is present in the
  2391.       certificate and contains a certPolicySet component, check that at
  2392.       least one member of the acceptable policy set appears in the
  2393.       field;
  2394.  
  2395.  
  2396.  
  2397. Housley, Ford, Polk, & Solo                                    [Page 40]
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403. INTERNET DRAFT                                             December 1996
  2404.  
  2405.  
  2406.       (c)  Check that the subject name or critical AltSubjectName
  2407.       extension is consistent with the constrained subtrees state
  2408.       variables; and
  2409.  
  2410.       (d)  Check that the subject name or critical AltSubjectName
  2411.       extension is consistent with the excluded subtrees state
  2412.       variables.
  2413.  
  2414.    If any one of the above checks fails, the procedure terminates,
  2415.    returning a failure indication and an appropriate reason.  If none of
  2416.    the above checks fail on the end-entity certificate, the procedure
  2417.    terminates, returning a success indication together with the set of
  2418.    all policy qualifier values encountered in the set of certificates.
  2419.  
  2420.    For a CA-certificate, the following constraint recording actions are
  2421.    then performed, in order to correctly set up the state variables for
  2422.    the processing of the next certificate:
  2423.  
  2424.       (a)  If permittedSubtrees is present in the certificate, set the
  2425.       constrained subtrees state variable to the intersection of its
  2426.       previous value and the value indicated in the extension field.
  2427.  
  2428.       (b)  If excludedSubtrees is present in the certificate, set the
  2429.       excluded subtrees state variable to the union of its previous
  2430.       value and the value indicated in the extension field.
  2431.  
  2432.       Note:  It is possible to specify an extended version of the above
  2433.       certification path processing procedure which results in default
  2434.       behaviour identical to the rules of Privacy Enhanced Mail [RFC
  2435.       1422].  In this extended version, additional inputs to the
  2436.       procedure are a list of one or more Policy Certification Authority
  2437.       (PCA) names and an indicator of the position in the certification
  2438.       path where the PCA is expected.  At the nominated PCA position,
  2439.       the CA name is compared against this list.  If a recognized PCA
  2440.       name is found, then a constraint of SubordinateToCA is implicitly
  2441.       assumed for the remainder of the certification path and processing
  2442.       continues.  If no valid PCA name is found, and if the
  2443.       certification path cannot be validated on the basis of identified
  2444.       policies, then the certification path is considered invalid.
  2445.  
  2446. 7  Algorithm Support
  2447.  
  2448.    This section describes cryptographic alogrithms which may be used
  2449.    with this standard.  The section describes one-way hash functions and
  2450.    digital signature algorithms which may be used to sign certificates
  2451.    and CRLs, and identifies object identifiers for public keys contained
  2452.    in a certificate.
  2453.  
  2454.  
  2455.  
  2456.  
  2457. Housley, Ford, Polk, & Solo                                    [Page 41]
  2458.  
  2459.  
  2460.  
  2461.  
  2462.  
  2463. INTERNET DRAFT                                             December 1996
  2464.  
  2465.  
  2466.    Conforming CAs and applications are not required to support the
  2467.    algorithms or algorithm identifiers described in this section.
  2468.    However, this profile requires conforming CAs and applications to
  2469.    conform when they use the algorithms identified here.
  2470.  
  2471. 7.1  One-way Hash Functions
  2472.  
  2473.    This section identifies one-way hash functions for use in the
  2474.    Internet PKI.  One-way hash functions are also called message digest
  2475.    algorithms. SHA-1 is the preferred one-way hash function for the
  2476.    Internet PKI.  However, PEM uses MD2 for certificates [RFC 1422] [RFC
  2477.    1423].  For this reason, MD2 is included in this profile.
  2478.  
  2479. 7.1.1  MD2 One-way Hash Function
  2480.  
  2481.    MD2 was developed by Ron Rivest, but RSA Data Security has not placed
  2482.    the MD2 algorithm in the public domain.  Rather, RSA Data Security
  2483.    has granted license to use MD2 for non-commerical Internet Privacy-
  2484.    Enhanced Mail.  For this reason, MD2 may continue to be used with PEM
  2485.    certificates, but SHA-1 is preferred.  MD2 is fully described in RFC
  2486.    1319 [RFC 1319].
  2487.  
  2488.    At the Selected Areas in Cryptography '95 conference in May 1995,
  2489.    Rogier and Chauvaud presented an attack on MD2 that can nearly find
  2490.    collisions [RC95].  Collisions occur when two different messages
  2491.    generate the same message digest.  A checksum operation in MD2 is the
  2492.    only remaining obstacle to the success of the attack.  For this
  2493.    reason, the use of MD2 for new applications is discouraged.  It is
  2494.    still reasonable to use MD2 to verify existing signatures, as the
  2495.    ability to find collisions in MD2 does not enable an attacker to find
  2496.    new messages having a previously computed hash value.
  2497.  
  2498.    << More information on the attack and its implications can be
  2499.    obtained from a RSA Laboratories security bulletin.  These bulletins
  2500.    are available from <http://www.rsa.com/>. >>
  2501.  
  2502. 7.1.2  SHA-1 One-way Hash Function
  2503.  
  2504.    SHA-1 was developed by the U.S. Government.  SHA-1 is fully described
  2505.    in FIPS 180-1 [FIPS 180-1].
  2506.  
  2507.    SHA-1 is the one-way hash function of choice for use with both the
  2508.    RSA and DSA signature algorithms.
  2509.  
  2510. 7.2  Signature Algorithms
  2511.  
  2512.    Certificates and CRLs described by this standard may be signed with
  2513.    any public key signature algorithm.  The certificate or CRL indicates
  2514.  
  2515.  
  2516.  
  2517. Housley, Ford, Polk, & Solo                                    [Page 42]
  2518.  
  2519.  
  2520.  
  2521.  
  2522.  
  2523. INTERNET DRAFT                                             December 1996
  2524.  
  2525.  
  2526.    the algorithm through an algorithmidentifier which appears in the
  2527.    signatureAlgorithm field in a Certificate or CertificateList.  This
  2528.    algorithmidentfier is an OID and has optionally associated
  2529.    parameters.  This section identifies algorithm identifiers and
  2530.    parameters that shall be used in the signatureAlgorithm field in a
  2531.    Certificate or CertificateList.
  2532.  
  2533.    RSA and DSA are the most popular signature algorithms used in the
  2534.    Internet.  Signature algorithms are always used in conjunction with a
  2535.    one-way hash function identified in Section 7.1.
  2536.  
  2537.    The signature algorithm (and one-way hash function) used to sign a
  2538.    certificate or CRL is indicated by use of an algorithm identifier.
  2539.    An algorithm identifier is an object identifier, and may include
  2540.    associated parameters.  This section identifies OIDS for RSA and DSA
  2541.    and the corresponding parameters.
  2542.  
  2543.    The data to be signed (e.g., the one-way hash function output value)
  2544.    is first ASN.1 encoded as an OCTET STRING and the result is encrypted
  2545.    (e.g., using RSA Encryption) to form the signed quantity.  This
  2546.    signature value is then ASN.1 encoded as a BIT STRING and included in
  2547.    the Certificate or CertificateList (in the signature field).
  2548.  
  2549. 7.2.1  RSA Signature Algorithm
  2550.  
  2551.    A patent statement regarding the RSA algorithm can be found at the
  2552.    end of this profile.
  2553.  
  2554.    The RSA algorithm is named for it's inventors: Rivest, Shamir, and
  2555.    Adleman.  The RSA signature algorithm combines either the MD2 or the
  2556.    SHA-1 one-way hash function with the RSA asymmetric encryption
  2557.    algorithm.  The RSA signature algorithm with MD2 and the RSA
  2558.    encryption algorithm is defined in PKCS #1 [PKCS#1].  As defined in
  2559.    PKCS #1, the ASN.1 object identifier used to identify this signature
  2560.    algorithm is:
  2561.  
  2562.         md2WithRSAEncryption OBJECT IDENTIFIER  ::=  {
  2563.             iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1)
  2564.             pkcs-1(1) 2  }
  2565.  
  2566.    The RSA signature algorithm with SHA-1 and the RSA encryption
  2567.    algorithm is defined in by the OSI Ineroperability Workshop in []. As
  2568.    defined in [OIW], the ASN.1 object identifier used to identify this
  2569.    signature algorithm is:
  2570.  
  2571.         sha-1WithRSAEncryption OBJECT IDENTIFIER  ::=  {
  2572.             iso(1) identified-organization(3) oiw(14)
  2573.             secsig(3) algorithm(2) 29  }
  2574.  
  2575.  
  2576.  
  2577. Housley, Ford, Polk, & Solo                                    [Page 43]
  2578.  
  2579.  
  2580.  
  2581.  
  2582.  
  2583. INTERNET DRAFT                                             December 1996
  2584.  
  2585.  
  2586.    When either of these object identifiers is used within the ASN.1 type
  2587.    AlgorithmIdentifier, the parameters component of that type shall be
  2588.    the ASN.1 type NULL.
  2589.  
  2590.    When signing, the RSA algorithm generates an integer y.  This value
  2591.    is converted to a bit string such that the most significant bit in y
  2592.    is the first bit in the bit string and the least significant bit in y
  2593.    is the last bit in the bit string.
  2594.  
  2595.    (In general this occurs in two steps.  The integer y is converted to
  2596.    an octect string such that the first octect has the most significance
  2597.    and the last octect has the least significance. The octet string is
  2598.    converted into a bit string such that the most significant bit of the
  2599.    first octect shall become the first bit in the bit string, and the
  2600.    least significant bit of the last octect is the last bit in the BIT
  2601.    STRING.
  2602.  
  2603. 7.2.2  DSA Signature Algorithm
  2604.  
  2605.    A patent statement regarding the DSA can be found at the end of this
  2606.    profile.
  2607.  
  2608.    The Digital Signature Algorithm (DSA) is also called the Digital
  2609.    Signature Standard (DSS).  DSA was developed by the U.S. Government,
  2610.    and DSA is used in conjunction with the the SHA-1 one-way hash
  2611.    function.  DSA is fully described in FIPS 186 [FIPS 186].  The ASN.1
  2612.    object identifiers used to identify this signature algorithm are:
  2613.  
  2614.            id-dsa-with-sha1 ID  ::=  {
  2615.                    iso(1) member-body(2) us(840) x9-57 (10040) secsig(2)
  2616.                    x9algorithm(4) 3 }
  2617.  
  2618.    The id-dsa-with-sha1 algorithm syntax has NULL parameters. The DSA
  2619.    parameters in the subjectPublicKeyInfo field of the certificate of
  2620.    the issuer shall apply to the verification of the signature.
  2621.  
  2622.    If the subjectPublicKeyInfo AlgorithmIdentifier field has NULL
  2623.    parameters and the CA signed the subject certificate using DSA, then
  2624.    the certificate issuer's parameters apply to the subject's DSA key.
  2625.    If the subjectPublicKeyInfo AlgorithmIdentifier field has NULL
  2626.    parameters and the CA signed the subject with a signature algorithm
  2627.    other than DSA, then clients shall not validate the certificate.
  2628.  
  2629.    When signing, the DSA algorithm generates two values.  These values
  2630.    are commonly referred to as r and s.  To easily transfer these two
  2631.    values as one signature, they shall be ASN.1 encoded using the
  2632.    following ASN.1 structure:
  2633.  
  2634.  
  2635.  
  2636.  
  2637. Housley, Ford, Polk, & Solo                                    [Page 44]
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643. INTERNET DRAFT                                             December 1996
  2644.  
  2645.  
  2646.            Dss-Sig-Value  ::=  SEQUENCE  {
  2647.                    r       INTEGER,
  2648.                    s       INTEGER  }
  2649.  
  2650. 7.3  Subject Public Key Algorithms
  2651.  
  2652.    Certificates described by this standard may convey a public key for
  2653.    any public key algorithm. The certificate indicates the algorithm
  2654.    through an algorithmidentifier.  This algorithmidentfieier is an OID
  2655.    and optionally associated parameters.
  2656.  
  2657.    This section identifies preferred OIDs and parameters for the RSA,
  2658.    DSA, KEA, and Diffie-Hellman algorithms.  Conforming CAs shall use
  2659.    the identified OIDs when issuing certificates containing public keys
  2660.    for these algorithms. Conforming applications supporting any of these
  2661.    algorithms shall, at a minimum, recognize the OID identified in this
  2662.    section.
  2663.  
  2664. 7.3.1 RSA  Keys
  2665.  
  2666.    The object identifier rsaEncryption identifies RSA public keys.
  2667.  
  2668.         pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) US(840)
  2669.                        rsadsi(113549) pkcs(1) 1 }
  2670.  
  2671.         rsaEncryption OBJECT IDENTIFIER ::=  { pkcs-1 1}
  2672.  
  2673.    The rsaEncryption object identifier is intended to be used in the
  2674.    algorithm field of a value of type AlgorithmIdentifier. The
  2675.    parameters field shall have ASN.1 type NULL for this algorithm
  2676.    identifier.
  2677.  
  2678.    The rsa public key shall be encoded using the ASN.1 type
  2679.    RSAPublicKey:
  2680.  
  2681.       RSAPublicKey ::= SEQUENCE {
  2682.          modulus       INTEGER, -- n
  2683.          publicExponent     INTEGER  -- e
  2684.                              }
  2685.  
  2686.    where modulus is the modulus n, and publicExponent is the public
  2687.    exponent e.  The DER encoded RSAPublicKey is  the value of the BIT
  2688.    STRING subjectPubliKey.
  2689.  
  2690.    This object identifier is used in public key certificates for both
  2691.    RSA signature keys and RSA encryption keys. The intended application
  2692.    for the key may be indicated in the key usage field (see Section
  2693.    4.2.1.3).  The use of a single key for both signature and encryption
  2694.  
  2695.  
  2696.  
  2697. Housley, Ford, Polk, & Solo                                    [Page 45]
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703. INTERNET DRAFT                                             December 1996
  2704.  
  2705.  
  2706.    purposes is not recommended, but is not forbidden.
  2707.  
  2708. 7.3.2 Diffie-Hellman Key Exchange Key
  2709.  
  2710.    This diffie-hellman object identifier supported by this standard is
  2711.    defined by ANSI X9.42.
  2712.  
  2713.         dhpublicnumber OBJECT IDENTIFIER ::= { iso(1) member-body(2)
  2714.                   US(840) ansi-x942(10046) number-type(2) 1 }
  2715.  
  2716.         DHParameter ::= SEQUENCE {
  2717.              prime INTEGER, -- p
  2718.              base INTEGER, -- g }
  2719.  
  2720.    The dhpublicnumber object identifier is intended to be used in the
  2721.    algorithm field of a value of type AlgorithmIdentifier. The
  2722.    parameters field of that type, which has the algorithm-specific
  2723.    syntax ANY DEFINED BY algorithm, would have ASN.1 type DHParameter
  2724.    for this algorithm.
  2725.  
  2726.         DHParameter ::= SEQUENCE {
  2727.           prime INTEGER, -- p
  2728.           base INTEGER, -- g }
  2729.  
  2730.    The fields of type DHParameter have the following meanings:
  2731.  
  2732.       prime is the prime p.
  2733.  
  2734.       base is the base g.
  2735.  
  2736.    The Diffie-Hellman public key (an INTEGER) is mapped to a
  2737.    subjectPublicKey (a BIT STRING) as follows: the most significant bit
  2738.    (MSB) of the INTEGER becomes the MSB of the BIT STRING; the least
  2739.    significant bit (LSB) of the INTEGER becomes the LSB of the BIT
  2740.    STRING.
  2741.  
  2742. 7.3.3 DSA Signature Keys
  2743.  
  2744.    The object identifier supported by this standard is
  2745.  
  2746.         id-dsa ID ::= { iso(1) member-body(2) us(840) x9-57(10040)
  2747.                   secsig(2) x9algorithm(4) 1 }
  2748.  
  2749.    The id-dsa algorithm syntax includes optional parameters.  These
  2750.    parameters are commonly referred to as p, q, and g.  If the DSA
  2751.    algorithm parameters are absent from the subjectPublicKeyInfo
  2752.    AlgorithmIdentifier and the CA signed the subject certificate using
  2753.    DSA, then the certificate issuer's DSA parameters apply to the
  2754.  
  2755.  
  2756.  
  2757. Housley, Ford, Polk, & Solo                                    [Page 46]
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763. INTERNET DRAFT                                             December 1996
  2764.  
  2765.  
  2766.    subject's DSA key.  If the DSA algorithm parameters are absent from
  2767.    the subjectPublicKeyInfo AlgorithmIdentifier and the CA signed the
  2768.    subject certificate using a signature algorithm other than DSA, then
  2769.    the subject's DSA parameters are distributed by other means.  The
  2770.    parameters are included using the following ASN.1 structure:
  2771.  
  2772.         Dss-Parms  ::=  SEQUENCE  {
  2773.             p             INTEGER,
  2774.             q             INTEGER,
  2775.             g             INTEGER  }
  2776.  
  2777.    If the subjectPublicKeyInfo AlgorithmIdentifier field has NULL
  2778.    parameters and the CA signed the subject certificate using DSA, then
  2779.    the certificate issuer's parameters apply to the subject's DSA key.
  2780.    If the subjectPublicKeyInfo AlgorithmIdentifier field has NULL
  2781.    parameters and the CA signed the subject with a signature algorithm
  2782.    other than DSA, then clients shall not validate the certificate.
  2783.  
  2784.    When signing, DSA algorithm generates two values.  These values are
  2785.    commonly referred to as r and s.  To easily transfer these two values
  2786.    as one signature, they are ASN.1 encoded using the following ASN.1
  2787.    structure:
  2788.  
  2789.         Dss-Sig-Value  ::=  SEQUENCE  {
  2790.             r             INTEGER,
  2791.             s             INTEGER  }
  2792.  
  2793.    The encoded signature is conveyed as the value of the BIT STRING
  2794.    signature in a Certificate or CertificateList.
  2795.  
  2796.    The DSA public key shall be ASN.1 encoded as an INTEGER; this
  2797.    encoding shall be used as the contents (i.e., the value) of the
  2798.    subjectPublicKey component (a BIT STRING) of the SubjectPublicKeyInfo
  2799.    data element.
  2800.  
  2801.         DSAPublicKey ::= INTEGER -- public key Y
  2802.  
  2803. 7.3.4 Key Exchange Algorithm (KEA)
  2804.  
  2805.    The Key Exchange Algorithm (KEA) is a classified algorithm for
  2806.    exchanging keys.  A KEA "pairwise key" may be generated between two
  2807.    users if their KEA public keys were generated with the same KEA
  2808.    parameters.  The KEA parameters are not included in a certificate;
  2809.    instead a "domain identifier" is supplied in the parameters field.
  2810.  
  2811.    When the subjectPublicKeyInfo field contains a KEA key, the algorithm
  2812.    identifier and parameters shall be as defined in [sdn.701r]:
  2813.  
  2814.  
  2815.  
  2816.  
  2817. Housley, Ford, Polk, & Solo                                    [Page 47]
  2818.  
  2819.  
  2820.  
  2821.  
  2822.  
  2823. INTERNET DRAFT                                             December 1996
  2824.  
  2825.  
  2826.       id-keyEncryptionAlgorithm  OBJECT IDENTIFIER   ::=
  2827.              { 2 16 840 1 101 2 1 1 22 }
  2828.  
  2829.       KEA-Parms-Id     ::= OCTET STRING
  2830.  
  2831.  
  2832.    The Kea-Parms-Id shall always appear when the subjectPublicKeyInfo
  2833.    field algorithm identifier is id-keyEncryptionAlgorithm. Kea-Parms-Id
  2834.    is the "domain identifier" and is ten octets in length. If the Kea-
  2835.    Parms-Id of two KEA keys are equivalent, the subjects possess the
  2836.    same KEA parameter values and may exchange keys.
  2837.  
  2838.    <<Need encoding of KEA key>>
  2839.  
  2840.  
  2841. 8. ASN.1 Structures and OIDs
  2842.  
  2843.  
  2844.    PKIX1 DEFINITIONS ::=
  2845.  
  2846.    BEGIN
  2847.  
  2848.  
  2849.    -- need ASN.1 for:
  2850.    -- AlgorithmIdentifier
  2851.    -- ORAddress
  2852.  
  2853.  
  2854.    -- attribute data types --
  2855.  
  2856.    Attribute       ::=     SEQUENCE {
  2857.            type    AttributeValue,
  2858.            values  SET OF AttributeValue
  2859.                    -- at least one value is required -- }
  2860.  
  2861.    AttributeType           ::=     OBJECT IDENTIFIER
  2862.  
  2863.    AttributeValue          ::=     ANY
  2864.  
  2865.    AttributeTypeAndValue           ::=     SEQUENCE {
  2866.            type    AttributeValue,
  2867.            value   AttributeValue }
  2868.  
  2869.    AttributeValueAssertion ::=     SEQUENCE {AttributeType, AttributeValue}
  2870.  
  2871.    -- naming data types --
  2872.  
  2873.    Name            ::=     CHOICE { -- only one possibility for now --
  2874.  
  2875.  
  2876.  
  2877. Housley, Ford, Polk, & Solo                                    [Page 48]
  2878.  
  2879.  
  2880.  
  2881.  
  2882.  
  2883. INTERNET DRAFT                                             December 1996
  2884.  
  2885.  
  2886.                                                    rdnSequence  RDNSequence }
  2887.  
  2888.    RDNSequence     ::=     SEQUENCE OF RelativeDistinguishedName
  2889.  
  2890.    DistinguishedName       ::=     RDNSequence
  2891.  
  2892.    RelativeDistinguishedName  ::=  SET SIZE (1 .. MAX) OF AttributeTypeAndValue
  2893.  
  2894.    -- Directory string type --
  2895.  
  2896.    DirectoryString ::= CHOICE {
  2897.            teletexString           TeletexString (SIZE (1..maxSize)),
  2898.            printableString         PrintableString (SIZE (1..maxSize)),
  2899.            universalString         ANY -- the '93 ASN.1 type UniversalString
  2900.                                                 }
  2901.  
  2902.    -- basic stuff starts here
  2903.  
  2904.    Certificate  ::=  SEQUENCE  {
  2905.         tbsCertificate       TBSCertificate,
  2906.         signatureAlgorithm   AlgorithmIdentifier,
  2907.         signature            BIT STRING  }
  2908.  
  2909.    TBSCertificate  ::=  SEQUENCE  {
  2910.         version         [0]  Version DEFAULT v1,
  2911.         serialNumber         CertificateSerialNumber,
  2912.         signature            AlgorithmIdentifier,
  2913.         issuer               Name,
  2914.         validity             Validity,
  2915.         subject              Name,
  2916.         subjectPublicKeyInfo SubjectPublicKeyInfo,
  2917.         issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
  2918.                              -- If present, version must be v2 or v3
  2919.         subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
  2920.                              -- If present, version must be v2 or v3
  2921.         extensions      [3]  Extensions OPTIONAL
  2922.                              -- If present, version must be v3
  2923.         }
  2924.  
  2925.    Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }
  2926.  
  2927.    CertificateSerialNumber  ::=  INTEGER
  2928.  
  2929.    Validity ::= SEQUENCE {
  2930.         notBefore      CertificateValidityDate,
  2931.         notAfter       CertificateValidityDate }
  2932.  
  2933.    CertificateValidityDate ::= CHOICE {
  2934.  
  2935.  
  2936.  
  2937. Housley, Ford, Polk, & Solo                                    [Page 49]
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943. INTERNET DRAFT                                             December 1996
  2944.  
  2945.  
  2946.         utcTime        UTCTime,
  2947.         generalTime    GeneralizedTime }
  2948.  
  2949.    UniqueIdentifier  ::=  BIT STRING
  2950.  
  2951.    SubjectPublicKeyInfo  ::=  SEQUENCE  {
  2952.         algorithm            AlgorithmIdentifier,
  2953.         subjectPublicKey     BIT STRING  }
  2954.  
  2955.    Extensions  ::=  SEQUENCE OF Extension
  2956.  
  2957.    Extension  ::=  SEQUENCE  {
  2958.         extnID      OBJECT IDENTIFIER,
  2959.         critical    BOOLEAN DEFAULT FALSE,
  2960.         extnValue   OCTET STRING  }
  2961.  
  2962.    -- Extension ::= { {id-ce 15}, ... , keyUsage }
  2963.  
  2964.    ID                  ::=  OBJECT IDENTIFIER
  2965.    joint-iso-ccitt     ID   ::=  { 2 }
  2966.    ds             ID   ::=  {joint-iso-ccitt 5}
  2967.    certificateExtension  ID ::=  {ds 29}
  2968.    -- id-ce          ID   ::=  certificateExtension
  2969.    id-ce          ID   ::= {ds 29}
  2970.  
  2971.    AuthorityKeyIdentifier ::= SEQUENCE {
  2972.          keyIdentifier                   [0] KeyIdentifier               OPTIONAL,
  2973.          authorityCertIssuer             [1] GeneralNames                OPTIONAL,
  2974.          authorityCertSerialNumber       [2] CertificateSerialNumber     OPTIONAL
  2975.      }
  2976.           ( WITH COMPONENTS       {..., authorityCertIssuer PRESENT,
  2977.                                           authorityCertSerialNumber PRESENT} |
  2978.            WITH COMPONENTS        {..., authorityCertIssuer ABSENT,
  2979.                                           authorityCertSerialNumber ABSENT} )
  2980.  
  2981.    -- authorityKeyIdentifier ::= AuthorityKeyIdentifier
  2982.  
  2983.    KeyIdentifier ::= OCTET STRING
  2984.  
  2985.    -- subjectKeyIdentifier ::= KeyIdentifier
  2986.  
  2987.    KeyUsage ::= BIT STRING {
  2988.         digitalSignature        (0),
  2989.         nonRepudiation          (1),
  2990.         keyEncipherment         (2),
  2991.         dataEncipherment        (3),
  2992.         keyAgreement            (4),
  2993.         keyCertSign             (5),
  2994.  
  2995.  
  2996.  
  2997. Housley, Ford, Polk, & Solo                                    [Page 50]
  2998.  
  2999.  
  3000.  
  3001.  
  3002.  
  3003. INTERNET DRAFT                                             December 1996
  3004.  
  3005.  
  3006.         cRLSign                 (6) }
  3007.  
  3008.    id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::=  { id-ce 16 }
  3009.  
  3010.    PrivateKeyUsagePeriod ::= SEQUENCE {
  3011.         notBefore       [0]     GeneralizedTime OPTIONAL,
  3012.         notAfter        [1]     GeneralizedTime OPTIONAL }
  3013.         ( WITH COMPONENTS       {..., notBefore PRESENT} |
  3014.         WITH COMPONENTS         {..., notAfter PRESENT} )
  3015.  
  3016.    id-ce-certificatePolicies OBJECT IDENTIFIER ::=  { id-ce 32 }
  3017.  
  3018.    CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
  3019.  
  3020.    PolicyInformation ::= SEQUENCE {
  3021.         policyIdentifier   CertPolicyId,
  3022.         policyQualifiers   SEQUENCE SIZE (1..MAX) OF
  3023.                 PolicyQualifierInfo OPTIONAL }
  3024.  
  3025.    CertPolicyId ::= OBJECT IDENTIFIER
  3026.  
  3027.    -- PolicyQualifierInfo ::= SEQUENCE {
  3028.    --       policyQualifierId  CERT-POLICY-QUALIFIER.&id
  3029.    --                                ({SupportedPolicyQualifiers}),
  3030.    --       qualifier          CERT-POLICY-QUALIFIER.&Qualifier
  3031.    --
  3032.    -- ({SupportedPolicyQualifiers}{@policyQualifierId})
  3033.    --                                         OPTIONAL }
  3034.  
  3035.    -- SupportedPolicyQualifiers CERT-POLICY-QUALIFIER ::= { ... }
  3036.  
  3037.    PolicyQualifierInfo ::= SEQUENCE {
  3038.           policyQualifierId  PolicyQualifierId,
  3039.           qualifier        ANY DEFINED BY policyQualifierId }
  3040.  
  3041.    PolicyQualifierId ::= ENUMERATED {
  3042.            qualId1 (1), qualId2 (2), qualId3 (3), qualId4 (4), qualId5 ( 5 ) }
  3043.  
  3044.    id-ce-policyMappings OBJECT IDENTIFIER ::=  { id-ce 33 }
  3045.  
  3046.    PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
  3047.         issuerDomainPolicy      CertPolicyId,
  3048.         subjectDomainPolicy     CertPolicyId }
  3049.  
  3050.    id-ce-subjectAltName OBJECT IDENTIFIER ::=  { id-ce 17 }
  3051.  
  3052.    SubjectAltName ::= GeneralNames
  3053.  
  3054.  
  3055.  
  3056.  
  3057. Housley, Ford, Polk, & Solo                                    [Page 51]
  3058.  
  3059.  
  3060.  
  3061.  
  3062.  
  3063. INTERNET DRAFT                                             December 1996
  3064.  
  3065.  
  3066.    GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
  3067.  
  3068.    GeneralName ::= CHOICE {
  3069.         otherName                       [0]     ANY,
  3070.         rfc822Name                      [1]     IA5String,
  3071.         dNSName                         [2]     IA5String,
  3072.         x400Address                     [3]     ORAddress,
  3073.         directoryName                   [4]     Name,
  3074.         ediPartyName                    [5]     EDIPartyName,
  3075.         uniformResourceIdentifier       [6]     IA5String,
  3076.         iPAddress                       [7]     OCTET STRING,
  3077.         registeredID                    [8]     OBJECT IDENTIFIER }
  3078.  
  3079.    -- OTHER-NAME ::= TYPE-IDENTIFIER  note: not supported in '88 ASN.1
  3080.    --              substituted ANY where used [GeneralName otherName]
  3081.  
  3082.    EDIPartyName ::= SEQUENCE {
  3083.         nameAssigner            [0]     DirectoryString OPTIONAL,
  3084.         partyName               [1]     DirectoryString }
  3085.  
  3086.    id-ce-issuerAltName OBJECT IDENTIFIER ::=  { id-ce 18 }
  3087.  
  3088.    IssuerAltName ::= GeneralNames
  3089.  
  3090.    id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::=  { id-ce 9 }
  3091.  
  3092.    SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
  3093.  
  3094.    id-ce-basicConstraints OBJECT IDENTIFIER ::=  { id-ce 19 }
  3095.  
  3096.    BasicConstraints ::= SEQUENCE {
  3097.         cA                      BOOLEAN DEFAULT FALSE,
  3098.         pathLenConstraint       INTEGER (0..MAX) OPTIONAL }
  3099.  
  3100.    id-ce-nameConstraints OBJECT IDENTIFIER ::=  { id-ce 30 }
  3101.  
  3102.    NameConstraints ::= SEQUENCE {
  3103.         permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
  3104.         excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }
  3105.  
  3106.    GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
  3107.  
  3108.    GeneralSubtree ::= SEQUENCE {
  3109.         base                    GeneralName,
  3110.         minimum         [0]     BaseDistance DEFAULT 0,
  3111.         maximum         [1]     BaseDistance OPTIONAL }
  3112.  
  3113.    BaseDistance ::= INTEGER (0..MAX)
  3114.  
  3115.  
  3116.  
  3117. Housley, Ford, Polk, & Solo                                    [Page 52]
  3118.  
  3119.  
  3120.  
  3121.  
  3122.  
  3123. INTERNET DRAFT                                             December 1996
  3124.  
  3125.  
  3126.    id-ce-policyConstraints OBJECT IDENTIFIER ::=  { id-ce 34 }
  3127.  
  3128.    PolicyConstraints ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
  3129.         policySet                       [0] CertPolicySet OPTIONAL,
  3130.         requireExplicitPolicy           [1] SkipCerts OPTIONAL,
  3131.         inhibitPolicyMapping            [2] SkipCerts OPTIONAL }
  3132.  
  3133.    SkipCerts ::= INTEGER (0..MAX)
  3134.  
  3135.    CertPolicySet ::= SEQUENCE SIZE (1..MAX) OF CertPolicyId
  3136.  
  3137.    -- cRLDistributionPoints CRLDistPointsSyntax ::=
  3138.    --              SEQUENCE SIZE (1..MAX) OF DistributionPoint
  3139.  
  3140.    CRLDistPointsSyntax ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
  3141.  
  3142.    DistributionPoint ::= SEQUENCE {
  3143.         distributionPoint       [0]     DistributionPointName OPTIONAL,
  3144.         reasons                 [1]     ReasonFlags OPTIONAL,
  3145.         cRLIssuer               [2]     GeneralNames OPTIONAL }
  3146.  
  3147.    DistributionPointName ::= CHOICE {
  3148.         fullName                [0]     GeneralNames,
  3149.         nameRelativeToCRLIssuer [1]     RelativeDistinguishedName }
  3150.  
  3151.    ReasonFlags ::= BIT STRING {
  3152.         unused                  (0),
  3153.         keyCompromise           (1),
  3154.         cACompromise            (2),
  3155.         affiliationChanged      (3),
  3156.         superseded              (4),
  3157.         cessationOfOperation    (5),
  3158.         certificateHold         (6) }
  3159.  
  3160.    pkix  OBJECT IDENTIFIER ::= { 1 3 6 1 5 3 }
  3161.  
  3162.    -- Object identifiers for ftp, http, smtp and ldap protocols
  3163.  
  3164.    applTCPProto OBJECT IDENTIFIER ::= { 1 3 6 1 2 1 27 4 }
  3165.  
  3166.    ftpID    OBJECT-IDENTIFIER ::= {applTCPProtoID 21}
  3167.    httpID   OBJECT-IDENTIFIER ::= {applTCPProtoID 80}
  3168.    smtpID   OBJECT-IDENTIFIER ::= {applTCPProtoID 25}
  3169.    ldapID   OBJECT-IDENTIFIER ::= {applTCPProtoID 389}
  3170.  
  3171.    -- Object identifier for the X.500 directory access protocol
  3172.  
  3173.    dap OBJECT-IDENTIFIER ::= { 2 5 3 1 }
  3174.  
  3175.  
  3176.  
  3177. Housley, Ford, Polk, & Solo                                    [Page 53]
  3178.  
  3179.  
  3180.  
  3181.  
  3182.  
  3183. INTERNET DRAFT                                             December 1996
  3184.  
  3185.  
  3186.    id-pkix-subjectInfoAccess OBJECT IDENTIFIER ::= { pkix 1 }
  3187.  
  3188.    AccessDescription  ::=  SEQUENCE  {
  3189.         accessMethod          OBJECT IDENTIFIER,
  3190.         accessLocation        GeneralName  }
  3191.  
  3192.    --subjectInfoAccess SubjectInfoAccessSyntax ::=
  3193.    --              SEQUENCE SIZE (1..MAX) OF AccessDescription
  3194.    SubjectInfoAccessSyntax ::=
  3195.                    SEQUENCE OF AccessDescription
  3196.  
  3197.    id-pkix-authorityInfoAccess OBJECT IDENTIFIER ::= { pkix 2 }
  3198.  
  3199.    AuthorityInfoAccessSyntax  ::=  SEQUENCE  {
  3200.         certStatus        [0] SEQUENCE OF AccessDescription OPTIONAL,
  3201.         certRetrieval     [1] SEQUENCE OF AccessDescription OPTIONAL,
  3202.         caPolicy          [2] SEQUENCE OF AccessDescription OPTIONAL,
  3203.         caCerts           [3] SEQUENCE OF AccessDescription OPTIONAL  }
  3204.  
  3205.    id-pkix-caInfoAccess OBJECT-IDENTIFIER ::= { pkix 3 }
  3206.  
  3207.    -- caInfoAccess ::=  {
  3208.    --     AuthorityInfoAccessSyntax  }
  3209.  
  3210.    -- CRL structures
  3211.  
  3212.    CertificateList  ::=  SEQUENCE  {
  3213.         tbsCertList          TBSCertList,
  3214.         signatureAlgorithm   AlgorithmIdentifier,
  3215.         signature            BIT STRING  }
  3216.  
  3217.    TBSCertList  ::=  SEQUENCE  {
  3218.         version                 Version OPTIONAL,
  3219.                                      -- if present, must be v2
  3220.         signature               AlgorithmIdentifier,
  3221.         issuer                  Name,
  3222.         thisUpdate              ChoiceOfTime,
  3223.         nextUpdate              ChoiceOfTime,
  3224.         revokedCertificates     SEQUENCE OF SEQUENCE  {
  3225.              userCertificate         CertificateSerialNumber,
  3226.              revocationDate          ChoiceOfTime,
  3227.              crlEntryExtensions      Extensions OPTIONAL
  3228.                                                  -- if present, must be v2
  3229.                                   }  OPTIONAL,
  3230.         crlExtensions           [0]  Extensions OPTIONAL
  3231.                                                  -- if present, must be v2
  3232.                                   }
  3233.  
  3234.  
  3235.  
  3236.  
  3237. Housley, Ford, Polk, & Solo                                    [Page 54]
  3238.  
  3239.  
  3240.  
  3241.  
  3242.  
  3243. INTERNET DRAFT                                             December 1996
  3244.  
  3245.  
  3246.    Version  ::= INTEGER  {  v1(0), v2(1), v3(2)  }
  3247.  
  3248.    AlgorithmIdentifier  ::=  SEQUENCE  {
  3249.         algorithm               OBJECT IDENTIFIER,
  3250.         parameters              ANY DEFINED BY algorithm OPTIONAL  }
  3251.                                      -- contains a value of the type
  3252.                                      -- registered for use with the
  3253.                                      -- algorithm object identifier value
  3254.  
  3255.    ChoiceOfTime ::= CHOICE {
  3256.         utcTime        UTCTime,
  3257.         generalTime    GeneralizedTime }
  3258.  
  3259.    CertificateSerialNumber  ::=  INTEGER
  3260.  
  3261.    Extensions  ::=  SEQUENCE OF Extension
  3262.  
  3263.    Extension  ::=  SEQUENCE  {
  3264.         extnId                  OBJECT IDENTIFIER,
  3265.         critical                BOOLEAN DEFAULT FALSE,
  3266.         extnValue               OCTET STRING  }
  3267.                                      -- contains a DER encoding of a value
  3268.                                      -- of the type registered for use with
  3269.                                      -- the extnId object identifier value
  3270.  
  3271.    id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 }
  3272.  
  3273.    CRLNumber ::= INTEGER (0..MAX)
  3274.  
  3275.    id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 }
  3276.  
  3277.    IssuingDistributionPoint ::= SEQUENCE {
  3278.         distributionPoint       [0] DistributionPointName OPTIONAL,
  3279.         onlyContainsUserCerts   [1] BOOLEAN DEFAULT FALSE,
  3280.         onlyContainsCACerts     [2] BOOLEAN DEFAULT FALSE,
  3281.         onlySomeReasons         [3] ReasonFlags OPTIONAL,
  3282.         indirectCRL             [4] BOOLEAN DEFAULT FALSE }
  3283.  
  3284.  
  3285.    id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 }
  3286.  
  3287.    -- deltaCRLIndicator ::= BaseCRLNumber
  3288.  
  3289.    BaseCRLNumber ::= CRLNumber
  3290.  
  3291.    id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 }
  3292.  
  3293.    -- reasonCode EXTENSION ::= {
  3294.  
  3295.  
  3296.  
  3297. Housley, Ford, Polk, & Solo                                    [Page 55]
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303. INTERNET DRAFT                                             December 1996
  3304.  
  3305.  
  3306.    --      SYNTAX  CRLReason
  3307.    --      IDENTIFIED BY { id-ce 21 } }
  3308.  
  3309.    CRLReason ::= ENUMERATED {
  3310.         unspecified             (0),
  3311.         keyCompromise           (1),
  3312.         cACompromise            (2),
  3313.         affiliationChanged      (3),
  3314.         superseded              (4),
  3315.         cessationOfOperation    (5),
  3316.         certificateHold         (6),
  3317.         removeFromCRL           (8) }
  3318.  
  3319.    id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 }
  3320.  
  3321.    HoldInstructionCode ::= OBJECT IDENTIFIER
  3322.  
  3323.    member-body ID ::= { iso 2 }
  3324.    us ID ::= { member-body 840 }
  3325.    x9cm ID ::= { us 10040 }
  3326.    holdInstruction ID ::= {x9cm 2}
  3327.  
  3328.    id-holdinstruction-none ID ::= {holdInstruction 1}
  3329.    id-holdinstruction-callissuer ID ::= {holdInstruction 2}
  3330.    id-holdinstruction-reject ID ::= {holdInstruction 3}
  3331.  
  3332.    id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 }
  3333.  
  3334.    InvalidityDate ::=  GeneralizedTime
  3335.  
  3336.    -- Algorithm strustures
  3337.  
  3338.         md2WithRSAEncryption OBJECT IDENTIFIER  ::=  {
  3339.             iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1)
  3340.             pkcs-1(1) 2  }
  3341.  
  3342.  
  3343.         sha-1WithRSAEncryption OBJECT IDENTIFIER  ::=  {
  3344.             iso(1) identified-organization(3) oiw(14) secsig(3)
  3345.             algorithm(2) 29  }
  3346.  
  3347.            id-dsa-with-sha1 ID  ::=  {
  3348.                    iso(1) member-body(2) us(840) x9-57 (10040) secsig(2)
  3349.                    x9algorithm(4) 3 }
  3350.  
  3351.            Dss-Sig-Value  ::=  SEQUENCE  {
  3352.                    r       INTEGER,
  3353.                    s       INTEGER  }
  3354.  
  3355.  
  3356.  
  3357. Housley, Ford, Polk, & Solo                                    [Page 56]
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363. INTERNET DRAFT                                             December 1996
  3364.  
  3365.  
  3366.         pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) US(840)
  3367.                        rsadsi(113549) pkcs(1) 1 }
  3368.  
  3369.         rsaEncryption OBJECT IDENTIFIER ::=  { pkcs-1 1}
  3370.  
  3371.         dhpublicnumber OBJECT IDENTIFIER ::= { iso(1) member-body(2)
  3372.                   US(840) ansi-x942(10046) 1 }
  3373.  
  3374.         DHParameter ::= SEQUENCE {
  3375.              prime INTEGER, -- p
  3376.              base INTEGER -- g
  3377.                    }
  3378.  
  3379.         id-dsa ID ::= { iso(1) member-body(2) us(840) x9-57(10040)
  3380.                   secsig(2) x9algorithm(4) 1 }
  3381.  
  3382.         Dss-Parms  ::=  SEQUENCE  {
  3383.             p             INTEGER,
  3384.             q             INTEGER,
  3385.             g             INTEGER  }
  3386.  
  3387.         Dss-Sig-Value  ::=  SEQUENCE  {
  3388.             r             INTEGER,
  3389.             s             INTEGER  }
  3390.  
  3391.       id-keyEncryptionAlgorithm  OBJECT IDENTIFIER   ::=
  3392.              { 2 16 840 1 101 2 1 1 22 }
  3393.  
  3394.       KEA-Parms-Id     ::= OCTET STRING
  3395.  
  3396.    id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 35 }
  3397.    id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 14 }
  3398.    id-ce-keyUsage OBJECT IDENTIFIER ::=  { id-ce 15 }
  3399.    id-pkix-policy-CPS OBJECT IDENTIFIER ::= { pkix 4 }
  3400.  
  3401.    CPSuri ::= IA5String
  3402.  
  3403.    id-pkix-policy-userNotice OBJECT IDENTIFIER ::= { pkix 5 }
  3404.  
  3405.    UserNotice ::= CHOICE {
  3406.      ia5String     IA5String,
  3407.      bnpString     ANY -- defined as BMPString in '93 ASN.1
  3408.                            }
  3409.  
  3410.    END
  3411.  
  3412.    References
  3413.  
  3414.  
  3415.  
  3416.  
  3417. Housley, Ford, Polk, & Solo                                    [Page 57]
  3418.  
  3419.  
  3420.  
  3421.  
  3422.  
  3423. INTERNET DRAFT                                             December 1996
  3424.  
  3425.  
  3426.    [X9.57]    ANSI X9.57
  3427.  
  3428.    [FIPS 180-1]  Federal Information Processing Standards Publication
  3429.               (FIPS PUB) 180-1, Secure Hash Standard, 17 April 1995.
  3430.               [Supersedes FIPS PUB 180 dated 11 May 1993.]
  3431.  
  3432.    [FIPS 186] Federal Information Processing Standards Publication
  3433.               (FIPS PUB) 186, Digital Signature Standard, 18 May 1994.
  3434.  
  3435.    [PKCS#1]   PKCS #1: RSA Encryption Standard, Version 1.4, RSA Data
  3436.               Security, Inc., 3 June 1991.
  3437.  
  3438.    [RC95]     Rogier, N. and Chauvaud, P., "The compression function of
  3439.               MD2 is not collision free," Presented at Selected Areas in
  3440.               Cryptography '95, Carleton University, Ottawa, Canada,
  3441.               18-19 May 1995.
  3442.  
  3443.    [RFC 1319] Kaliski, B., "The MD2 Message-Digest Algorithm," RFC 1319,
  3444.               RSA Laboratories, April 1992.
  3445.  
  3446.    [RFC 1422] Kent, S.,  "Privacy Enhancement for Internet Electronic
  3447.               Mail: Part II: Certificate-Based Key Management," RFC
  3448.               1422, BBN Communications, February 1993.
  3449.  
  3450.    [RFC 1423] Balenson, D., "Privacy Enhancement for Internet Electronic
  3451.               Mail: Part III: Algorithms, Modes, and Identifiers,"
  3452.               RFC 1423, Trusted Information Systems, February 1993.
  3453.  
  3454.    [RFC 1959] T. Howes, M. Smith, "An LDAP URL Format", RFC 1959,
  3455.               June 1996.
  3456.  
  3457.    [SDN.701R] SDN.701, "Message Security Protocol", Revision 4.0
  3458.               1996-06-07 with "Corrections to Message Security Protocol,
  3459.            SDN.701, Rev 4.0, 96-06-07." August 30, 1996.
  3460.  
  3461.    [X.208]    << Do we want to reference the 1988 or 1993 version? >>
  3462.  
  3463.    [X.509-AM] << Need final reference >>
  3464.  
  3465.    [X9.55]    << Need final reference >>
  3466.  
  3467. Patent Statements
  3468.  
  3469.    The Internet PKI relies on the use of patented public key technology.
  3470.    The Internet Standards Process as defined in RFC 1310 requires a
  3471.    written statement from the Patent holder that a license will be made
  3472.    available to applicants under reasonable terms and conditions prior
  3473.    to approving a specification as a Proposed, Draft or Internet
  3474.  
  3475.  
  3476.  
  3477. Housley, Ford, Polk, & Solo                                    [Page 58]
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483. INTERNET DRAFT                                             December 1996
  3484.  
  3485.  
  3486.    Standard.
  3487.  
  3488.    Patent statements for DSA, RSA, and Diffie-Hellman follow.  These
  3489.    statements have been supplied by the patent holders, not the authors
  3490.    of this profile.
  3491.  
  3492.    Digital Signature Algorithm (DSA)
  3493.  
  3494.       The U.S. Government holds patent 5,231,668 on the Digital
  3495.       Signature Algorithm (DSA), which has been incorporated into
  3496.       Federal Information Processing Standard (FIPS) 186.  The patent
  3497.       was issued on July 27, 1993.
  3498.  
  3499.       The National Institute of Standards and Technology (NIST) has a
  3500.       long tradition of supplying U.S. Government-developed techniques
  3501.       to committees and working groups for inclusion into standards on a
  3502.       royalty-free basis.  NIST has made the DSA patent available
  3503.       royalty-free to users worldwide.
  3504.  
  3505.       Regarding patent infringement, FIPS 186 summarizes our position;
  3506.       the Department of Commerce is not aware of any patents that would
  3507.       be infringed by the DSA.  Questions regarding this matter may be
  3508.       directed to the Deputy Chief Counsel for NIST.
  3509.  
  3510.    RSA Signature and Encryption
  3511.  
  3512.       << Now that PKP has dissolved, a revised patent statement for RSA
  3513.       from RSADSI is needed. >>
  3514.  
  3515.    Diffie-Hellman Key Agreement
  3516.  
  3517.       << Now that PKP has dissolved, a revised patent statement for
  3518.       Diffie-Hellman from Cylink is needed. >>
  3519.  
  3520.    Obsolete PKP Patent Statement
  3521.  
  3522.       << This statement is included here until a replacement from RSADSI
  3523.       and Cylink can be obtained. >>
  3524.  
  3525.       The Massachusetts Institute of Technology and the Board of
  3526.       Trustees of the Leland Stanford Junior University have granted
  3527.       Public Key Partners (PKP) exclusive sub-licensing rights to the
  3528.       following patents issued in the United States, and all of their
  3529.       corresponding foreign patents:
  3530.  
  3531.          Cryptographic Apparatus and Method
  3532.          ("Diffie-Hellman")......................... No. 4,200,770
  3533.  
  3534.  
  3535.  
  3536.  
  3537. Housley, Ford, Polk, & Solo                                    [Page 59]
  3538.  
  3539.  
  3540.  
  3541.  
  3542.  
  3543. INTERNET DRAFT                                             December 1996
  3544.  
  3545.  
  3546.          Public Key Cryptographic Apparatus
  3547.          and Method ("Hellman-Merkle").............. No. 4,218,582
  3548.  
  3549.          Cryptographic Communications System and
  3550.          Method ("RSA")............................. No. 4,405,829
  3551.  
  3552.          Exponential Cryptographic Apparatus
  3553.          and Method ("Hellman-Pohlig").............. No. 4,424,414
  3554.  
  3555.       These patents are stated by PKP to cover all known methods of
  3556.       practicing the art of Public Key encryption, including the
  3557.       variations collectively known as El Gamal.
  3558.  
  3559.       Public Key Partners has provided written assurance to the Internet
  3560.       Society that parties will be able to obtain, under reasonable,
  3561.       nondiscriminatory terms, the right to use the technology covered
  3562.       by these patents.  This assurance is documented in RFC 1170 titled
  3563.       "Public Key Standards and Licenses".  A copy of the written
  3564.       assurance dated April 20, 1990, may be obtained from the Internet
  3565.       Assigned Number Authority (IANA).
  3566.  
  3567.       The Internet Society, Internet Architecture Board, Internet
  3568.       Engineering Steering Group and the Corporation for National
  3569.       Research Initiatives take no position on the validity or scope of
  3570.       the patents and patent applications, nor on the appropriateness of
  3571.       the terms of the assurance. The Internet Society and other groups
  3572.       mentioned above have not made any determination as to any other
  3573.       intellectual property rights which may apply to the practice of
  3574.       this standard.  Any further consideration of these matters is the
  3575.       user's own responsibility.
  3576.  
  3577. Security Considerations
  3578.  
  3579.    This entire memo is about security mechanisms.
  3580. Author Addresses:
  3581.  
  3582.    Russell Housley
  3583.    SPYRUS
  3584.    PO Box 1198
  3585.    Herndon, VA 20172
  3586.    USA
  3587.    housley@spyrus.com
  3588.  
  3589.    Warwick Ford
  3590.    VeriSign, Inc.
  3591.    One Alewife Center
  3592.    Cambridge, MA 02140
  3593.    wford@verisign.com
  3594.  
  3595.  
  3596.  
  3597. Housley, Ford, Polk, & Solo                                    [Page 60]
  3598.  
  3599.  
  3600.  
  3601.  
  3602.  
  3603. INTERNET DRAFT                                             December 1996
  3604.  
  3605.  
  3606.    Tim Polk
  3607.    NIST
  3608.    Building 820, Room 426
  3609.    Gaithersburg, MD 20899
  3610.    wpolk@nist.gov
  3611.  
  3612.    David Solo
  3613.    BBN
  3614.    150 CambridgePark Drive
  3615.    Cambridge, MA 02140
  3616.    USA
  3617.    solo@bbn.com
  3618.  
  3619.  
  3620.  
  3621.  
  3622.  
  3623.  
  3624.  
  3625.  
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.  
  3638.  
  3639.  
  3640.  
  3641.  
  3642.  
  3643.  
  3644.  
  3645.  
  3646.  
  3647.  
  3648.  
  3649.  
  3650.  
  3651.  
  3652.  
  3653.  
  3654.  
  3655.  
  3656.  
  3657. Housley, Ford, Polk, & Solo                                    [Page 61]
  3658.  
  3659.  
  3660.