| < draft-ietf-pkix-roadmap-02.txt | draft-ietf-pkix-roadmap-03.txt > | |||
|---|---|---|---|---|
| PKIX Working Group A. Arsenault | ||||
| INTERNET DRAFT DOD | ||||
| S. Turner | ||||
| IECA | ||||
| Expires in six months from June 23, 1999 | PKIX Working Group A. Arsenault | |||
| INTERNET DRAFT DOD | ||||
| S. Turner | ||||
| IECA | ||||
| Internet X.509 Public Key Infrastructure | Expires in six months from September 8, 1999 | |||
| PKIX Roadmap | ||||
| <draft-ietf-pkix-roadmap-02.txt> | Internet X.509 Public Key Infrastructure | |||
| PKIX Roadmap | ||||
| <draft-ietf-pkix-roadmap-03.txt> | ||||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
| all provisions of Section 10 of RFC2026. | all provisions of Section 10 of RFC2026. | |||
| This document is an Internet-Draft. Internet-Drafts are working | This document is an Internet-Draft. Internet-Drafts are working | |||
| documents of the Internet Engineering Task Force (IETF), its areas, | documents of the Internet Engineering Task Force (IETF), its areas, | |||
| and its working groups. Note that other groups may also distribute | and its working groups. Note that other groups may also distribute | |||
| working documents as Internet-Drafts. | working documents as Internet-Drafts. | |||
| Internet-Drafts are draft documents valid for a maximum of 6 months | Internet-Drafts are draft documents valid for a maximum of 6 months | |||
| and may be updated, replaced, or may become obsolete by other | and may be updated, replaced, or may become obsolete by other | |||
| documents at any time. It is inappropriate to use Internet-Drafts as | documents at any time. It is inappropriate to use Internet-Drafts as | |||
| reference material or to cite them other than as work in progress. To | reference material or to cite them other than as "work in progress." | |||
| view the entire list of current Internet-Drafts, please check the | ||||
| "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow | ||||
| Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern | ||||
| Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific | ||||
| Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast). | ||||
| Copyright (C) The Internet Society (date). All Rights Reserved. | ||||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt | http://www.ietf.org/ietf/1id-abstracts.txt | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of current Internet-Drafts Shadow Directories can be | |||
| http://www.ietf.org/shadow.html. | accessed at http://www.ietf.org/shadow.html | |||
| Abstract | Abstract | |||
| This document provides an overview or 'roadmap' of the work done by | This document provides an overview or 'roadmap' of the work done by | |||
| the IETF PKIX working group. It describes some of the terminology | the IETF PKIX working group. It describes some of the terminology | |||
| used in the working group's documents, and the theory behind an | used in the working group's documents, and the theory behind an | |||
| X.509-based PKI. It identifies each document developed by the PKIX | X.509-based PKI. It identifies each document developed by the PKIX | |||
| working group, and describes the relationships among the various | working group, and describes the relationships among the various | |||
| documents. It also provides advice to would-be PKIX implementors | documents. It also provides advice to would-be PKIX implementors | |||
| about some of the issues discussed at length during PKIX development, | about some of the issues discussed at length during PKIX development, | |||
| in hopes of making it easier to build implementations that will | in hopes of making it easier to build implementations that will | |||
| actually interoperate. | actually interoperate. | |||
| 1 Introduction | 1 Introduction | |||
| 1.1 This Document | 1.1 This Document | |||
| This document is an informational Internet draft that provides a | This document is an informational Internet draft that provides a | |||
| "roadmap" to the documents produced by the PKIX working group. It is | "roadmap" to the documents produced by the PKIX working group. It is | |||
| intended to provide information; there are no requirements or | intended to provide information; there are no requirements or | |||
| specifications in this document. | specifications in this document. | |||
| Section 2 of this document defines key terms used in this document. | Section 2 of this document defines key terms used in this document. | |||
| Section 3 covers "PKIX theory"; it explains what the PKIX working | Section 3 covers "PKIX theory"; it explains what the PKIX working | |||
| group's basic assumptions were. Section 4 provides an overview of | group's basic assumptions were. Section 4 provides an overview of the | |||
| the various PKIX documents. It identifies which documents address | various PKIX documents. It identifies which documents address which | |||
| which areas, and describes the relationships among the various | areas, and describes the relationships among the various documents. | |||
| documents. Section 5 contains "Advice to implementors". Its primary | Section 5 contains "Advice to implementors". Its primary purpose is | |||
| purpose is to capture some of the major issues discussed by the PKIX | to capture some of the major issues discussed by the PKIX working | |||
| working group, as a way of explaining WHY some of the requirements | group, as a way of explaining WHY some of the requirements and | |||
| and specifications say what they say. This should cut down on the | specifications say what they say. This should cut down on the number | |||
| number of misinterpretations of the documents, and help developers | of misinterpretations of the documents, and help developers build | |||
| build interoperable implementations. Section 6 contains a list of | interoperable implementations. Section 6 contains a list of | |||
| references. Section 7 discusses security considerations, and Section | references. Section 7 discusses security considerations, and Section | |||
| 8 provides contact information for the editors. | 8 provides contact information for the editors. | |||
| 1.2 Changes Since the Last Version | ||||
| The major changes in this document since version -00 include: | ||||
| - QC text was updated (section 3.6.1). | ||||
| - Name constraints text was updated (section 5.1.4). | ||||
| - Name encoding text was added (section 5.1.6). | ||||
| - Added Attribute Certificate Profile for Authorizations and DH | ||||
| PoP Algorithms to Profile section (section 4.1). | ||||
| - Added descriptions for BERT and Extending trust in non- | ||||
| repudiation tokens in time to Time Stamp and DCS section (section | ||||
| 4.5). | ||||
| - Replaced references to CMP with RFC 2510, CRMF with RFC 2511, | ||||
| PKIX-4 with RFC 2527, KEA with RFC 2528, LDAP with RFC 2559, FTP | ||||
| with RFC 2585, SCHEMA with RFC 2587. | ||||
| - Updates references to current drafts. | ||||
| - Added sections for D-H PoP, Attribute Certificate Profile for | ||||
| Authorizations, Basic Event Representation Token v1, Extending | ||||
| Trust in Non-repudiation tokens in time. | ||||
| 2 Terminology | 2 Terminology | |||
| There are a number of terms used and misused throughout PKI-related | There are a number of terms used and misused throughout PKI-related | |||
| literature. To limit confusion caused by some of those terms, | literature. To limit confusion caused by some of those terms, | |||
| throughout this document, we will use the following terms in the | throughout this document, we will use the following terms in the | |||
| following ways: | following ways: | |||
| - Certification Authority (CA) - an authority trusted by one or | - Certification Authority (CA) - an authority trusted by one or | |||
| more users to create and assign certificates. Optionally the | more users to create and assign certificates. Optionally the | |||
| certification authority may create the user's keys. (It is | certification authority may create the user's keys. It is | |||
| important to note that the CA is responsible for the certificates | important to note that the CA is responsible for the | |||
| during their whole lifetime, not just for issuing them.) | certificates during their whole lifetime, not just for issuing | |||
| them. | ||||
| - Certificate policy - a named set of rules that indicates the | - Certificate Policy (CP) - a named set of rules that indicates | |||
| applicability of a certificate to a particular community and/or | the applicability of a certificate to a particular community | |||
| class of application with common security requirements. For | and/or class of application with common security requirements. | |||
| example, a particular certificate policy might indicate | For example, a particular certificate policy might indicate | |||
| applicability of a type of certificate to the authentication of | applicability of a type of certificate to the authentication | |||
| electronic data interchange transaction s for the trading of goods | of electronic data interchange transactions for the trading of | |||
| within a given price range. | goods within a given price range. | |||
| - Root CA - a CA that is directly trusted by an end entity; that | - Certification Practice Statement (CPS) - A statement of the | |||
| is, securely acquiring the value of a root CA public key requires | practices which a certification authority employs in issuing | |||
| some out-of-band step(s). This term is not meant to imply that a | certificates. | |||
| root CA is necessarily at the top of any hierarchy, simply that | ||||
| the CA in question is trusted directly. | ||||
| - Top CA - a CA that is at the top of a PKI hierarchy. | - Root CA - a CA that is directly trusted by an end entity; that | |||
| is, securely acquiring the value of a root CA public key | ||||
| requires some out-of-band step(s). This term is not meant to | ||||
| imply that a root CA is necessarily at the top of any | ||||
| hierarchy, simply that the CA in question is trusted directly. | ||||
| Note: this is often also called a "root CA", from since in data | - Top CA - a CA that is at the top of a PKI hierarchy. | |||
| structures terms and in graph theory, the node at the top of a | ||||
| tree is the "root". However, to minimize confusion in this | ||||
| document, we elect to call this node a "Top CA," and reserve | ||||
| "root CA" for the CA directly trusted by the user. Readers new | ||||
| to PKIX should be aware that these terms are not used | ||||
| consistently throughout the PKIX documents, as [RFC2459] uses | ||||
| "root CA" to refer to what this and other documents call a "top | ||||
| CA", and "most-trusted CA" to refer to what this and other | ||||
| documents call a "root CA". | ||||
| - Subordinate CA - A "subordinate CA" is one that is not a root CA | Note: This is often also called a "root CA," from since in data | |||
| for the end entity in question. Often, a subordinate CA will not | structures terms and in graph theory, the node at the top of a | |||
| be a root CA for any entity but this is not mandatory | tree is the "root." However, to minimize confusion in this | |||
| document, we elect to call this node a "Top CA," and reserve | ||||
| "Root CA" for the CA directly trusted by the user. Readers new to | ||||
| PKIX should be aware that these terms are not used consistently | ||||
| throughout the PKIX documents, as [RFC2459] uses "Root CA" to | ||||
| refer to what this and other documents call a "Top CA," and | ||||
| "most-trusted CA" to refer to what this and other documents call | ||||
| a "Root CA." | ||||
| - Registration Authority (RA) - an optional entity given | - Subordinate CA - A "subordinate CA" is one that is not a root CA | |||
| responsibility for performing some of the administrative tasks | for the end entity in question. Often, a subordinate CA will not | |||
| necessary in the registration of subjects, such as: confirming the | be a Root CA for any entity but this is not mandatory. | |||
| subject's identity; validating that the subject is entitled to | ||||
| have the attributes requested in a certificate; and verifying that | ||||
| the subject has possession of the private key associated with the | ||||
| public key requested for a certificate. | ||||
| - End-entity - a subject of a certificate who is not a CA. | - Registration Authority (RA) - an optional entity given | |||
| responsibility for performing some of the administrative tasks | ||||
| necessary in the registration of subjects, such as: confirming | ||||
| the subject's identity; validating that the subject is entitled | ||||
| to have the attributes requested in a certificate; and verifying | ||||
| that the subject has possession of the private key associated | ||||
| with the public key requested for a certificate. | ||||
| - Relying party - a user or agent (e.g., a client or server) who | - End-entity - a subject of a certificate who is not a CA. | |||
| relies on the data in a certificate in making decisions. | ||||
| - Subject - a subject is the entity (CA or end-entity) named in a | - Relying party - a user or agent (e.g., a client or server) who | |||
| certificate. Subjects can be human users, computers (as | relies on the data in a certificate in making decisions. | |||
| represented by DNS names or IP addresses), or even software | ||||
| agents. | - Subject - a subject is the entity (CA or end-entity) named in a | |||
| certificate. Subjects can be human users, computers (as | ||||
| represented by DNS names or IP addresses), or even software | ||||
| agents. | ||||
| 3 PKIX Theory | 3 PKIX Theory | |||
| 3.1 Certificate-using Systems and PKIs | 3.1 Certificate-using Systems and PKIs | |||
| At the heart of recent efforts to improve Internet security are a | At the heart of recent efforts to improve Internet security are a | |||
| group of security protocols such as S/MIME, TLS, and IPSec. All of | group of security protocols such as S/MIME, TLS, and IPSec. All of | |||
| these protocols rely on public-key cryptography to provide services | these protocols rely on public-key cryptography to provide services | |||
| such as confidentiality, data integrity, data origin authentication, | such as confidentiality, data integrity, data origin authentication, | |||
| and non-repudiation. The purpose of a PKI is to provide trusted and | and non-repudiation. The purpose of a PKI is to provide trusted and | |||
| efficient key- and certificate management, thus enabling the use of | efficient key and certificate management, thus enabling the use of | |||
| authentication, non-repudiation, and confidentiality. | authentication, non-repudiation, and confidentiality. | |||
| Users of public key-based systems must be confident that, any time | Users of public key-based systems must be confident that, any time | |||
| they rely on a public key, the associated private key is owned by the | they rely on a public key, the associated private key is owned by the | |||
| subject with which they are communicating. (This applies whether an | subject with which they are communicating. (This applies whether an | |||
| encryption or digital signature mechanism is used.) This confidence | encryption or digital signature mechanism is used.) This confidence | |||
| is obtained through the use of public key certificates, which are | is obtained through the use of public key certificates, which are | |||
| data structures that bind public key values to subjects. The binding | data structures that bind public key values to subjects. The binding | |||
| is achieved by having a trusted CA verify the subject's identity and | is achieved by having a trusted CA verify the subject's identity and | |||
| digitally sign each certificate. | digitally sign each certificate. | |||
| A certificate has a limited valid lifetime which is indicated in its | A certificate has a limited valid lifetime which is indicated in its | |||
| signed contents. Because a certificate's signature and timeliness | signed contents. Because a certificate's signature and timeliness can | |||
| can be independently checked by a certificate-using client, | be independently checked by a certificate-using client, certificates | |||
| certificates can be distributed via untrusted communications and | can be distributed via untrusted communications and server systems, | |||
| server systems, and can be cached in unsecured storage in | and can be cached in unsecured storage in certificate-using systems. | |||
| certificate-using systems. | ||||
| Certificates are used in the process of validating signed data. | Certificates are used in the process of validating signed data. | |||
| Specifics vary according to which algorithm is used, but the general | Specifics vary according to which algorithm is used, but the general | |||
| process works as follows: | process works as follows: | |||
| Note: there is no specific order in which the checks listed below | Note: there is no specific order in which the checks listed below | |||
| must be made; implementers are free to implement them in the most | must be made; implementers are free to implement them in the most | |||
| efficient way for their systems. | efficient way for their systems. | |||
| - the recipient of signed data verifies that the claimed identity | - The recipient of signed data verifies that the claimed | |||
| of the user is in accordance wit the identity contained in the | identity of the user is in accordance with the identity | |||
| certificate; | contained in the certificate; | |||
| - the recipient validates that no certificate in the path has been | - The recipient validates that no certificate in the path is | |||
| revoked (e.g., by retrieving a suitably-current Certificate | revoked (e.g., by retrieving a suitably-current | |||
| Revocation List (CRL) or querying an on-line certificate status | Certificate Revocation List (CRL) or querying an on-line | |||
| responder), and that all certificates were within their validity | certificate status responder), and that all certificates | |||
| periods at the time the data were signed; | are within their validity periods at the time the data was | |||
| signed; | ||||
| - the recipient verifies that the data are not claimed to have any | - The recipient verifies that the data are not claimed to | |||
| attributes for which the certificate indicates that the signer is | have any attributes for which the certificate indicates | |||
| not authorized; | that the signer is not authorized; | |||
| - the recipient verifies that the data have not been altered since | - The recipient verifies that the data have not been altered | |||
| signing, by using the public key in the certificate. | since signing, by using the public key in the certificate. | |||
| If all of these checks pass, the recipient can accept that the data | If all of these checks pass, the recipient can accept that the data | |||
| were signed by the purported signer. The process for keys used for | was signed by the purported signer. The process for keys used for | |||
| encryption is similar. | encryption is similar. | |||
| Note: it is of course possible that the data were signed by | Note: It is of course possible that the data was signed by someone | |||
| someone very different from the signer, if for example the | very different from the signer, if for example the purported | |||
| purported signer's private key was compromised. Security depends | signer's private key was compromised. Security depends on all | |||
| on all parts of the certificate-using SYSTEM, including but not | parts of the certificate-using system, including but not limited | |||
| limited to: physical security of the place the computer resides; | to: physical security of the place the computer resides; personnel | |||
| personnel security (i.e., the trustworthiness of the people who | security (i.e., the trustworthiness of the people who actually | |||
| actually develop, install, run, and maintain the system); the | develop, install, run, and maintain the system); the security | |||
| security provided by the operating system on which the private key | provided by the operating system on which the private key is used; | |||
| is used; and the security provided the CA. A failure in any one | and the security provided the CA. A failure in any one of these | |||
| of these areas can cause the entire system security to fail. PKIX | areas can cause the entire system security to fail. PKIX is | |||
| is limited in scope, however, and only directly addresses issues | limited in scope, however, and only directly addresses issues | |||
| related to the operation of the PKI subsystem. For guidance in | related to the operation of the PKI subsystem. For guidance in | |||
| many of the other areas, see [RFC 2527]. | many of the other areas, see [POLPROC]. | |||
| A collection of certificates, with their issuing CA's, subjects, | A collection of certificates, with their issuing CA's, subjects, | |||
| relying parties, RA's, and repositories, is referred to as a Public | relying parties, RA's, and repositories, is referred to as a Public | |||
| Key Infrastructure, or PKI. | Key Infrastructure, or PKI. | |||
| 3.2 PKIX History | 3.2 PKIX History | |||
| [This still needs more work.] | [This still needs more work.] | |||
| In the beginning there was ITU-T Recommendation X.509. It defines a | In the beginning there was ITU-T Recommendation X.509. It defines a | |||
| widely accepted basis for a public-key infrastructure, including data | widely accepted basis for a public-key infrastructure, including data | |||
| formats and procedures related to distribution of public keys via | formats and procedures related to distribution of public keys via | |||
| certificates digitally signed by CAs. X.509 does not however include | certificates digitally signed by CAs. X.509 does not however include | |||
| a profile to specify the support requirements for many of the | a profile to specify the support requirements for many of the | |||
| certificate data structure's sub-fields, for any of the extensions, | certificate data structure's sub-fields, for any of the extensions, | |||
| nor for certain data values. PKIX was formed in October 1995 to | nor for certain data values. PKIX was formed in October 1995 to | |||
| deliver a profile for the Internet PKI of X.509 version 3 | deliver a profile for the Internet PKI of X.509 version 3 | |||
| certificates and version 2 CRLs. The Internet PKI profile [RFC 2459] | certificates and version 2 CRLs. The Internet PKI profile [FORMAT] | |||
| went through eleven draft versions before becoming an RFC. Other | went through eleven draft versions before becoming an RFC. Other | |||
| profiles have been developed in PKIX for particular algorithms to | profiles have been developed in PKIX for particular algorithms to | |||
| make use of [RFC 2459]. There has been no sense of conflict between | make use of [FORMAT]. There has been no sense of conflict between the | |||
| the groups that developed these profiles as they are seen as | groups that developed these profiles as they are seen as | |||
| complimentary. | complimentary. | |||
| The development of the management protocols has not been so | The development of the management protocols has not been so | |||
| straightforward. [RFC 2510] was developed to define a message | straightforward. [CMP] was developed to define a message protocol | |||
| protocol that is used between entities in a PKI. The demand for an | that is used between entities in a PKI. The demand for an enrollment | |||
| enrollment protocol and the desire to use PKCS-10 message format as | protocol and the desire to use PKCS-10 message format as the | |||
| the certificate request syntax lead to the development of two | certificate request syntax lead to the development of two different | |||
| different documents in two different groups. The Certificate Request | documents in two different groups. The Certificate Request Syntax | |||
| Syntax [CRS] draft was developed in the SMIME WG which used PKCS10 | [CRS] draft was developed in the SMIME WG which used PKCS10 [PKCS10] | |||
| [PKCS10] as the certification request message format. Certificate | as the certification request message format. Certificate Request | |||
| Request Message Format [RFC 2511] draft was also developed but in the | Message Format [CRMF] draft was also developed but in the PKIX WG. It | |||
| PKIX WG. It was to define a simple enrollment protocol that would | was to define a simple enrollment protocol that would subsume both | |||
| subsume both the [RFC 2510] and [CRS] enrollment protocols, but it | the [CMP] and [CRS] enrollment protocols, but it did not use PKCS10 | |||
| did not use PKCS10 as the certificate request message format. Then, | as the certificate request message format. Then, [CMMF] was developed | |||
| [CMMF] was developed to define an extended set of management messages | to define an extended set of management messages that flow between | |||
| that flow between the components of the Internet PKI. CMMF over CMS | the components of the Internet PKI. CMMF over CMS [CMC] was developed | |||
| [CMC] was developed to allow the use of an existing protocol (S/MIME) | to allow the use of an existing protocol (S/MIME) as a PKI management | |||
| as a PKI management protocol, without requiring the development of an | protocol, without requiring the development of an entirely new | |||
| entirely new protocol such as CMP [RFC 2510]. It also included | protocol such as CMP [CMP]. It also included [PKCS10] as the | |||
| [PKCS10] as the certificate request syntax, which caused work on | certificate request syntax, which caused work on [CRS] to stop. | |||
| [CRS] to stop. Information from [CMMF] has been moved into [RFC | Information from [CMMF] has been moved into [CMP] and [CMC] so [CMMF] | |||
| 2510] and [CMC] so [CMMF] is being discontinued. | is being discontinued. | |||
| Development of the operational protocols has been slightly more | Development of the operational protocols has been slightly more | |||
| straightforward. Two documents for LDAPv2 have been developed one | straightforward. Two documents for LDAPv2 have been developed one for | |||
| for defining LDAPv2 as an access protocol to repositories [RFC 2559] | defining LDAPv2 as an access protocol to repositories [PKI-LDAPv2]; | |||
| and one for storing PKI information in an LDAP directory [RFC 2587]. | and one for storing PKI information in an LDAP directory [SCHEMA]. | |||
| Using FTP and HTTP to retrieve certificates and CRL from PKI | Using FTP and HTTP to retrieve certificates and CRL from PKI | |||
| repositories was documented without a fight in [RFC 2585]. Likewise, | repositories was documented without a fight in [FTPHTTP]. Likewise, | |||
| methods, headers, and content-types ancillary to HTTP/1.1 to publish | methods, headers, and content-types ancillary to HTTP/1.1 to publish | |||
| and retrieve X.509 certificates and CRLs was documented in [WEB] | and retrieve X.509 certificates and CRLs was documented in [WEB] | |||
| without much argument. | without much argument. | |||
| [Need to add text about OpenCDP vs DistributionPoints, Why DCP was | [Need to add text about OpenCDP vs DistributionPoints, Why DCP was | |||
| started, information on TSP, and OCSP, and caching OCSP.] | started, information on TSP, and OCSP, and caching OCSP.] | |||
| 3.3 Overview of the PKIX Approach | 3.3 Overview of the PKIX Approach | |||
| PKIX is an effort to develop specifications for a Public Key | PKIX is an effort to develop specifications for a Public Key | |||
| Infrastructure for the Internet using X.509 certificates. The PKIX | Infrastructure for the Internet using X.509 certificates. The PKIX | |||
| working group was initially chartered in 1995. A Public Key | working group was initially chartered in 1995. A Public Key | |||
| Infrastructure, or PKI, is defined as: | Infrastructure, or PKI, is defined as: | |||
| The set of hardware, software, people, policies and procedures needed | The set of hardware, software, people, policies and procedures needed | |||
| to create, manage, store, distribute, and revoke certificates based | to create, manage, store, distribute, and revoke certificates based | |||
| on public-key cryptography. | on public-key cryptography. | |||
| A PKI consists of five types of components [MISPC]: | A PKI consists of five types of components [MISPC]: | |||
| - Certification Authorities (CAs) that issue and revoke | - Certification Authorities (CAs) that issue and revoke | |||
| certificates; | certificates; | |||
| - Organizational Registration Authorities (ORAs) that vouch for | - Organizational Registration Authorities (ORAs) that vouch for | |||
| the binding between public keys and certificate holder identities | the binding between public keys and certificate holder | |||
| and other attributes; | identities and other attributes; | |||
| - Certificate holders that are issued certificates and can sign | - Certificate holders that are issued certificates and can sign | |||
| digital documents; | digital documents and encrypt documents; | |||
| - Clients that validate digital signatures and their certification | - Clients that validate digital signatures and their | |||
| paths from a known public key of a trusted CA; | certification paths from a known public key of a trusted CA; | |||
| - Repositories that store and make available certificates and | - Repositories that store and make available certificates and | |||
| Certificate Revocation Lists (CRLs). | Certificate Revocation Lists (CRLs). | |||
| Figure 1 is a simplified view of the architectural model assumed by | Figure 1 is a simplified view of the architectural model assumed by | |||
| the PKIX Working Group. | the PKIX Working Group. | |||
| +---+ | +---+ | |||
| | C | +------------+ | | C | +------------+ | |||
| | e | <-------------------->| End entity | | | e | <-------------------->| End entity | | |||
| | r | Operational +------------+ | | r | Operational +------------+ | |||
| | t | transactions ^ | | t | transactions ^ | |||
| | | and management | Management | | | and management | Management | |||
| skipping to change at page 9, line 19 ¶ | skipping to change at page 9, line 19 ¶ | |||
| recommendations, defines a standard certificate format [X.509]. The | recommendations, defines a standard certificate format [X.509]. The | |||
| certificate format in the 1988 standard is called the version 1 (v1) | certificate format in the 1988 standard is called the version 1 (v1) | |||
| format. | format. | |||
| When X.500 was revised in 1993, two more fields were added, resulting | When X.500 was revised in 1993, two more fields were added, resulting | |||
| in the version 2 (v2) format. These two fields may be used to support | in the version 2 (v2) format. These two fields may be used to support | |||
| directory access control. | directory access control. | |||
| The Internet Privacy Enhanced Mail (PEM) RFCs, published in 1993, | The Internet Privacy Enhanced Mail (PEM) RFCs, published in 1993, | |||
| include specifications for a public key infrastructure based on | include specifications for a public key infrastructure based on | |||
| X.509v1 certificates [RFC 1422]. The experience gained in attempts | X.509v1 certificates [PEM]. The experience gained in attempts to | |||
| to deploy RFC 1422 made it clear that the v1 and v2 certificate | deploy [PEM] made it clear that the v1 and v2 certificate formats are | |||
| formats are deficient in several respects. Most importantly, more | deficient in several respects. Most importantly, more fields were | |||
| fields were needed to carry information which PEM design and | needed to carry information which PEM design and implementation | |||
| implementation experience has proven necessary. In response to these | experience has proven necessary. In response to these new | |||
| new requirements, ISO/IEC/ITU and ANSI X9 developed the X.509 version | requirements, ISO/IEC/ITU and ANSI X9 developed the X.509 version 3 | |||
| 3 (v3) certificate format. The v3 format extends the v2 format by | (v3) certificate format. The v3 format extends the v2 format by | |||
| adding provision for additional extension fields. Particular | adding provision for additional extension fields. Particular | |||
| extension field types may be specified in standards or may be defined | extension field types may be specified in standards or may be defined | |||
| and registered by any organization or community. In June 1996, | and registered by any organization or community. In June 1996, | |||
| standardization of the basic v3 format was completed [X.509]. | standardization of the basic v3 format was completed [X.509]. | |||
| ISO/IEC/ITU and ANSI X9 have also developed standard extensions for | ISO/IEC/ITU and ANSI X9 have also developed standard extensions for | |||
| use in the v3 extensions field [X.509][X9.55]. These extensions can | use in the v3 extensions field [X.509][X9.55]. These extensions can | |||
| convey such data as additional subject identification information, | convey such data as additional subject identification information, | |||
| key attribute information, policy information, and certification path | key attribute information, policy information, and certification path | |||
| constraints. However, the ISO/IEC/ITU and ANSI X9 standard | constraints. However, the ISO/IEC/ITU and ANSI X9 standard extensions | |||
| extensions are very broad in their applicability. In order to | are very broad in their applicability. In order to develop | |||
| develop interoperable implementations of X.509 v3 systems for | interoperable implementations of X.509 v3 systems for Internet use, | |||
| Internet use, it is necessary to specify a profile for use of the | it is necessary to specify a profile for use of the X.509 v3 | |||
| X.509 v3 extensions tailored for the Internet. It is one goal of | extensions tailored for the Internet. It is one goal of PKIX to | |||
| PKIX to specify a profile for Internet WWW, electronic mail, and | specify a profile for Internet, electronic mail, and IPsec | |||
| IPsec applications. Environments with additional requirements may | applications. Environments with additional requirements may build on | |||
| build on this profile or may replace it. | this profile or may replace it. | |||
| 3.5 Functions of a PKI | 3.5 Functions of a PKI | |||
| This section describes the major functions of a PKI. In some cases, | This section describes the major functions of a PKI. In some cases, | |||
| PKIs may provide extra functions. | PKIs may provide extra functions. | |||
| 3.5.1 Registration | 3.5.1 Registration | |||
| This is the process whereby a subject first makes itself known to a | This is the process whereby a subject first makes itself known to a | |||
| CA (directly, or through an RA), prior to that CA issuing a | CA (directly, or through an RA), prior to that CA issuing a | |||
| certificate or certificates for that subject. Registration involves | certificate or certificates for that subject. Registration involves | |||
| the subject providing its name (e.g., common name, fully-qualified | the subject providing its name (e.g., common name, fully-qualified | |||
| domain name, IP address), and other attributes to be put in the | domain name, IP address), and other attributes to be put in the | |||
| certificate, followed by the CA (possibly with help from the RA) | certificate, followed by the CA (possibly with help from the RA) | |||
| verifying in accordance with its CPS that the name and other | verifying in accordance with its Certfication Practice Statement | |||
| attributes are correct. | (CPS) that the name and other attributes are correct. | |||
| 3.5.2 Initialization | 3.5.2 Initialization | |||
| Initialization is when the subject - e.g., the user or client system | Initialization is when the subject (e.g., the user or client system) | |||
| - gets the values needed to begin communicating with the PKI. For | gets the values needed to begin communicating with the PKI. For | |||
| example, initialization can involve providing the client system with | example, initialization can involve providing the client system with | |||
| the public key and/or certificate of a CA, or generating the client | the public key and/or certificate of a CA, or generating the client | |||
| system's own public/private key pair. | system's own public/private key pair. | |||
| 3.5.3 Certification | 3.5.3 Certification | |||
| This is the process in which a CA issues a certificate for a | This is the process in which a CA issues a certificate for a | |||
| subject's public key, and returns that certificate to the subject | subject's public key, and returns that certificate to the subject | |||
| and/or posts that certificate in a repository. | and/or posts that certificate in a repository. | |||
| skipping to change at page 10, line 39 ¶ | skipping to change at page 10, line 39 ¶ | |||
| the key is lost and access to previously-encrypted information is | the key is lost and access to previously-encrypted information is | |||
| needed. Such implementations can include those where the private key | needed. Such implementations can include those where the private key | |||
| exchange key is stored on a hardware token which can be lost or | exchange key is stored on a hardware token which can be lost or | |||
| broken, or when a private key file is protected by a password which | broken, or when a private key file is protected by a password which | |||
| can be forgotten. Often, a company is concerned about being able to | can be forgotten. Often, a company is concerned about being able to | |||
| read mail encrypted by or for a particular employee when that | read mail encrypted by or for a particular employee when that | |||
| employee is no longer available because she is ill or no longer works | employee is no longer available because she is ill or no longer works | |||
| for the company. | for the company. | |||
| In these cases, the user's private key can be backed up by a CA or by | In these cases, the user's private key can be backed up by a CA or by | |||
| a separate key backup system. If a user or her employer needs to | a separate key backup system. If a user or her employer needs to | |||
| recover these backed up key materials, the PKI must provide a system | recover these backed up key materials, the PKI must provide a system | |||
| that permits the recovery WITHOUT providing an unacceptable risk of | that permits the recovery without providing an unacceptable risk of | |||
| compromise of the private key. | compromise of the private key. | |||
| 3.5.5 Key Generation | 3.5.5 Key Generation | |||
| Depending on the CA's policy, the private/public key pair can either | Depending on the CA's policy, the private/public key pair can either | |||
| be generated by the user in his local environment, or generated by | be generated by the user in his local environment, or generated by | |||
| the CA. In the latter case, the key material may be distributed to | the CA. In the latter case, the key material may be distributed to | |||
| the user in an encrypted file or on a physical token - e.g., a smart | the user in an encrypted file or on a physical token - e.g., a smart | |||
| card or PCMCIA card. | card or PCMCIA card. | |||
| 3.5.6 Key Update | 3.5.6 Key Update | |||
| All key pairs need to be updated regularly, i.e., replaced with a new | All key pairs need to be updated regularly (i.e., replaced with a new | |||
| key pair, and new certificates issued. This will happen in two | key pair) and new certificates issued. This will happen in two cases: | |||
| cases: normally, when a key has passed its maximum usable lifetime; | normally, when a key has passed its maximum usable lifetime; and | |||
| and exceptionally, when a key has been compromised and must be | exceptionally, when a key has been compromised and must be replaced. | |||
| replaced. | ||||
| 3.5.6.1 Key Expiry | ||||
| In the normal case, a PKI needs to provide a facility to gracefully | In the normal case, a PKI needs to provide a facility to gracefully | |||
| transition from a certificate with an existing key to a new | transition from a certificate with an existing key to a new | |||
| certificate with a new key. This is particularly true when the key | certificate with a new key. This is particularly true when the key to | |||
| to be updated is that of a CA. Users will know in advance that the | be updated is that of a CA. Users will know in advance that the key | |||
| key will expire on a certain date; the PKI, working together with | will expire on a certain date; the PKI, working together with | |||
| certificate-using applications, should allow for appropriate keys to | certificate-using applications, should allow for appropriate keys to | |||
| work before and after the transition. There are a number of ways to | work before and after the transition. There are a number of ways to | |||
| do this; see [insert appropriate reference here] for an example of | do this; see [insert appropriate reference here] for an example of | |||
| one. In the case of a key compromise, the transition will not be | one. | |||
| 3.5.6.2 Key Compromise | ||||
| In the case of a key compromise, the transition will not be | ||||
| "graceful" in that there will be an unplanned switch of certificates | "graceful" in that there will be an unplanned switch of certificates | |||
| and keys; users will not have known in advance what was about to | and keys; users will not have known in advance what was about to | |||
| happen. Still, the PKI must support the ability to declare that the | happen. Still, the PKI must support the ability to declare that the | |||
| previous certificate is now invalid and shall not be used, and to | previous certificate is now invalid and shall not be used, and to | |||
| announce the validity and availability of the new certificate. | announce the validity and availability of the new certificate. | |||
| Note: compromise of a private key associated with a rootCA is | Note: compromise of a private key associated with a Root CA is | |||
| catastrophic for users relying on that rootCA. If a rootCA's | catastrophic for users relying on that Root CA. If a Root CA's | |||
| private key is compromised, that CA must be taken down and brought | private key is compromised, that CA's certificate must be revoked | |||
| up again with a new key. Until such time as the rootCA is brought | and all certificates subordinate to it must also be revoked. Until | |||
| back up, though, users relying on that rootCA are cut off from the | such time as the Root CA has been issued a new certificate and the | |||
| rest of the system, as there is no way to develop a valid | Root CA issues certificates to users relying upon it, users | |||
| certification path back to a trusted node. | relying on that Root CA are cut off from the rest of the system, | |||
| as there is no way to develop a valid certification path back to a | ||||
| trusted node. | ||||
| Further, users will likely have to be notified by out-of-band | Further, users will likely have to be notified by out-of-band | |||
| mechanisms about the change in CA keys. If the old key is | mechanisms about the change in CA keys. If the old key is | |||
| compromised, any "update" message telling subordinates to switch to a | compromised, any "update" message telling subordinates to switch to a | |||
| new key could have come from an attacker in possession of the old | new key could have come from an attacker in possession of the old | |||
| key, and could point to a new public key for which the attacker | key, and could point to a new public key for which the attacker | |||
| already has the private key. It is possible to have anticipated this | already has the private key. It is possible to have anticipated this | |||
| event, and "pre-placed" replacement rootCA keys with all relying | event, and "pre-placed" replacement Root CA keys with all relying | |||
| parties, but some secure, out-of-band mechanism will have to be used | parties, but some secure, out-of-band mechanism will have to be used | |||
| to tell users to make the switch, and this will only help if the | to tell users to make the switch, and this will only help if the | |||
| replacement key has not been compromised. | replacement key has not been compromised. | |||
| Additionally, once the rootCA is brought back up with a new key, it | Additionally, once the Root CA is brought back up with a new key, it | |||
| will likely be necessary to re-issue certificates, signed with the | will likely be necessary to re-issue certificates, signed with the | |||
| new key, to all subordinate users, since their current certificate | new key, to all subordinate users, since their current certificate | |||
| would be signed with a now-revoked key. | would be signed with a now-revoked key. | |||
| 3.5.7 Cross-certification | 3.5.7 Cross-certification | |||
| A cross-certificate is a certificate issued by one CA to another CA | A cross-certificate is a certificate issued by one CA to another CA | |||
| which contains a public CA key associated with the private CA | which contains a public CA key associated with the private CA | |||
| signature key used for issuing certificates. Typically, a cross- | signature key used for issuing certificates. Typically, a cross- | |||
| certificate is used to allow client systems/end entities in one | certificate is used to allow client systems/end entities in one | |||
| administrative domain to communicate security with client systems/end | administrative domain to communicate security with client systems/end | |||
| users in another administrative domain. Use of a cross-certificate | users in another administrative domain. Use of a cross-certificate | |||
| issued from CA_1 to CA_2 allows user Alice, who trusts CA_1, to | issued from CA_1 to CA_2 allows user Alice, who trusts CA_1, to | |||
| accept a certificate used by Bob, which was issued by CA_2. | accept a certificate used by Bob, which was issued by CA_2. Cross- | |||
| certificates can also be issued from one CA to another CA in the same | ||||
| Note: cross-certificates can also be issued from one CA to another | administrative domain, if required. | |||
| CA in the same administrative domain, if required. | ||||
| Cross-certificates can be issued in only one direction, or in both | Cross-certificates can be issued in only one direction, or in both | |||
| directions, between two CA's. That is, just because CA_1 issues a | directions, between two CA's. That is, just because CA_1 issues a | |||
| cross-certificate for CA_2 does not require CA_2 to issue a cross- | cross-certificate for CA_2, CA_2 does not have to issue a cross- | |||
| certificate for CA_1. | certificate for CA_1. | |||
| 3.5.8 Revocation | 3.5.8 Revocation | |||
| When a certificate is issued, it is expected to be in use for its | When a certificate is issued, it is expected to be in use for its | |||
| entire validity period. However, various circumstances may cause a | entire validity period. However, various circumstances may cause a | |||
| certificate to become invalid prior to the expiration of the validity | certificate to become invalid prior to the expiration of the validity | |||
| period. Such circumstances include change of name, change of | period. Such circumstances include change of name, change of | |||
| association between subject and CA (e.g., an employee terminates | association between subject and CA (e.g., an employee terminates | |||
| employment with an organization), and compromise or suspected | employment with an organization), and compromise or suspected | |||
| compromise of the corresponding private key. Under such | compromise of the corresponding private key. Under such | |||
| circumstances, the CA needs to revoke the certificate. | circumstances, the CA needs to revoke the certificate. | |||
| X.509 defines one method of certificate revocation. This method | X.509 defines one method of certificate revocation. This method | |||
| involves each CA periodically issuing a signed data structure called | involves each CA periodically issuing a signed data structure called | |||
| a certificate revocation list (CRL). A CRL is a time stamped list | a certificate revocation list (CRL). A CRL is a time stamped list | |||
| identifying revoked certificates which is signed by a CA and made | identifying revoked certificates which is signed by a CA and made | |||
| freely available in a public repository. Each revoked certificate is | freely available in a public repository. Each revoked certificate is | |||
| identified in a CRL by its certificate serial number. When a | identified in a CRL by its certificate serial number. When a | |||
| certificate-using system uses a certificate (e.g., for verifying a | certificate-using system uses a certificate, that system not only | |||
| remote user's digital signature), that system not only checks the | checks the certificate signature and validity but also acquires a | |||
| certificate signature and validity but also acquires a suitably- | suitably-recent CRL and checks that the certificate serial number is | |||
| recent CRL and checks that the certificate serial number is not on | not on that CRL. The meaning of "suitably-recent" may vary with local | |||
| that CRL. The meaning of "suitably-recent" may vary with local | policy, but it usually means the most recently-issued CRL. A CA | |||
| policy, but it usually means the most recently-issued CRL. A CA | ||||
| issues a new CRL on a regular periodic basis (e.g., hourly, daily, or | issues a new CRL on a regular periodic basis (e.g., hourly, daily, or | |||
| weekly). CA's may also issue CRLs aperiodically; e.g., if an | weekly). CA's may also issue CRLs aperiodically; e.g., if an | |||
| important key is deemed compromised, the CA may issue a new CRL to | important key is deemed compromised, the CA may issue a new CRL to | |||
| expedite notification of that fact, even if the next CRL does not | expedite notification of that fact, even if the next CRL does not | |||
| have to be issued for some time. (A problem of aperiodic CRL issuance | have to be issued for some time. (A problem of aperiodic CRL issuance | |||
| is that end-entities may not know that a new CRL has been issued, and | is that end-entities may not know that a new CRL has been issued, and | |||
| thus may not retrieve it from a repository.) | thus may not retrieve it from a repository.) | |||
| An entry is added to the CRL as part of the next update following | An entry is added to the CRL as part of the next update following | |||
| notification of revocation. An entry may be removed from the CRL | notification of revocation. An entry may be removed from the CRL | |||
| after appearing on one regularly scheduled CRL issued beyond the | after appearing on one regularly scheduled CRL issued beyond the | |||
| revoked certificate's validity period. | revoked certificate's validity period. [Say why here] | |||
| An advantage of the CRL revocation method is that CRLs may be | An advantage of the CRL revocation method is that CRLs may be | |||
| distributed by exactly the same means as certificates themselves, | distributed by exactly the same means as certificates themselves, | |||
| namely, via untrusted communications and server systems. | namely, via untrusted communications and server systems. | |||
| One limitation of the CRL revocation method, using untrusted | One limitation of the CRL revocation method, using untrusted | |||
| communications and servers, is that the time granularity of | communications and servers, is that the time granularity of | |||
| revocation is limited to the CRL issue period. For example, if a | revocation is limited to the CRL issue period. For example, if a | |||
| revocation is reported now, that revocation will not be reliably | revocation is reported now, that revocation will not be reliably | |||
| notified to certificate-using systems until the next CRL is issued -- | notified to certificate-using systems until the next CRL is issued - | |||
| this may be up to one hour, one day, or one week depending on the | this may be up to one hour, one day, or one week depending on the | |||
| frequency that the CA issues CRLs. | frequency that the CA issues CRLs. | |||
| As with the X.509 v3 certificate format, in order to facilitate | As with the X.509 v3 certificate format, in order to facilitate | |||
| interoperable implementations from multiple vendors, the X.509 v2 CRL | interoperable implementations from multiple vendors, the X.509 v2 CRL | |||
| format needed to be profiled for Internet use. This was done as part | format needed to be profiled for Internet use. This was done as part | |||
| of [RFC 2459]. However, PKIX does not require CAs to issue CRLs. On- | of [FORMAT]. However, PKIX does not require CAs to issue CRLs. On- | |||
| line methods of revocation notification may be applicable in some | line methods of revocation notification may be applicable in some | |||
| environments as an alternative to the X.509 CRL. PKIX defines a | environments as an alternative to the X.509 CRL. PKIX defines a | |||
| protocol known as OCSP [OCSP] to facilitate on-line checking of the | protocol known as OCSP [OCSP] to facilitate on-line checking of the | |||
| status of certificates. | status of certificates. | |||
| On-line revocation checking may significantly reduce the latency | On-line revocation checking may significantly reduce the latency | |||
| between a revocation report and the distribution of the information | between a revocation report and the distribution of the information | |||
| to relying parties. Once the CA accepts the report as authentic and | to relying parties. Once the CA accepts the report as authentic and | |||
| valid, any query to the on-line service will correctly reflect the | valid, any query to the on-line service will correctly reflect the | |||
| certificate validation impacts of the revocation. However, these | certificate validation impacts of the revocation. However, these | |||
| methods impose new security requirements; the certificate validator | methods impose new security requirements; the certificate validator | |||
| must trust the on-line validation service while the repository does | must trust the on-line validation service while the repository does | |||
| not need to be trusted. | not need to be trusted. | |||
| 3.5.9 Certificate and Revocation Notice Distribution/Publication | 3.5.9 Certificate and Revocation Notice Distribution/Publication | |||
| As alluded to in sections x and y above, the PKI is responsible for | As alluded to in sections 3.1 and 3.5.8 above, the PKI is responsible | |||
| the distribution of certificates and certificate revocation notices | for the distribution of certificates and certificate revocation | |||
| (whether in CRL form or in some other form) in the system. | notices (whether in CRL form or in some other form) in the system. | |||
| "Distribution" of certificates includes transmission of the | "Distribution" of certificates includes transmission of the | |||
| certificate to its owner, and may also include publication of the | certificate to its owner, and may also include publication of the | |||
| certificate in a repository. "Distribution" of revocation notices | certificate in a repository. "Distribution" of revocation notices may | |||
| may involve posting CRLs in a repository, transmitting them to end- | involve posting CRLs in a repository, transmitting them to end- | |||
| entities, and/or forwarding them to on-line responders. | entities, and/or forwarding them to on-line responders. | |||
| 3.6 Parts of PKIX | 3.6 Parts of PKIX | |||
| This section identifies the five different areas in which the PKIX | This section identifies the five different areas in which the PKIX | |||
| working group has developed documents. The first area involves | working group has developed documents. The first area involves | |||
| profiles of the X.509 v3 certificate standards and the X.509v2 CRL | profiles of the X.509 v3 certificate standards and the X.509v2 CRL | |||
| standards for the Internet. The second area involves operational | standards for the Internet. The second area involves operational | |||
| protocols, in which relying parties can obtain information such as | protocols, in which relying parties can obtain information such as | |||
| certificates or certificate status. The third area covers management | certificates or certificate status. The third area covers management | |||
| protocols, in which different entities in the system exchange | protocols, in which different entities in the system exchange | |||
| information needed for proper management of the PKI. The fourth area | information needed for proper management of the PKI. The fourth area | |||
| provides information about certificate policies and certificate | provides information about certificate policies and certificate | |||
| practice statements, covering the areas of PKI security not directly | practice statements, covering the areas of PKI security not directly | |||
| addressed in the rest of PKIX. The fifth area deals with providing | addressed in the rest of PKIX. The fifth area deals with providing | |||
| time stamping and data certification services, which can be used to | time stamping and data certification services, which can be used to | |||
| build such services as non-repudiation. | build such services as non-repudiation. | |||
| 3.6.1 Profile | 3.6.1 Profile | |||
| An X.509v3 certificate is a very complex data structure. It consists | An X.509v3 certificate is a very complex data structure. It consists | |||
| of basic information fields, plus a number of optional certificate | of basic information fields, plus a number of optional certificate | |||
| extensions. Many of the fields and numerous extensions can take on a | extensions. Many of the fields and numerous extensions can take on a | |||
| wide range of options. This provides an enormous degree of | wide range of options. This provides an enormous degree of | |||
| flexibility, which allows the X.509v3 certificate format to be used | flexibility, which allows the X.509v3 certificate format to be used | |||
| with a wide range of applications in a wide range of environments. | with a wide range of applications in a wide range of environments. | |||
| Unfortunately, this same flexibility makes it extremely difficult to | Unfortunately, this same flexibility makes it extremely difficult to | |||
| produce independent implementations that will actually interoperate | produce independent implementations that will actually interoperate | |||
| with one another. In order to build an Internet PKI based on X.509v3 | with one another. In order to build an Internet PKI based on X.509v3 | |||
| certificates, the PKIX working group had to develop a profile of the | certificates, the PKIX working group had to develop a profile of the | |||
| X.509v3 specification. | X.509v3 specification. | |||
| A profile of the X.509v3 specification is a description of the | A profile of the X.509v3 specification is a description of the | |||
| contents of the certificate and which certificate extensions must be | contents of the certificate and which certificate extensions must be | |||
| supported, which extensions may be supported, and which extensions | supported, which extensions may be supported, and which extensions | |||
| may not be supported. [RFC 2459] provides such a profile of X.509v3 | may not be supported. [FORMAT] provides such a profile of X.509v3 for | |||
| for the Internet PKI. In addition, [RFC 2459] suggests ranges of | the Internet PKI. In addition, [FORMAT] suggests ranges of values for | |||
| values for many of the extensions. | many of the extensions. | |||
| [RFC 2459] also provides a profile for Version 2 CRLs for use in the | [FORMAT] also provides a profile for Version 2 CRLs for use in the | |||
| Internet PKI. CRLs, like certificates, have a number of optional | Internet PKI. CRLs, like certificates, have a number of optional | |||
| extensions. In order to promote interoperability, it is necessary to | extensions. In order to promote interoperability, it is necessary to | |||
| constrain the choices an implementor supports. | constrain the choices an implementor supports. | |||
| In addition to profiling the certificate and CRL formats, it is | In addition to profiling the certificate and CRL formats, it is | |||
| necessary to specify particular Object Identifiers (OIDs) for certain | necessary to define particular Object Identifiers (OIDs) for certain | |||
| encryption algorithms, because there are a variety of OIDs registered | encryption algorithms, because there are a variety of OIDs registered | |||
| for some algorithm suites. Thus, PKIX has produced two documents | for some algorithm suites. Many of the OIDs are defined in [FORMAT] | |||
| ([ECDSA] and [RFC 2528]) which provide guidance on the proper | to promote interoperability. Also, PKIX has produced two documents | |||
| ([ECDSA] and [KEA]) which provide guidance on the proper | ||||
| implementation of specific algorithms. | implementation of specific algorithms. | |||
| Certain countries are in a process of updating their legal frameworks | Certain countries are in a process of updating their legal frameworks | |||
| in order to regulate and incorporate recognition of signatures in | in order to regulate and incorporate recognition of signatures in | |||
| electronic form. Many of these frameworks introduce certain basic | electronic form. Many of these frameworks introduce certain basic | |||
| requirements on certificates, often termed Qualified Certificates, | requirements on certificates, often termed Qualified Certificates, | |||
| supporting these types of "legal" signatures. Partly as a result of | supporting these types of "legal" signatures. Partly as a result of | |||
| this there is a need for a specific certificate profile providing | this there is a need for a specific certificate profile providing | |||
| standardized support for certain related issues such as a common | standardized support for certain related issues such as a common | |||
| structure for expressing unambiguous identities of certified subjects | structure for expressing unambiguous identities of certified subjects | |||
| (unmistakable identity). In December 1998, PKIX adopted as a work | (unmistakable identity). In December 1998, PKIX adopted as a work | |||
| item the development of a refinement of [RFC2459] that further | item the development of a refinement of [RFC2459] that further | |||
| profiles PKIX certificates into qualified certificates. This work is | profiles PKIX certificates into qualified certificates. This work is | |||
| reflected in [QC]. | reflected in [QC]. | |||
| 3.6.2 Operational Protocols | 3.6.2 Operational Protocols | |||
| Operational protocols are required to deliver certificates and CRLs | Operational protocols are required to deliver certificates and CRLs | |||
| (or other certificate status information) to certificate using | (or other certificate status information) to certificate using | |||
| systems. Provision is needed for a variety of different means of | systems. Provision is needed for a variety of different means of | |||
| certificate and CRL delivery, including distribution procedures based | certificate and CRL delivery, including distribution procedures based | |||
| on LDAP, HTTP, FTP, and X.500. Operational protocols supporting | on LDAP, HTTP, FTP, and X.500. Operational protocols supporting these | |||
| these functions are defined in [RFC 2585], [OCSP], [RFC 2559], and | functions are defined in [FTPHTTP], [OCSP], and [PKI-LDAPv2]. | |||
| [WEB]. | ||||
| 3.6.3 Management Protocols | 3.6.3 Management Protocols | |||
| Management protocols are required to support on-line interactions | Management protocols are required to support on-line interactions | |||
| between PKI user and management entities. For example, a management | between PKI user and management entities. For example, a management | |||
| protocol might be used between a CA and a client system with which a | protocol might be used between a CA and a client system with which a | |||
| key pair is associated, or between two CAs which cross-certify each | key pair is associated, or between two CAs which cross-certify each | |||
| other. A management protocol can be used to carry user or client | other. A management protocol can be used to carry user or client | |||
| system registration information, or a request for revocation of a | system registration information, or a request for revocation of a | |||
| certificate. | certificate. | |||
| There are two parts to a "management protocol". The first is the | There are two parts to a "management protocol". The first is the | |||
| format of the messages that will be sent, and the second is the | format of the messages that will be sent, and the second is the | |||
| actual protocol that governs the transmission of those messages. | actual protocol that governs the transmission of those messages. | |||
| Originally, the PKIX working group developed two documents ([RFC | Originally, the PKIX working group developed two documents, [CRMF] | |||
| 2511] and [CMMF]) that together described the necessary set of | and [CMMF], that together described the necessary set of message | |||
| message formats, and two other documents ([RFC 2510] and [CMC]) that | formats, and two other documents, [CMP] and [CMC], that described | |||
| described protocols for exchanging those messages. However, the | protocols for exchanging those messages. However, the message formats | |||
| message formats defined in [CMMF] were inserted into both [RFC 2510] | defined in [CMMF] were inserted into both [CMP] and [CMC], and thus | |||
| and [CMC], and thus [CMMF] will be dropped as a PKIX document. | [CMMF] has been dropped as a PKIX document. | |||
| 3.6.4 Policy Outline | 3.6.4 Policy Outline | |||
| As mentioned before, profiling certificates and specifying | As mentioned before, profiling certificates and specifying | |||
| operational and management protocols only addresses a part of the | operational and management protocols only addresses a part of the | |||
| problem of actually developing and implementing a secure PKI. What is | problem of actually developing and implementing a secure PKI. What is | |||
| also needed is the development of a certificate policy and | also needed is the development of a certificate policy (CP) and | |||
| certification practice statement, and then following those documents. | certification practice statement (CPS), and then following those | |||
| The CP and CPS should address physical and personnel security, | documents. The CP and CPS should address physical and personnel | |||
| subject identification requirements, revocation policy, and a number | security, subject identification requirements, revocation policy, and | |||
| of other topics. [RFC 2527] provides a framework for certification | a number of other topics. [POLPROC] provides a framework for | |||
| practice statements. | certification practice statements. | |||
| 3.6.5 Time-Stamp and Data Certification Services | 3.6.5 Time-Stamp and Data Certification Services | |||
| In late 1998, the PKIX working group began two efforts that were not | In late 1998, the PKIX working group began two efforts that were not | |||
| in the original working group charter, but were deemed to be | in the original working group charter, but were deemed to be | |||
| appropriate because they described infrastructure services that could | appropriate because they described infrastructure services that could | |||
| be used to provide desired security services. The first of these is | be used to provide desired security services. The first of these is | |||
| time stamping, described in [TSP]. Time stamping is a service in | time stamping, described in [TSP]. Time stamping is a service in | |||
| which a trusted third party - a Time Stamp Authority, or TSA - signs | which a trusted third party - a Time Stamp Authority, or TSA - signs | |||
| a message, in order to provide evidence that it existed prior to a | a message, in order to provide evidence that it existed prior to a | |||
| given time. Time stamping provides some support for non-repudiation, | given time. Time stamping provides some support for non-repudiation, | |||
| in that a user cannot claim that a transaction was later forged after | in that a user cannot claim that a transaction was later forged after | |||
| compromise of a private key, because the existence of the signed time | compromise of a private key, because the existence of the signed time | |||
| stamp indicates that the transaction in question could not have been | stamp indicates that the transaction in question could not have been | |||
| created after the indicated time. | created after the indicated time. | |||
| [TSP] also defines the role of a Temporal Data Authority, or TDA. A | [TSP] also defines the role of a Temporal Data Authority, or TDA. A | |||
| TDA is a TTP that creates a temporal data token. This temporal data | TDA is a Trusted Third Party (TTP) that creates a temporal data | |||
| token associates a message with a particular event and provides | token. This temporal data token associates a message with a | |||
| supplementary evidence for the time included in the time stamp token. | particular event and provides supplementary evidence for the time | |||
| For example, a TDA could associate the message with the most recent | included in the time stamp token. For example, a TDA could associate | |||
| closing value of the Dow Jones Average. The temporal data with which | the message with the most recent closing value of the Dow Jones | |||
| the message is associated should be unpredictable in order to prevent | Average. The temporal data with which the message is associated | |||
| forward dating of tokens. | should be unpredictable in order to prevent forward dating of tokens. | |||
| At the Minneapolis IETF meeting, it was disclosed that the materials | At the Minneapolis IETF meeting, it was disclosed that the materials | |||
| covered in the Timestamp Internet draft may be covered by patent(s). | covered in the Timestamp Internet draft may be covered by patent(s). | |||
| Use of the material covered by the patent(s) in question has not be | Use of the material covered by the patent(s) in question has not be | |||
| granted by the patentholder. Thus, anyone interested in implementing | granted by the patentholder. Thus, anyone interested in implementing | |||
| the PKIX Timestamp draft must be aware of this intellectual property | the PKIX Timestamp draft must be aware of this intellectual property | |||
| issue. | issue. | |||
| The second new effort is the definition of a Data Certification | The second new effort is the definition of a Data Certification | |||
| Server, or DCS, protocol [DCS]. A DCS is a Trusted Third Party that | Server, or DCS, protocol [DCS]. A DCS is a Trusted Third Party that | |||
| verifies the correctness of specific data submitted to it. | verifies the correctness of specific data submitted to it. | |||
| This is different from the TSP service in that a TSA will not attempt | This is different from the TSP service in that a TSA will not attempt | |||
| to parse and/or verify a message sent to it for certification; | to parse and/or verify a message sent to it for certification; | |||
| instead, it will merely append a reliable indication of the current | instead, it will merely append a reliable indication of the current | |||
| time, and sign the resulting string-of-bits. This offers an | time, and sign the resulting string-of-bits. This offers an | |||
| indication that the given string-of-bits existed at a specified time; | indication that the given string-of-bits existed at a specified time; | |||
| it does not offer any indication of the correctness or relevance of | it does not offer any indication of the correctness or relevance of | |||
| that string of bits. By contrast, the DCS certifies possession of | that string of bits. By contrast, the DCS certifies possession of | |||
| data or the validity of another entity's signature. As part of this, | data or the validity of another entity's signature. As part of this, | |||
| the DCS verifies the mathematical correctness of the actual signature | the DCS verifies the mathematical correctness of the actual signature | |||
| value contained in the request and also checks the full certification | value contained in the request and also checks the full certification | |||
| path from the signing entity to a trusted point (e.g., the DCS's CA, | path from the signing entity to a trusted point (e.g., the DCS's CA, | |||
| or the root CA in a hierarchy). | or the Root CA in a hierarchy). | |||
| The DCS supports non-repudiation in two ways. First, it provides | The DCS supports non-repudiation in two ways. First, it provides | |||
| evidence that a signature or public key certificate was valid at the | evidence that a signature or public key certificate was valid at the | |||
| time indicated in the token. The token can be used even after the | time indicated in the token. The token can be used even after the | |||
| corresponding public key certificate expires and its revocation | corresponding public key certificate expires and its revocation | |||
| information is no longer available on CRLs (for example). Second, the | information is no longer available on CRLs (for example). Second, the | |||
| production of a data certification token in response to a signed | production of a data certification token in response to a signed | |||
| request for certification of another signature or public key | request for certification of another signature or public key | |||
| certificate also provides evidence that due diligence was performed | certificate also provides evidence that due diligence was performed | |||
| by the requester in validating the signature or public key | by the requester in validating the signature or public key | |||
| certificate. | certificate. | |||
| 4 PKIX Documents | 4 PKIX Documents | |||
| This section describes each of the documents written by the PKIX | This section describes each of the documents written by the PKIX | |||
| working group. As PKIX progresses, this section will need to be | working group. As PKIX progresses, this section will need to be | |||
| continually updated to reflect the status of each document (e.g., | continually updated to reflect the status of each document (e.g., | |||
| Proposed Standard, Draft Standard, Standard, Informational Draft, | Proposed Standard, Draft Standard, Standard, Informational Draft, | |||
| Informational RFC, something-that-was-just-thrown-out-for- | Informational RFC, something-that-was-just-thrown-out-for- | |||
| consideration, etc.) | consideration, etc.) | |||
| 4.1 Profile | 4.1 Profile | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Certificate | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Certificate | |||
| and CRL Profile (RFC 2459) | and CRL Profile (RFC 2459) | |||
| DESCRIPTION: This document describes the profiles to be used for | DESCRIPTION: This document describes the profiles to be used for | |||
| X.509v3 certificates and version2 CRLs by Internet PKI participants. | X.509v3 certificates and version 2 CRLs by Internet PKI participants. | |||
| The profiles include the identification of ISO/IEC/ITU and ANSI | The profiles include the identification of ISO/IEC/ITU and ANSI | |||
| extensions which may be useful in the Internet PKI. The profiles are | extensions which may be useful in the Internet PKI. The profiles are | |||
| presented in the 1988 Abstract Syntax Notation One (ASN.1) rather | presented in the 1988 Abstract Syntax Notation One (ASN.1) rather | |||
| than the 1994 syntax used in the ISO/IEC/ITU standards. Would-be | than the 1994 syntax used in the ISO/IEC/ITU standards. Would-be PKIX | |||
| PKIX implementors and developers of certificate-using applications | implementors and developers of certificate-using applications should | |||
| should start with [RFC 2459] to ensure that their systems will be | start with [FORMAT] to ensure that their systems will be able to | |||
| able to interoperate with other users of the PKI. | interoperate with other users of the PKI. | |||
| [RFC 2459] also includes path validation procedures. The procedures | [FORMAT] also includes path validation procedures. The procedures | |||
| presented are based upon the ISO/IEC/ITU definition, but the | presented are based upon the ISO/IEC/ITU definition, but the | |||
| presentation assumes one or more self-signed trusted CA certificates. | presentation assumes one or more self-signed trusted CA certificates. | |||
| The procedures are provided as examples only. Implementations are | ||||
| not required to use the procedures provided; they may implement | The procedures are provided as examples only. Implementations are not | |||
| whichever procedures are efficient for their situation. However, | required to use the procedures provided; they may implement whichever | |||
| procedures are efficient for their situation. However, | ||||
| implementations are required to derive the same results as the | implementations are required to derive the same results as the | |||
| example procedures. | example procedures. | |||
| STATUS: Proposed Standard. | STATUS: Proposed Standard. | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure: | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure | |||
| Representation of Elliptic Curve Digital Signature Algorithm (ECDSA) | Representation of Elliptic Curve Digital Signature Algorithm (ECDSA) | |||
| Keys and Signatures in Internet X.509 Public Key Infrastructure | Keys and Signatures in Internet X.509 Public Key Infrastructure | |||
| Certificates <draft-ietf-pkix-ipki-ecdsa-01.txt> | Certificates <draft-ietf-pkix-ipki-ecdsa-01.txt> | |||
| DESCRIPTION: This document provides Object Identifiers (OIDs) and | DESCRIPTION: This document provides Object Identifiers (OIDs) and | |||
| other guidance for IPKI users who use the Elliptic Curve Digital | other guidance for IPKI users who use the Elliptic Curve Digital | |||
| Signature Algorithm (ECDSA). It profiles the format and semantics of | Signature Algorithm (ECDSA). It profiles the format and semantics of | |||
| the subjectPublicKeyInfo field and the keyUsage extension in X.509 V3 | the subjectPublicKeyInfo field and the keyUsage extension in X.509 V3 | |||
| certificates containing ECDSA keys. This document should be used by | certificates containing ECDSA keys. This document should be used by | |||
| anyone wishing to support ECDSA; others who do not support ECDSA are | anyone wishing to support ECDSA; others who do not support ECDSA are | |||
| not required to comply with it. | not required to comply with it. | |||
| STATUS: WG Last Call. | STATUS: WG Last Call. | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure | |||
| Representation of Key Exchange Algorithm (KEA) Keys in Internet X.509 | Representation of Key Exchange Algorithm (KEA) Keys in Internet X.509 | |||
| Public Key Infrastructure Certificates (RFC 2528) | Public Key Infrastructure Certificates (RFC 2528) | |||
| DESCRIPTION: This document provides Object Identifiers (OIDs) and | DESCRIPTION: This document provides Object Identifiers (OIDs) and | |||
| other guidance for IPKI users who use the Key Exchange Algorithm | other guidance for IPKI users who use the Key Exchange Algorithm | |||
| (KEA). It profiles the format and semantics of the | (KEA). It profiles the format and semantics of the | |||
| subjectPublicKeyInfo field and the keyUsage extension in X.509 V3 | subjectPublicKeyInfo field and the keyUsage extension in X.509 V3 | |||
| certificates containing KEA keys. This document should be used by | certificates containing KEA keys. This document should be used by | |||
| anyone wishing to support KEA; others who do not support ECDSA are | anyone wishing to support KEA; others who do not support ECDSA are | |||
| not required to comply with it. | not required to comply with it. | |||
| STATUS: Informational RFC. | STATUS: Informational RFC. | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Enhanced CRL | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Enhanced CRL | |||
| Distribution Options (OpenCDP) <draft-ietf-pkix-ocdp-01.txt> | Distribution Options (OpenCDP) <draft-ietf-pkix-ocdp-01.txt> | |||
| DESCRIPTION: This document proposes an alternative to the CRL | DESCRIPTION: This document proposes an alternative to the CRL | |||
| Distribution Point (CDP) approach documented in [RFC 2459]. OCDP | Distribution Point (CDP) approach documented in [FORMAT]. OCDP | |||
| separates the CRL location function from the process of certificate | separates the CRL location function from the process of certificate | |||
| and CRL validation, and thus claims some benefits over the CDP | and CRL validation, and thus claims some benefits over the CDP | |||
| approach. | approach. | |||
| STATUS: Under WG review. | STATUS: Under WG review. | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Qualified | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Qualified | |||
| Certificates <draft-ietf-pkix-qc-00.txt> | Certificates <draft-ietf-pkix-qc-00.txt> | |||
| DESCRIPTION: This document profiles the format for and defines | DESCRIPTION: This document profiles the format for and defines | |||
| skipping to change at page 19, line 20 ¶ | skipping to change at page 19, line 25 ¶ | |||
| of requirements. | of requirements. | |||
| STATUS: Under WG review. | STATUS: Under WG review. | |||
| DOCUMENT TITLE: An Internet AttributeCertificate Profile for | DOCUMENT TITLE: An Internet AttributeCertificate Profile for | |||
| Authorizations <draft-ietf-pkix-acx509prof-00.txt> | Authorizations <draft-ietf-pkix-acx509prof-00.txt> | |||
| DESCRIPTION: This document profiles the format for an defines | DESCRIPTION: This document profiles the format for an defines | |||
| requirements on X.509 Attribute Certificates to support authorization | requirements on X.509 Attribute Certificates to support authorization | |||
| services required by various Internet protocols (TLS, CMS, and the | services required by various Internet protocols (TLS, CMS, and the | |||
| consumers of CMS, etc.). Two profiles are defined on that supports | consumers of CMS, etc.). Two profiles are defined on that supports | |||
| basic authorizations and on the supports proxiable services. | basic authorizations and on the supports proxiable services. | |||
| STATUS: Under WG review. | STATUS: Under WG review. | |||
| DOCUMENT TITLE: Diffie-Hellman Proof-of-Possesion Algorithms <draft- | DOCUMENT TITLE: Diffie-Hellman Proof-of-Possesion Algorithms <draft- | |||
| ietf-pkix-dhpop-00.txt> | ietf-pkix-dhpop-00.txt> | |||
| DESCRIPTION: This documents describes two signing algorithms using | DESCRIPTION: This documents describes two signing algorithms using | |||
| the Diffie-Hellman key agreement process to provide a shared secret | the Diffie-Hellman key agreement process to provide a shared secret | |||
| as the basis of the signature. It allows Diffie-Hellman a key | as the basis of the signature. It allows Diffie-Hellman a key | |||
| agreement algorithm to be used instead of requiring that the public | agreement algorithm to be used instead of requiring that the public | |||
| key being requested for certification correspond to an algorithm that | key being requested for certification correspond to an algorithm that | |||
| is capable of signing and/or encrypting. The first algorithm | is capable of signing and/or encrypting. The first algorithm | |||
| generates a signature for a specific verifier where the signer and | generates a signature for a specific verifier where the signer and | |||
| recipient have the same public key parameters. The second algorithm | recipient have the same public key parameters. The second algorithm | |||
| generates a signature for arbitrary verifiers where the signer and | generates a signature for arbitrary verifiers where the signer and | |||
| recipient do not have the same public key parameters. | recipient do not have the same public key parameters. | |||
| STATUS: Under WG review. | STATUS: Under WG review. | |||
| 4.2 Operational Protocols | 4.2 Operational Protocols | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Operational | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Operational | |||
| Protocols - LDAPv2 (RFC 2559) | Protocols - LDAPv2 (RFC 2559) | |||
| DESCRIPTION: This document describes the use of LDAPv2 as a protocol | DESCRIPTION: This document describes the use of LDAPv2 as a protocol | |||
| for PKI elements to publish and retrieve certificates and CRLs from a | for PKI elements to publish and retrieve certificates and CRLs from a | |||
| certificate repository. LDAPv2 [RFC 1777] is a protocol that allows | certificate repository. [LDAPv2] is a protocol that allows publishing | |||
| publishing and retrieving of information. | and retrieving of information. | |||
| STATUS: Proposed Standard. | STATUS: Proposed Standard. | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure LDAPv2 | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure LDAPv2 | |||
| Schema (RFC 2587) | Schema (RFC 2587) | |||
| DESCRIPTION: This document defines a minimal schema necessary to | DESCRIPTION: This document defines a minimal schema necessary to | |||
| support the use of LDAPv2 for certificate and CRL retrieval and | support the use of LDAPv2 for certificate and CRL retrieval and | |||
| related functions for PKIX. This document supplements [RFC 1777] by | related functions for PKIX. This document supplements [LDAPv2] by | |||
| identifying the PKIX-related attributes that must be present. | identifying the PKIX-related attributes that must be present. | |||
| STATUS: Proposed Standard. | STATUS: Proposed Standard. | |||
| DOCUMENT TITLE: X.509 Internet Public Key Infrastructure Online | DOCUMENT TITLE: X.509 Internet Public Key Infrastructure Online | |||
| Certificate Status Protocol - OCSP <draft-ietf-pkix-ocsp-08.txt> | Certificate Status Protocol - OCSP <draft-ietf-pkix-ocsp-08.txt> | |||
| DESCRIPTION: This document specifies a protocol useful in | DESCRIPTION: This document specifies a protocol useful in determining | |||
| determining the current status of a certificate without the use of | the current status of a certificate without the use of CRLs. A major | |||
| CRLs. A major complaint about certificate-based systems is the need | complaint about certificate-based systems is the need for a relying | |||
| for a relying party to retrieve a current CRL as part of the | party to retrieve a current CRL as part of the certificate validation | |||
| certificate validation process. Depending on the size of the CRL, | process. Depending on the size of the CRL, this can cause severe | |||
| this can cause severe problems for bandwidth-challenged devices. | problems for bandwidth-challenged devices. Depending on the frequency | |||
| Depending on the frequency of CRL issuance, this can also cause | of CRL issuance, this can also cause timeliness problems. (E.g., if | |||
| timeliness problems. (E.g., if CRLs are only published weekly, with | CRLs are only published weekly, with no interim releases, a | |||
| no interim releases, a certificate could actually have been revoked | certificate could actually have been revoked for just short of one | |||
| for just short of one week without it being on the current CRL, and | week without it being on the current CRL, and thus improper use of | |||
| thus improper use of that certificate could still be occurring.) | that certificate could still be occurring.) | |||
| OCSP attempts to address those problems. It provides a mechanism | OCSP attempts to address those problems. It provides a mechanism | |||
| whereby a relying party identifies one or more certificates to an | whereby a relying party identifies one or more certificates to an | |||
| approved OCSP "responder", and the responder sends back the current | approved OCSP "responder", and the responder sends back the current | |||
| status of the certificate(s) - e.g., "revoked", "notRevoked", | status of the certificate(s) - e.g., "revoked", "notRevoked", | |||
| "unknown". This can dramatically reduce the bandwidth required to | "unknown". This can dramatically reduce the bandwidth required to | |||
| transmit revocation status - a relying party does not have to | transmit revocation status - a relying party does not have to | |||
| retrieve a CRL of many entries to check the status of one | retrieve a CRL of many entries to check the status of one | |||
| certificate. It can (although it is not guaranteed to) improve the | certificate. It can (although it is not guaranteed to) improve the | |||
| timeliness of revocation notification, and thus reduce the window of | timeliness of revocation notification, and thus reduce the window of | |||
| opportunity for someone trying to use a revoked certificate. | opportunity for someone trying to use a revoked certificate. | |||
| STATUS: Approved as Proposed Standard. | STATUS: Approved as Proposed Standard. | |||
| DOCUMENT TITLE: Internet Public Key Infrastructure: Caching the | DOCUMENT TITLE: Internet Public Key Infrastructure: Caching the | |||
| Online Certificate Status Protocol <draft-ietf-pkix-ocsp- | Online Certificate Status Protocol | |||
| caching-00.txt> | ||||
| DESCRIPTION: To improve the degree to which it can scale, OCSP | DESCRIPTION: To improve the degree to which it can scale, OCSP allows | |||
| allows caching of responses - e.g., at intermediary servers, or even | caching of responses - e.g., at intermediary servers, or even at the | |||
| at the relying party's end system. This document describes how to | relying party's end system. This document describes how to support | |||
| support OCSP caching at intermediary servers. | OCSP caching at intermediary servers. | |||
| STATUS: ??? | STATUS: Has been discontinued. | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Operational | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Operational | |||
| Protocols: FTP and HTTP (RFC 2585) | Protocols: FTP and HTTP (RFC 2585) | |||
| DESCRIPTION: This document describes the use of the File Transfer | DESCRIPTION: This document describes the use of the File Transfer | |||
| Protocol (FTP) and the Hyper-text Transfer Protocol (HTTP) to obtain | Protocol (FTP) and the Hyper-text Transfer Protocol (HTTP) to obtain | |||
| certificates and CRLs from PKI repositories. | certificates and CRLs from PKI repositories. | |||
| STATUS: Proposed Standard. | STATUS: Proposed Standard. | |||
| DOCUMENT TITLE: WEB based Certificate Access Protocol-- WebCAP/1.0 | DOCUMENT TITLE: WEB based Certificate Access Protocol-- WebCAP/1.0 | |||
| <draft-ietf-pix-webcap-00.txt> | ||||
| DESCRIPTION: This document specifies a set of methods, headers, and | DESCRIPTION: This document specifies a set of methods, headers, and | |||
| content-types ancillary to HTTP/1.1 to publish, retrieve X.509 | content-types ancillary to HTTP/1.1 to publish, retrieve X.509 | |||
| certificates and Certificate Revocation Lists. This protocol also | certificates and Certificate Revocation Lists. This protocol also | |||
| facilitates determining current status of a digital certificate | facilitates determining current status of a digital certificate | |||
| without the use of CRLs. This protocol defines new methods, request | without the use of CRLs. This protocol defines new methods, request | |||
| and response bodies, error codes to HTTP/1.1 protocol for securely | and response bodies, error codes to HTTP/1.1 protocol for securely | |||
| publishing, retrieving, and validating certificates across a | publishing, retrieving, and validating certificates across a | |||
| firewall. | firewall. | |||
| STATUS: Has been discontinued. | STATUS: Has been discontinued. | |||
| 4.3 Management Protocols | 4.3 Management Protocols | |||
| DOCUMENT TITLE: Certificate Management Messages over CMS <draft- | DOCUMENT TITLE: Certificate Management Messages over CMS <draft- | |||
| ietf-pkix-cmc-04.txt> | ietf-pkix-cmc-04.txt> | |||
| DESCRIPTION: This document defines the means by which PKI clients and | DESCRIPTION: This document defines the means by which PKI clients and | |||
| servers may exchange PKI messages when using S/MIME's Cryptographic | servers may exchange PKI messages when using S/MIME's Cryptographic | |||
| Message Syntax [CMS]as a transaction envelope. CMC supports the | Message Syntax [CMS]as a transaction envelope. CMC supports the | |||
| certificate request message body specified in the Certificate Request | certificate request message body specified in the Certificate Request | |||
| Message Format [RFC 2511] documents, as well as a variety of other | Message Format [CRMF] documents, as well as a variety of other | |||
| certificate management messages. The primary purpose of this | certificate management messages. The primary purpose of this | |||
| specification is to allow the use of an existing protocol (S/MIME)as | specification is to allow the use of an existing protocol (S/MIME)as | |||
| a PKI management protocol, without requiring the development of an | a PKI management protocol, without requiring the development of an | |||
| entirely new protocol such as CMP. A secondary purpose is to codify | entirely new protocol such as CMP. A secondary purpose is to codify | |||
| in IETF standards the current industry practice of using PKCS 10 | in IETF standards the current industry practice of using PKCS 10 | |||
| messages [PKCS10] for certificate requests. | messages [PKCS10] for certificate requests. | |||
| STATUS: Under WG review. | STATUS: Under WG review. | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Certificate | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Certificate | |||
| Management Message Formats <draft-ietf-pkix-cmmf-02.txt> | Management Message Formats | |||
| DESCRIPTION: This document contains the formats for a series of | DESCRIPTION: This document contains the formats for a series of | |||
| messages important in certificate/PKI management. These messages let | messages important in certificate/PKI management. These messages let | |||
| CA's, RA's, and relying parties communicate with each other. Note | CA's, RA's, and relying parties communicate with each other. Note | |||
| that this document only specifies message formats; it does not | that this document only specifies message formats; it does not | |||
| specify a protocol for transferring messages. That protocol can be | specify a protocol for transferring messages. That protocol can be | |||
| either CMP or CMC, or perhaps another custom protocol. | either CMP or CMC, or perhaps another custom protocol. | |||
| STATUS: Has been discontinued, as all useful information from it has | STATUS: Has been discontinued, as all useful information from it has | |||
| been moved into [RFC 2510] and [CMC]. | been moved into [CMP] and [CMC]. | |||
| DOCUMENT TITLE: Internet X.509 Certificate Request Message Format | DOCUMENT TITLE: Internet X.509 Certificate Request Message Format | |||
| (RFC 2511) | (RFC 2511) | |||
| DESCRIPTION: CRMF specifies a format recommended for use whenever a | DESCRIPTION: CRMF specifies a format recommended for use whenever a | |||
| relying party is requesting a certificate from a CA or requesting | relying party is requesting a certificate from a CA or requesting | |||
| that an RA help it get a certificate. This document is distinct from | that an RA help it get a certificate. The request message format was | |||
| CMMF for historical reasons - the request message format was needed | needed before many of the other message formats had to be finalized, | |||
| before many of the other message formats had to be finalized, and so | and so it was put into a separate document. This document only | |||
| it was put into a separate document. Like CMMF, this document only | specifies the format of a message. Specification of a protocol to | |||
| specifies the format of a message. Specification of a protocol to | ||||
| transport that message is beyond the scope of CRMF. | transport that message is beyond the scope of CRMF. | |||
| STATUS: Proposed Standard. | STATUS: Proposed Standard. | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Certificate | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Certificate | |||
| Management Protocols (RFC 2510) | Management Protocols (RFC 2510) | |||
| DESCRIPTION: This document specifies a new protocol specifically | DESCRIPTION: This document specifies a new protocol specifically | |||
| developed for the purpose of transporting messages like those | developed for the purpose of transporting messages like those | |||
| specified in CMMF and CRMF among PKI elements. In general, CMP will | specified in CRMF among PKI elements. In general, CMP will be used in | |||
| be used in conjunction with CMMF and CRMF, and will then be run over | conjunction with CRMF, and will then be run over a transfer service | |||
| a transfer service (e.g., S/MIME, HTTP) to provide a complete PKI | (e.g., S/MIME, HTTP) to provide a complete PKI management service. | |||
| management service. | ||||
| STATUS: Proposed Standard. | STATUS: Proposed Standard. | |||
| 4.4 Policy Outline | 4.4 Policy Outline | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Certificate | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Certificate | |||
| Policy and Certification Practices Framework (RFC 2527) | Policy and Certification Practices Framework (RFC 2527) | |||
| DESCRIPTION: As noted before, the specification and implementation of | DESCRIPTION: As noted before, the specification and implementation of | |||
| certificate profiles, operational protocols, and management protocols | certificate profiles, operational protocols, and management protocols | |||
| is only part of building a PKI. Equally as important - if not more | is only part of building a PKI. Equally as important - if not more | |||
| important - is the development and enforcement of a certificate | important - is the development and enforcement of a certificate | |||
| security policy, and a Certification Practice Statement (CPS). The | security policy, and a Certification Practice Statement (CPS). The | |||
| purpose of this document (PKIX-4) is to establish a clear | purpose of this document (PKIX-4) is to establish a clear | |||
| relationship between certificate policies and(CPSs), and to present a | relationship between certificate policies and CPSs, and to present a | |||
| framework to assist the writers of certificate policies or CPSs with | framework to assist the writers of certificate policies or CPSs with | |||
| their tasks. In particular, the framework identifies the elements | their tasks. In particular, the framework identifies the elements | |||
| that may need to be considered in formulating a certificate policy or | that may need to be considered in formulating a certificate policy or | |||
| a CPS. The purpose is not to define particular certificate policies | a CPS. The purpose is not to define particular certificate policies | |||
| or CPSs, per se. | or CPSs, per se. | |||
| STATUS: Informational RFC. | STATUS: Informational RFC. | |||
| 4.5 Time-Stamp and Data Certification Services | 4.5 Time-Stamp and Data Certification Services | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Time Stamp | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Time Stamp | |||
| Protocols <draft-ietf-pkix-time-stamp-01.txt> | Protocols <draft-ietf-pkix-time-stamp-01.txt> | |||
| DESCRIPTION: This document defines the specification for a time stamp | DESCRIPTION: This document defines the specification for a time stamp | |||
| service. It defines a Time Stamp Authority, or TSA, a trusted third | service. It defines a Time Stamp Authority, or TSA, a trusted third | |||
| party who maintains a reliable time service. When the TSA receives a | party who maintains a reliable time service. When the TSA receives a | |||
| time stamp request, it appends the current time to the request and | time stamp request, it appends the current time to the request and | |||
| signs it into a token to certify that the original request existed | signs it into a token to certify that the original request existed | |||
| prior to the indicated time. This helps provide non-repudiation by | prior to the indicated time. This helps provide non-repudiation by | |||
| preventing someone (either a legitimate user or an attacker who has | preventing someone (either a legitimate user or an attacker who has | |||
| successfully compromised a key) from "back-dating" a transaction. It | successfully compromised a key) from "back-dating" a transaction. It | |||
| also makes it more difficult to challenge a transaction by asserting | also makes it more difficult to challenge a transaction by asserting | |||
| that it has been back-dated. Note that the TSA does not provide any | that it has been back-dated. Note that the TSA does not provide any | |||
| data parsing service; that is, the TSA does not attempt to validate | data parsing service; that is, the TSA does not attempt to validate | |||
| that which it signs; it merely regards it as a string of bits whose | that which it signs; it merely regards it as a string of bits whose | |||
| meaning is unimportant, but existence is vital. | meaning is unimportant, but existence is vital. | |||
| STATUS: Under WG review. | STATUS: Under WG review. | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Data | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Data | |||
| Certification Server Protocols <draft-ietf-pkix-dcs-00.txt> | Certification Server Protocols <draft-ietf-pkix-dcs-00.txt> | |||
| DESCRIPTION: This document defines a data certification service, or | DESCRIPTION: This document defines a data certification service, or | |||
| DCS, which can be used to certify both the existence and correctness | DCS, which can be used to certify both the existence and correctness | |||
| of a message or signature. In contrast to the time stamp service | of a message or signature. In contrast to the time stamp service | |||
| described above, the DCS certifies possession of data or the validity | described above, the DCS certifies possession of data or the validity | |||
| of another entity's signature. As part of this, the DCS verifies the | of another entity's signature. As part of this, the DCS verifies the | |||
| mathematical correctness of the actual signature value contained in | mathematical correctness of the actual signature value contained in | |||
| the request and also checks the full certification path from the | the request and also checks the full certification path from the | |||
| signing entity to a trusted point (e.g., the DCS's CA, or the root CA | signing entity to a trusted point (e.g., the DCS's CA, or the Root CA | |||
| in a hierarchy). | in a hierarchy). | |||
| The DCS supports non-repudiation in two ways. First, it provides | The DCS supports non-repudiation in two ways. First, it provides | |||
| evidence that a signature or public key certificate was valid at the | evidence that a signature or public key certificate was valid at the | |||
| time indicated in the token. The token can be used even after the | time indicated in the token. The token can be used even after the | |||
| corresponding public key certificate expires and its revocation | corresponding public key certificate expires and its revocation | |||
| information is no longer available on CRLs (for example). Second, the | information is no longer available on CRLs (for example). Second, the | |||
| production of a data certification token in response to a signed | production of a data certification token in response to a signed | |||
| request for certification of another signature or public key | request for certification of another signature or public key | |||
| certificate also provides evidence that due diligence was performed | certificate also provides evidence that due diligence was performed | |||
| by the requester in validating the signature or public key | by the requester in validating the signature or public key | |||
| certificate. | certificate. | |||
| STATUS: Under WG review. | STATUS: Under WG review. | |||
| DOCUMENT TITLE: Basic Event Representation Token <draft-ietf-pkix- | DOCUMENT TITLE: Basic Event Representation Token <draft-ietf-pkix- | |||
| bert1-01.txt> | bert1-01.txt> | |||
| DESCRIPTION: This document defines a finite method of representing a | DESCRIPTION: This document defines a finite method of representing a | |||
| discrete instant in time as a referable event. The Basic Event | discrete instant in time as a referable event. The Basic Event | |||
| Representation Token (BERT) is a light-weight binary token designed | Representation Token (BERT) is a light-weight binary token designed | |||
| for use in large numbers over short periods of time. The tokens | for use in large numbers over short periods of time. The tokens | |||
| contain only a single instance of an event stamp and the trust | contain only a single instance of an event stamp and the trust | |||
| process is referenced against an external reference. | process is referenced against an external reference. | |||
| STATUS: Under WG review. | STATUS: Under WG review. | |||
| DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Extending | DOCUMENT TITLE: Internet X.509 Public Key Infrastructure Extending | |||
| trust in non repudiation tokens in time <draft-ietf-pkix-extend- | trust in non repudiation tokens in time <draft-ietf-pkix-extend- | |||
| trust-non-repudiation-token-00.txt> | trust-non-repudiation-token-00.txt> | |||
| DESCRIPTION: This document describes a method to maintain the trust | DESCRIPTION: This document describes a method to maintain the trust | |||
| in a token issued by a non-repudiation Trusted Third Party (NR TTP) | in a token issued by a non-repudiation Trusted Third Party (NR TTP) | |||
| (DCS/TSA/TDA) after the key initially used to establish trust in the | (DCS/TSA/TDA) after the key initially used to establish trust in the | |||
| token expires. The document describes a general format for storage | token expires. The document describes a general format for storage of | |||
| of DCS/TS/TDA tokens for this purpose, which establishes a chain of | DCS/TS/TDA tokens for this purpose, which establishes a chain of | |||
| custody for the data. | custody for the data. | |||
| STATUS: Under WG review. | STATUS: Under WG review. | |||
| 5 Advice to Implementors | 5 Advice to Implementors | |||
| This section provides guidance to those who would implement various | This section provides guidance to those who would implement various | |||
| parts of the PKIX suite of documents. The topics discussed in this | parts of the PKIX suite of documents. The topics discussed in this | |||
| section engendered significant discussion in the working group, and | section engendered significant discussion in the working group, and | |||
| there was at times either widespread disagreement or widespread | there was at times either widespread disagreement or widespread | |||
| misunderstanding of them. Thus, this discussion is provided to help | misunderstanding of them. Thus, this discussion is provided to help | |||
| readers of the PKIX document set understand these issues, in the hope | readers of the PKIX document set understand these issues, in the hope | |||
| of fostering greater interoperability among eventual PKIX | of fostering greater interoperability among eventual PKIX | |||
| implementations. | implementations. | |||
| 5.1 Names | 5.1 Names | |||
| PKIX has been referred to as a "name-centric" PKI because the | PKIX has been referred to as a "name-centric" PKI because the | |||
| certificates associate public keys with names of entities. Each | certificates associate public keys with names of entities. Each | |||
| certificate contains at least one name for the owner of a particular | certificate contains at least one name for the owner of a particular | |||
| public key. The name can be an X.500 distinguished name, contained | public key. The name can be an X.500 distinguished name, contained in | |||
| in the subjectDN field of the certificate. There can also be names | the subjectDN field of the certificate. There can also be names such | |||
| such as RFC822 e-mail addresses, DNS domain names, and URIs | as RFC822 e-mail addresses, DNS domain names, and URIs associated | |||
| associated with the key; these attributes are kept in the | with the key; these attributes are kept in the subjectAltName | |||
| subjectAltName extension of the certificate. A certificate must | extension of the certificate. A certificate must contain at least one | |||
| contain at least one of these name forms, it may contain multiple | of these name forms, it may contain multiple forms if deemed | |||
| forms if deemed appropriate by the CA based on the intended usage of | appropriate by the CA based on the intended usage of the certificate. | |||
| the certificate. | ||||
| 5.1.1 Name Forms | 5.1.1 Name Forms | |||
| There are two possible places to put a name in an X.509v3 | There are two possible places to put a name in an X.509v3 | |||
| certificate. One is the subject field in the base certificate (often | certificate. One is the subject field in the base certificate (often | |||
| called the "Distinguished Name" or "DN" field), and the other is in | called the "Distinguished Name" or "DN" field), and the other is in | |||
| the subjectAltName extension. | the subjectAltName extension. | |||
| 5.1.1.1 Distinguished Names | 5.1.1.1 Distinguished Names | |||
| According to [RFC 2459], a PKIX certificate must have a non-null | According to [FORMAT], a PKIX certificate must have a non-null value | |||
| value in the Subject field, except for an end-entity certificate, | in the Subject field, except for an end-entity certificate, which is | |||
| which is permitted to have an empty subject field. Furthermore, if a | permitted to have an empty subject field. Furthermore, if a | |||
| certificate has a non-null Subject field, it MUST contain an X.500 | certificate has a non-null Subject field, it MUST contain an X.500 | |||
| Distinguished Name. | Distinguished Name. | |||
| 5.1.1.2 SubjectAltName Forms | 5.1.1.2 SubjectAltName Forms | |||
| In addition to the DN, a PKIX certificate may have one or more values | In addition to the DN, a PKIX certificate may have one or more values | |||
| in the subjectAltName extension. | in the subjectAltName extension. | |||
| The subjectAltName extension allows additional identities to be bound | The subjectAltName extension allows additional identities to be bound | |||
| to the subject of the certificate - e.g., it allows "umbc.edu" and | to the subject of the certificate - e.g., it allows "umbc.edu" and | |||
| "130.85.1.3" to be associated with a particular subject, as well as | "130.85.1.3" to be associated with a particular subject, as well as | |||
| "C=US, O=University of Maryland, L=Baltimore, CN=UMBC". | "C=US, O=University of Maryland, L=Baltimore, CN=UMBC". X.509-defined | |||
| X.509-defined options for this extension include: Internet | options for this extension include: Internet electronic mail | |||
| electronic mail addresses; DNS names; IP addresses; and uniform | addresses; DNS names; IP addresses; and uniform resource indentifiers | |||
| resource indentifiers (URIs). Other options can exist, including | (URIs). Other options can exist, including locally-defined name | |||
| locally-defined name forms. | forms. | |||
| A single subjectAltName extension can include multiple name forms, | A single subjectAltName extension can include multiple name forms, | |||
| and multiple instances of each name form. | and multiple instances of each name form. | |||
| Whenever such Alternate Name forms are to be bound into a | Whenever such Alternate Name forms are to be bound into a | |||
| certificate, the subject alternative name (or issuer alternative | certificate, the subject alternative name (or issuer alternative | |||
| name) extension must be used. It is technically possible to embed an | name) extension must be used. It is technically possible to embed an | |||
| Alternate Name Form in the subject field. For example, one could | Alternate Name Form in the subject field. For example, one could make | |||
| make a DN contain an IP address via a kludge such as "C=US, | a DN contain an IP address via a kludge such as "C=US, L=Baltimore, | |||
| L=Baltimore, CN=130.85.1.3". However, this usage is deprecated; the | CN=130.85.1.3". However, this usage is deprecated; the alternative | |||
| alternative name extension is the preferred location for finding such | name extension is the preferred location for finding such | |||
| information. As another example, some legacy implementations exist | information. As another example, some legacy implementations exist | |||
| where an RFC822 name is embedded in the subject distinguished name as | where an RFC822 name is embedded in the subject distinguished name as | |||
| an EmailAddress attribute. Per [RFC 2459], PKIX-compliant | an EmailAddress attribute. Per [FORMAT], PKIX-compliant | |||
| implementations generating new certificates with electronic mail | implementations generating new certificates with electronic mail | |||
| addresses MUST use the rfc822Name in the subject alternative name | addresses MUST use the rfc822Name in the subject alternative name | |||
| field to describe such entities. Simultaneous inclusion of the | field to describe such entities. Simultaneous inclusion of the | |||
| EmailAddress attribute in the subject distinguished name to support | EmailAddress attribute in the subject distinguished name to support | |||
| legacy implementation is deprecated but permitted. | legacy implementation is deprecated but permitted. | |||
| In line with this, if the only subject identity included in a | In line with this, if the only subject identity included in a | |||
| certificate is an alternative name form, then the subject | certificate is an alternative name form, then the subject | |||
| distinguished name must be empty (technically, an empty sequence), | distinguished name must be empty (technically, an empty sequence), | |||
| and the subjectAltName extension must be present. If the subject | and the subjectAltName extension must be present. If the subject | |||
| field contains an empty sequence, the subjectAltName extension must | field contains an empty sequence, the subjectAltName extension must | |||
| be marked critical. | be marked critical. | |||
| If the subjectAltName extension is present, the sequence must contain | If the subjectAltName extension is present, the sequence must contain | |||
| at least one entry. Unlike the subject field, conforming CAs shall | at least one entry. Unlike the subject field, conforming CAs shall | |||
| not issue certificates with subjectAltNames containing empty | not issue certificates with subjectAltNames containing empty | |||
| GeneralName fields. For example, an rfc822Name is represented as an | GeneralName fields. For example, an rfc822Name is represented as an | |||
| IA5String. While an empty string is a valid IA5String, such an | IA5String. While an empty string is a valid IA5String, such an | |||
| rfc822Name is not permitted by PKIX. The behavior of clients that | rfc822Name is not permitted by PKIX. The behavior of clients that | |||
| encounter such a certificate when processing a certification path is | encounter such a certificate when processing a certification path is | |||
| not defined by this working group. | not defined by this working group. | |||
| Because the subject alternative name is considered to be definitively | Because the subject alternative name is considered to be definitively | |||
| bound to the public key, all parts of the subject alternative name | bound to the public key, all parts of the subject alternative name | |||
| must be verified by the CA. | must be verified by the CA. | |||
| 5.1.1.2.1 Internet e-mail addresses | 5.1.1.2.1 Internet e-mail addresses | |||
| When the subjectAltName extension contains an Internet mail address, | When the subjectAltName extension contains an Internet mail address, | |||
| the adress is included as an rfc822Name. The format of an rfc822Name | the adress is included as an rfc822Name. The format of an rfc822Name | |||
| is an "addr-spec" as defined in RFC 822 [RFC 822]. An addr-spec has | is an "addr-spec" as defined in [RFC-822]. An addr-spec has the form | |||
| the form local-part@domain; it does not have a phrase (such as a | local-part@domain; it does not have a phrase (such as a common name) | |||
| common name) before it, or a comment (text surrounded in parentheses) | before it, or a comment (text surrounded in parentheses) after it, | |||
| after it, and it is not surrounded by "<" and ">". | and it is not surrounded by "<" and ">". | |||
| 5.1.1.2.2 DNS Names | 5.1.1.2.2 DNS Names | |||
| When the subjectAltName extension contains a domain name service | When the subjectAltName extension contains a domain name service | |||
| label, the domain name is stored in the dNSName attribute(an | label, the domain name is stored in the dNSName attribute(an | |||
| IA5String). The string shall be in the "preferred name syntax," as | IA5String). The string shall be in the "preferred name syntax," as | |||
| specified by RFC 1034 [RFC 1034]. Note that while upper and lower | specified by [DNS]. Note that while upper and lower case letters are | |||
| case letters are allowed in domain names, no signifigance is attached | allowed in domain names, no signifigance is attached to the case. In | |||
| to the case. In addition, while the string " " is a legal domain | addition, while the string " " is a legal domain name, subjectAltName | |||
| name, subjectAltName extensions with a dNSName " " are not permitted. | extensions with a dNSName " " are not permitted. Finally, the use of | |||
| Finally, the use of the DNS representation for Internet mail | the DNS representation for Internet mail addresses (wpolk.nist.gov | |||
| addresses (wpolk.nist.gov instead of wpolk@nist.gov) is not | instead of wpolk@nist.gov) is not permitted; such identities are to | |||
| permitted; such identities are to be encoded as rfc822Name. | be encoded as rfc822Name. | |||
| 5.1.1.2.3 IP addresses | 5.1.1.2.3 IP addresses | |||
| When the subjectAltName extension contains an iPAddress, the address | When the subjectAltName extension contains an iPAddress, the address | |||
| shall be stored in the octet string in "network byte order," as | shall be stored in the octet string in "network byte order," as | |||
| specified in RFC 791 [RFC 791]. The least significant bit (LSB) of | specified in [IP]. The least significant bit (LSB) of each octet is | |||
| each octet is the LSB of the corresponding byte in the network | the LSB of the corresponding byte in the network address. For IP | |||
| address. For IP Version 4, as specified in RFC 791, the octet string | Version 4, as specified in [IP], the octet string must contain | |||
| must contain exactly four octets. For IP Version 6, as specified in | exactly four octets. For IP Version 6, as specified in [IPv6], the | |||
| RFC 1883, the octet string must contain exactly sixteen octets | octet string must contain exactly sixteen octets [RFC1883]. | |||
| [RFC1883]. | ||||
| 5.1.1.2.4 URIs | 5.1.1.2.4 URIs | |||
| [RFC 2459] notes "When the subjectAltName extension contains a URI, | [FORMAT] notes "When the subjectAltName extension contains a URI, the | |||
| the name MUST be stored in the uniformResourceIdentifier (an | name MUST be stored in the uniformResourceIdentifier (an IA5String). | |||
| IA5String). The name MUST be a non-relative URL, and MUST follow the | The name MUST be a non-relative URL, and MUST follow the URL syntax | |||
| URL syntax and encoding rules specified in [RFC 1738]. The name must | and encoding rules specified in [RFC 1738]. The name must include | |||
| include both a scheme (e.g., "http" or "ftp") and a scheme-specific- | both a scheme (e.g., "http" or "ftp") and a scheme-specific-part. The | |||
| part. The scheme-specific-part must include a fully qualified domain | scheme-specific-part must include a fully qualified domain name or IP | |||
| name or IP address as the host. As specified in [RFC 1738], the | address as the host. As specified in [RFC 1738], the scheme name is | |||
| scheme name is not case-sensitive (e.g., "http" is equivalent to | not case-sensitive (e.g., "http" is equivalent to "HTTP"). The host | |||
| "HTTP"). The host part is also not case-sensitive, but other | part is also not case-sensitive, but other components of the scheme- | |||
| components of the scheme-specific-part may be case-sensitive. When | specific-part may be case-sensitive. When comparing URIs, conforming | |||
| comparing URIs, conforming implementations MUST compare the scheme | implementations MUST compare the scheme and host without regard to | |||
| and host without regard to case, but assume the remainder of the | case, but assume the remainder of the scheme-specific-part is case | |||
| scheme-specific-part is case sensitive." | sensitive." | |||
| 5.1.2 Scope of Names | 5.1.2 Scope of Names | |||
| The original X.500 work presumed that every subject in the world | The original X.500 work presumed that every subject in the world | |||
| would have a globally-unique distinguished name. Thus, every subject | would have a globally-unique distinguished name. Thus, every subject | |||
| could be easily located, and there would never be a conflict. All | could be easily located, and there would never be a conflict. All | |||
| that would be needed is a sufficiently-large name space, and rules | that would be needed is a sufficiently-large name space, and rules | |||
| for constructing names based on subordination and location. | for constructing names based on subordination and location. | |||
| Obviously, that is not practical in the real world, for a variety of | Obviously, that is not practical in the real world, for a variety of | |||
| reasons. There is no single entity in the world trusted by everybody | reasons. There is no single entity in the world trusted by everybody | |||
| to reside at the top of the name space, and there is no way to | to reside at the top of the name space, and there is no way to | |||
| enforce uniqueness on names for all entities. (These were among the | enforce uniqueness on names for all entities. (These were among the | |||
| reasons for the failure of PEM to be widely implemented.) | reasons for the failure of PEM to be widely implemented.) | |||
| This does not mean, however, that a name-based PKI cannot work. It | This does not mean, however, that a name-based PKI cannot work. It is | |||
| is important to recognize that the scope of names in PKIX is local; | important to recognize that the scope of names in PKIX is local; they | |||
| they need to be defined and unique only within their own domain. | need to be defined and unique only within their own domain. | |||
| Suppose for example that a rootCA is established with DN "O=IETF, | Suppose for example that a Top CA is established with DN "O=IETF, | |||
| OU=PKIX, CN=PKIX_CA". That CA will then issue certificates for users | OU=PKIX, CN=PKIX_CA". That CA will then issue certificates for users | |||
| subordinate to it. The only requirement - and this can be enforced | subordinate to it. The only requirement - and this can be enforced | |||
| procedurally - is that no two distinct entities beneath this rootCA | procedurally - is that no two distinct entities beneath this Top CA | |||
| have the same name. We can't prevent somebody else in the world from | have the same name. We can't prevent somebody else in the world from | |||
| creating her own CA, called "O=IETF, OU=PKIX, CN=PKIX_CA", and it is | creating her own CA, called "O=IETF, OU=PKIX, CN=PKIX_CA", and it is | |||
| not necessary to do so. Within the domain of the original rootCA, | not necessary to do so. Within the domain of the original Top CA, | |||
| there will be no conflict, and the fact that there is another CA of | there will be no conflict, and the fact that there is another CA of | |||
| the same name in some other domain is irrelevant. | the same name in some other domain is irrelevant. | |||
| This is analogous to the current DNS or IP address situations. On | This is analogous to the current DNS or IP address situations. On the | |||
| the Internet, there is only one node called www.ietf.org. The fact | Internet, there is only one node called www.ietf.org. The fact that | |||
| that there might be 10 different intranets, each with a host given | there might be 10 different intranets, each with a host given the DNS | |||
| the DNS name www.ieft.org, is irrelevant and causes no | name www.ieft.org, is irrelevant and causes no interoperability | |||
| interoperability problems - those are different domains. However, if | problems - those are different domains. However, if there were to be | |||
| there were to be another node on the Internet with domain name | another node on the Internet with domain name www.ietf.org, then | |||
| www.ietf.org, then there would be a problem due to name duplication. | there would be a problem due to name duplication. | |||
| The same applies for IP addresses. As long as only one node on the | The same applies for IP addresses. As long as only one node on the | |||
| Internet responds to the IP address 130.85.1.3, there is no problem, | Internet responds to the IP address 130.85.1.3, there is no problem, | |||
| despite the fact that there are 100 different corporate Intranets, | despite the fact that there are 100 different corporate Intranets, | |||
| each using that same IP address. However, if two different nodes on | each using that same IP address. However, if two different nodes on | |||
| the Internet each responded to the IP address 130.85.1.3, there would | the Internet each responded to the IP address 130.85.1.3, there would | |||
| be a problem. | be a problem. | |||
| 5.1.3 Certificate Path Construction | 5.1.3 Certificate Path Construction | |||
| Certificate path construction has been the topic of many discussions | Certificate path construction has been the topic of many discussions | |||
| in the WG. The issue centered around how best to get a certificate | in the WG. The issue centered around how best to get a certificate | |||
| when the connection between the subject's name and the name of their | when the connection between the subject's name and the name of their | |||
| CA, as well as the CA's repository (or directory), may not be | CA, as well as the CA's repository (or directory), may not be | |||
| obvious. Many proposals were put forth, including implementing a | obvious. Many proposals were put forth, including implementing a | |||
| global X.500 Directory Service, using DNS SRV records, and using an | global X.500 Directory Service, using DNS SRV records, and using an | |||
| attribute to point to the directory provider. At the end of the | attribute to point to the directory provider. At the end of the | |||
| discussion the group decided to use the authority information access | discussion the group decided to use the authority information access | |||
| extension defined in [RFC 2459], which allows the CA to indicate the | extension defined in [FORMAT], which allows the CA to indicate the | |||
| access method and location of CA information and services. The | access method and location of CA information and services. The | |||
| extension would be included in subject's certificates and could be | extension would be included in subject's certificates and could be | |||
| used to associate an Internet style identity for the location of | used to associate an Internet style identity for the location of | |||
| repository to retrieve the issuer's certificate in cases where such a | repository to retrieve the issuer's certificate in cases where such a | |||
| location is not related to the issuer's name. | location is not related to the issuer's name. | |||
| Another discussion related to certificate path construction was where | Another discussion related to certificate path construction was where | |||
| to store the CA and end-entity certificates in the directory | to store the CA and end-entity certificates in the directory | |||
| (specifically LDAPv2 directories). Two camps emerged with different | (specifically LDAPv2 directories). Two camps emerged with different | |||
| views on where to store CA and cross-certificates. In the CA's | views on where to store CA and cross-certificates. In the CA's | |||
| directory entry, one camp wanted self-issued certificates stored in | directory entry, one camp wanted self-issued certificates stored in | |||
| the cACertificate attribute, certificates issued to this CA stored in | the cACertificate attribute, certificates issued to this CA stored in | |||
| the forward element of the crossCertificatePair, and certificates | the forward element of the crossCertificatePair, and certificates | |||
| issued from this CA for other CAs in the reverse element of the | issued from this CA for other CAs in the reverse element of the | |||
| crossCertificatePair attribute. The other camp wanted all CA | crossCertificatePair attribute. The other camp wanted all CA | |||
| certificates stored in the cACertificate attribute, and certificates | certificates stored in the cACertificate attribute, and certificates | |||
| issued to/from another domain stored in the crossCertificatePair | issued to/from another domain stored in the crossCertificatePair | |||
| attribute. There was a short discussion that the second was more | attribute. There was a short discussion that the second was more | |||
| efficient than first, and that one solution or the other was more | efficient than first, and that one solution or the other was more | |||
| widely deployed. The end result was to indicate that self-issued | widely deployed. The end result was to indicate that self-issued | |||
| certificates and certificates issued to the CA by CAs in the same | certificates and certificates issued to the CA by CAs in the same | |||
| domain as the CA are stored in the cACertificate attribute. The | domain as the CA are stored in the cACertificate attribute. The | |||
| crossCertificatePair attribute's forward element will include all but | crossCertificatePair attribute's forward element will include all but | |||
| self-issued certificates issued to the CA. The reverse element may | self-issued certificates issued to the CA. The reverse element may | |||
| include a subset of certificates issued by the CA to other CAs. With | include a subset of certificates issued by the CA to other CAs. With | |||
| this resolution both camp's implementations are supported and are | this resolution both camp's implementations are supported and are | |||
| free to chose the location of CA certificates to best support their | free to chose the location of CA certificates to best support their | |||
| implementation. | implementation. | |||
| 5.1.4 Name Constraints | 5.1.4 Name Constraints | |||
| A question that has arisen a number of times is "how does one enforce | A question that has arisen a number of times is "how does one enforce | |||
| Name constraints when there is more than one name form in a | Name constraints when there is more than one name form in a | |||
| certificate?" That is, [RFC 2459] states that: | certificate?" That is, [FORMAT] states that: | |||
| Subject alternative names may be constrained in the same manner as | Subject alternative names may be constrained in the same manner as | |||
| subject distinguished names using the name constraints extension | subject distinguished names using the name constraints extension | |||
| as described in section 4.2.1.11. | as described in section 4.2.1.11. | |||
| What does this mean? Suppose that there is a CA with DN "O=IETF, | What does this mean? Suppose that there is a CA with DN "O=IETF, | |||
| OU=PKIX, CN=PKIX_CA", with the subjectAltName extension having | OU=PKIX, CN=PKIX_CA", with the subjectAltName extension having | |||
| dNSName "PKIX_CA.IETF.ORG". Suppose that that CA has issued a | dNSName "PKIX_CA.IETF.ORG". Suppose that that CA has issued a | |||
| certificate with an empty DN, with subjectAltName extension having | certificate with an empty DN, with subjectAltName extension having | |||
| dNSName set to "PKIX_CA.IETF.ORG", and rfc822Name set to | dNSName set to "PKIX_CA.IETF.ORG", and rfc822Name set to | |||
| Steve@PKIX_CA.IETF.ORG. The question is, are name constraints | Steve@PKIX_CA.IETF.ORG. The question is, are name constraints | |||
| enforced on these two certificates - is the name of the end-entity | enforced on these two certificates - is the name of the end-entity | |||
| certificate considered to be properly subordinate to the name of the | certificate considered to be properly subordinate to the name of the | |||
| CA? | CA? | |||
| The answer is "yes". The general rules for deciding whether a | The answer is "yes". The general rules for deciding whether a | |||
| certificate meets name constraints are: | certificate meets name constraints are: | |||
| If a certificate complies with name constraints in any one of its | - If a certificate complies with name constraints in any one of | |||
| name forms, then the certificate is deemed to comply with name | its name forms, then the certificate is deemed to comply with | |||
| constraints. | name constraints. | |||
| If a certificate contains a name form that its issuer does not, | - If a certificate contains a name form that its issuer does | |||
| the certificate is deemed to comply with name constraints for that | not, the certificate is deemed to comply with name constraints | |||
| name form. | for that name form. | |||
| In deciding whether a name form meets name constraints, the following | In deciding whether a name form meets name constraints, the following | |||
| rules apply (in all cases Name B is the name in the name constraints | rules apply (in all cases Name B is the name in the name constraints | |||
| extension): | extension): | |||
| - rfc822Names: Three variations are allowed: | 5.1.4.1 rfc822Names | |||
| - If the name constraint is specified as "larry@mail.mit.edu", | Three variations are allowed: | |||
| then Name A is subordinate to Name B (in B's subtree) if Name A | ||||
| contains all of Name B's name (specifies a particular mailbox). | ||||
| For example, larry@mail.mit.edu is subordinate, but | ||||
| larry_sanders@mail.mit.edu is not. | ||||
| - If the name constraint is specified as "mail.mit.edu", then | - If the name constraint is specified as "larry@mail.mit.edu", | |||
| Name A is subordinate to Name B (in B's subtree) if Name A | then Name A is subordinate to Name B (in B's subtree) if Name | |||
| contains all of Name B's name (specified all mailboxes on host | A contains all of Name B's name (specifies a particular | |||
| mail.mit.edu). For example, curly@mail.mit.edu and | mailbox). For example, larry@mail.mit.edu is subordinate, but | |||
| mo@mail.mit.edu are subordinate, but mo@mail6.mit.edu and | larry_sanders@mail.mit.edu is not. | |||
| curly@smtp.mail.mit.edu are not. | ||||
| - If the name constraint is specified as ".mit.edu", then Name | - If the name constraint is specified as "mail.mit.edu", then | |||
| A is subordinate to Name B (in B's subtree) if Name A contains | Name A is subordinate to Name B (in B's subtree) if Name A | |||
| all of Name B's name, with the addition of zero or more | contains all of Name B's name (specified all mailboxes on host | |||
| additional host or domain names to the left of Name B's name. | mail.mit.edu). For example, curly@mail.mit.edu and | |||
| That is, smtp.mit.edu is subordinate to .mit.edu, as is | mo@mail.mit.edu are subordinate, but mo@mail6.mit.edu and | |||
| pop.mit.edu. However, mit.edu is not subordinate to .mit.edu. | curly@smtp.mail.mit.edu are not. | |||
| When the constraint begins with a "." it specifies any address | ||||
| within a domain. In the previous example, "mit.edu" is not in | ||||
| the domain of ".mit.edu". | ||||
| Note: If rfc822 names are constrained, but the certificate does | - If the name constraint is specified as ".mit.edu", then Name A | |||
| not contain a subject alternative name, the EmailAddress | is subordinate to Name B (in B's subtree) if Name A contains | |||
| attribute will be used to constrain the name in the subject | all of Name B's name, with the addition of zero or more | |||
| distinguished name. For example (c is country, o is | additional host or domain names to the left of Name B's name. | |||
| organization, ou is organizational unit, and em is | That is, smtp.mit.edu is subordinate to .mit.edu, as is | |||
| EmailAddress), Name A ("c=US, o=MIT, ou=CS, | pop.mit.edu. However, mit.edu is not subordinate to .mit.edu. | |||
| em=curly@mail.mit.edu") is subordinate to Name B ("c=US, o=MIT, | When the constraint begins with a "." it specifies any address | |||
| ou=CS") (in B's subtree) if Name A contains all of Name B's | within a domain. In the previous example, "mit.edu" is not in | |||
| names. | the domain of ".mit.edu". | |||
| - dNSNames: Name A is subordinate to Name B (in B's subtree) if | Note: If rfc822 names are constrained, but the certificate does not | |||
| Name A contains all of Name B's name, with the addition of zero or | contain a subject alternative name, the EmailAddress attribute will | |||
| more additional domain names to the left of Name B's name. That | be used to constrain the name in the subject distinguished name. For | |||
| is, www.mit.edu is subordinate to mit.edu, as is larry.cs.mit.edu. | example (c is country, o is organization, ou is organizational unit, | |||
| However, www.mit.edu is not subordinate to web.mit.edu. | and em is EmailAddress), Name A ("c=US, o=MIT, ou=CS, | |||
| em=curly@mail.mit.edu") is subordinate to Name B ("c=US, o=MIT, | ||||
| ou=CS") (in B's subtree) if Name A contains all of Name B's names. | ||||
| - x.400 addresses: Name A is subordinate to Name B (in B's | 5.1.4.2 dNSNames | |||
| subtree) if Name A contains all of Name B's name. For example (c | ||||
| is country-name, admd is administrative-domain-name, and o is | ||||
| orgnaization-name, ou is organizational-unit-name, pn is personal- | ||||
| name, sn=surname, and gn is given-name in both Name A and B), the | ||||
| mneumonic X.400 address (using PrintableString choices for c and | ||||
| admd) "c=US, admd=AT&T, o=MIT, ou=cs, pn='sn=Doe,gn=John'" is | ||||
| subordinate to "c=US, admd=AT&T, o=MIT, ou=cs" and "c=US, | ||||
| admd=AT&T, o=MIT, pn='sn=DOE,gn=JOHN'" (pn is a SET that includes, | ||||
| among other things, sn and gn). | ||||
| - DNs: Name A is subordinate to Name B (in B's subtree), if Name A | Name A is subordinate to Name B (in B's subtree) if Name A contains | |||
| contains all of Name B's name, treating attribute values encoded | all of Name B's name, with the addition of zero or more additional | |||
| in different types as different strings, ignoring case in | domain names to the left of Name B's name. That is, www.mit.edu is | |||
| PrintableString (in all other types case is not ignored), removing | subordinate to mit.edu, as is larry.cs.mit.edu. However, www.mit.edu | |||
| leading and trailing white space in PrintableString, and | is not subordinate to web.mit.edu. | |||
| converting internal substrings of one or more consecutive white | ||||
| space characters to a single space. For example, (c is country, o | ||||
| is organization, ou is organizational unit, and cn is common | ||||
| name): | ||||
| (Assuming PrinatString types for all attribute values in Name A | 5.1.4.3 x.400 addresses | |||
| and B) "c=US, o=MIT, ou=CS" is subordinate to "c=us, o=MIT, | ||||
| ou=cs", as is "c=US, o=MIT, ou=CS, ou=adminstration". Another | ||||
| example, "c=US, o=MIT, ou=CS, cn= John Doe" (note the white | ||||
| spaces) is subordinate to "c=US, o=MIT, ou=CS, cn=John Doe". | ||||
| (Assuming UTF8String types for all attribute values in Name A | Name A is subordinate to Name B (in B's subtree) if Name A contains | |||
| and B) "c=US, o=MIT, ou=CS, ou=administration" is subordinate | all of Name B's name. For example (c is country-name, admd is | |||
| to "c=US, o=MIT, ou=CS", but "c=US, o=MIT, ou=cs, | administrative-domain-name, and o is orgnaization-name, ou is | |||
| ou=Adminstration". "c=US, o=MIT, ou=CS, cn= John Smith" (note | organizational-unit-name, pn is personal-name, sn=surname, and gn is | |||
| the white spaces) is not subordinate to "c=US, o=MIT, ou=CS, | given-name in both Name A and B), the mneumonic X.400 address (using | |||
| cn= John Smith". | PrintableString choices for c and admd) "c=US, admd=AT&T, o=MIT, | |||
| ou=cs, pn='sn=Doe,gn=John'" is subordinate to "c=US, admd=AT&T, | ||||
| o=MIT, ou=cs" and "c=US, admd=AT&T, o=MIT, pn='sn=DOE,gn=JOHN'" (pn | ||||
| is a SET that includes, among other things, sn and gn). | ||||
| (Assuming UTF8String types for all attribute values in Name A | 5.1.4.5 DNs | |||
| and PrintableString types for all attribute values in Name B) | ||||
| "c=US, o=MIT, ou=cs" is subordinate to "c=US, o=MIT, ou=CS" if | ||||
| the verification software supports the full comparison | ||||
| algorithm in the X.500 series. "c=US, o=MIT, ou=cs" is NOT | ||||
| subordinate to "c=US, o=MIT, ou=CS" if the verification | ||||
| software supports the comparison algorithm in [RFC 2459]. | ||||
| - URIs: The constraints apply only to the host part of the | Name A is subordinate to Name B (in B's subtree), if Name A contains | |||
| name. Two variations are allowed: | all of Name B's name, treating attribute values encoded in different | |||
| types as different strings, ignoring case in PrintableString (in all | ||||
| other types case is not ignored), removing leading and trailing white | ||||
| space in PrintableString, and converting internal substrings of one | ||||
| or more consecutive white space characters to a single space. For | ||||
| example, (c is country, o is organization, ou is organizational unit, | ||||
| and cn is common name): | ||||
| - If the name constraint is specified as ".mit.edu", then Name | - Assuming PrinatString types for all attribute values in Name A | |||
| A is subordinate to Name B (in B's subtree) if Name A contains | and B, "c=US, o=MIT, ou=CS" is subordinate to "c=us, o=MIT, | |||
| all of Name B's name, with the addition of zero or more | ou=cs", as is "c=US, o=MIT, ou=CS, ou=adminstration". Another | |||
| additional host or domain names to the left of Name B's name. | example, "c=US, o=MIT, ou=CS, cn= John Doe" (note the white | |||
| That is, www.mit.edu is subordinate to .mit.edu, as is | spaces) is subordinate to "c=US, o=MIT, ou=CS, cn=John Doe". | |||
| curly.cs.mit.edu. However, mit.edu is not subordinate to | ||||
| .mit.edu. When the constraint begins with a "." it specifies a | ||||
| host. | ||||
| - If the name constraint is specified as "abc.mit.edu", then | - Assuming UTF8String types for all attribute values in Name A | |||
| Name A is subordinate to Name B (in B's subtree) if Name A | and B, "c=US, o=MIT, ou=CS, ou=administration" is subordinate | |||
| conatins all of Name B's name. No leftward expansion of the | to "c=US, o=MIT, ou=CS", but "c=US, o=MIT, ou=cs, | |||
| host or domain name is allowed. | ou=Adminstration". "c=US, o=MIT, ou=CS, cn= John Smith" (note | |||
| the white spaces) is not subordinate to "c=US, o=MIT, ou=CS, | ||||
| cn= John Smith". | ||||
| - iPaddresses: Two variations are allowed depending on the IP | - Assuming UTF8String types for all attribute values in Name A | |||
| version: | and PrintableString types for all attribute values in Name B, | |||
| "c=US, o=MIT, ou=cs" is subordinate to "c=US, o=MIT, ou=CS" if | ||||
| the verification software supports the full comparison | ||||
| algorithm in the X.500 series. "c=US, o=MIT, ou=cs" is NOT | ||||
| subordinate to "c=US, o=MIT, ou=CS" if the verification | ||||
| software supports the comparison algorithm in [FORMAT]. | ||||
| For IPv4 addresses: Name A (128.32.1.1 encoded as 80 20 01 01) | 5.1.4.6 URIs | |||
| is subordinate to Name B (128.32.1.0/255.255.255.0 encoded as | ||||
| 80 20 00 00 FF FF FF 00) (in B's subtree) if Name A falls | ||||
| within the net denoted in Name B's CIDR notation. | ||||
| For IPv6 addresses: Name A (4224.0.0.0.8.2048.8204.16762 | The constraints apply only to the host part of the name. Two | |||
| encoded as 10 80 00 00 00 00 00 00 00 08 08 00 20 0C 41 7A) is | variations are allowed: | |||
| subordinate to Name B (4224.0.0.0.8.2048.8204.0/ | ||||
| 65535.65535.65535.65535.65535.65535.65535.0 encoded as 10 80 00 | ||||
| 00 00 00 00 00 00 08 08 00 20 0C 00 00 FF FF FF FF FF FF FF FF | ||||
| FF FF FF FF FF FF 00 00) (in B's subtree) if Name A falls | ||||
| within the net denoted in Name B's CIDR notation. | ||||
| As [RFC 2459] does not define requirements for the name forms | - If the name constraint is specified as ".mit.edu", then Name A | |||
| is subordinate to Name B (in B's subtree) if Name A contains | ||||
| all of Name B's name, with the addition of zero or more | ||||
| additional host or domain names to the left of Name B's name. | ||||
| That is, www.mit.edu is subordinate to .mit.edu, as is | ||||
| curly.cs.mit.edu. However, mit.edu is not subordinate to | ||||
| .mit.edu. When the constraint begins with a "." it specifies a | ||||
| host. | ||||
| - If the name constraint is specified as "abc.mit.edu", then | ||||
| Name A is subordinate to Name B (in B's subtree) if Name A | ||||
| conatins all of Name B's name. No leftward expansion of the | ||||
| host or domain name is allowed. | ||||
| 5.1.4.7 iPaddresses | ||||
| Two variations are allowed depending on the IP version: | ||||
| - For IPv4 addresses: Name A (128.32.1.1 encoded as 80 20 01 01) | ||||
| is subordinate to Name B (128.32.1.0/255.255.255.0 encoded as | ||||
| 80 20 00 00 FF FF FF 00) (in B's subtree) if Name A falls | ||||
| within the net denoted in Name B's CIDR notation. | ||||
| - For IPv6 addresses: Name A (4224.0.0.0.8.2048.8204.16762 | ||||
| encoded as 10 80 00 00 00 00 00 00 00 08 08 00 20 0C 41 7A) is | ||||
| subordinate to Name B (4224.0.0.0.8.2048.8204.0/ | ||||
| 65535.65535.65535.65535.65535.65535.65535.0 encoded as 10 80 | ||||
| 00 00 00 00 00 00 00 08 08 00 20 0C 00 00 FF FF FF FF FF FF FF | ||||
| FF FF FF FF FF FF FF 00 00) (in B's subtree) if Name A falls | ||||
| within the net denoted in Name B's CIDR notation. | ||||
| 5.1.4.8 Others | ||||
| As [FORMAT] does not define requirements for the name forms | ||||
| otherName, ediPartyName, or registeredID there are no corresponding | otherName, ediPartyName, or registeredID there are no corresponding | |||
| name constraints requirements. | name constraints requirements. | |||
| 5.1.5 Wildcards in Name Forms | 5.1.5 Wildcards in Name Forms | |||
| A "wildcard" in a name form is a placeholder for a set of names; e.g. | A "wildcard" in a name form is a placeholder for a set of names; e.g. | |||
| "*.mit.edu" meaning "any domain name ending in .mit.edu", and | "*.mit.edu" meaning "any domain name ending in .mit.edu", and | |||
| *@aol.com meaning "email address that uses aol.com". There are many | *@aol.com meaning "email address that uses aol.com". There are many | |||
| people who believe that allowing wildcards in name forms in PKIX | people who believe that allowing wildcards in name forms in PKIX | |||
| certificates would be a useful thing to do, because it would allow a | certificates would be a useful thing to do, because it would allow a | |||
| single certificate to be used by all members of a group. These | single certificate to be used by all members of a group. These | |||
| members would presumably have attributes in common; e.g., access | members would presumably have attributes in common; e.g., access | |||
| rights to some set of resources, and so issuance of a certificate | rights to some set of resources, and so issuance of a certificate | |||
| with a wildcard for the group would simplify management. | with a wildcard for the group would simplify management. | |||
| After much discussion, the PKIX working group decided to permit the | After much discussion, the PKIX working group decided to permit the | |||
| use of wildcards in certificates. That is, it is permissible for a | use of wildcards in certificates. That is, it is permissible for a | |||
| PKIX-conformant CA to issue a certificate with a wildcard. However, | PKIX-conformant CA to issue a certificate with a wildcard. However, | |||
| the semantics of subject alternative names that include wildcard | the semantics of subject alternative names that include wildcard | |||
| characters are not addressed by PKIX. Applications with specific | characters are not addressed by PKIX. Applications with specific | |||
| requirements may use such names but must define the semantics. | requirements may use such names but must define the semantics. | |||
| 5.1.6 Name Encoding | 5.1.6 Name Encoding | |||
| A very important topic that consumed much of the WG's time was the | A very important topic that consumed much of the WG's time was the | |||
| implementation of the directory string choices. While the long term | implementation of the directory string choices. While the long term | |||
| goal of the IETF was clear, use UTF8String, the short term goals were | goal of the IETF was clear, use UTF8String, the short term goals were | |||
| not so clear. Many implementations only use PrintableString, others | not so clear. Many implementations only use PrintableString, others | |||
| use BMPString, and still others use Latin1String (ISO 8859-1) and tag | use BMPString, and still others use Latin1String (ISO 8859-1) and tag | |||
| it as TeletexString (there are others still). To ensure that there | it as TeletexString (there are others still). To ensure that there is | |||
| is consistency with encodings [RFC 2459] defines a set of rules for | consistency with encodings [FORMAT] defines a set of rules for the | |||
| the string choices. PrintableString was kept as the first choice | string choices. PrintableString was kept as the first choice because | |||
| because of it's widespread support by vendors. BMPString was the | of it's widespread support by vendors. BMPString was the second | |||
| second choice, also for it's widespread vendor support. Failing | choice, also for it's widespread vendor support. Failing support by | |||
| support by PrintableString and BMPString, UTF8String must be used. | PrintableString and BMPString, UTF8String must be used. In keeping | |||
| In keeping with the IETF mandate, UTF8String can be used at any time | with the IETF mandate, UTF8String can be used at any time if the CA | |||
| if the CA supports it. Also, processing implementations that wish to | supports it. Also, processing implementations that wish to support | |||
| support TeletexString should handle the entire ISO 8859-1 character | TeletexString should handle the entire ISO 8859-1 character set and | |||
| set and not just the Latin1String subset. | not just the Latin1String subset. | |||
| 5.2 POP | 5.2 POP | |||
| Proof of Possession, or POP, means that the CA is adequately | Proof of Possession, or POP, means that the CA is adequately | |||
| convinced that the entity requesting a certificate containing a | convinced that the entity requesting a certificate containing a | |||
| public key Y has access to the private key X corresponding to that | public key Y has access to the private key X corresponding to that | |||
| public key. | public key. | |||
| POP is important because it provides an appropriate level of | POP is important because it provides an appropriate level of | |||
| assurance in the correct operation of the PKI as a whole. At its | assurance in the correct operation of the PKI as a whole. At its | |||
| lowest level, POP counters the "self-inflicted denial of service"; | lowest level, POP counters the "self-inflicted denial of service"; | |||
| that is, an entity voluntarily getting a certificate that cannot be | that is, an entity voluntarily getting a certificate that cannot be | |||
| used to sign or encrypt/decrypt information. However, as the | used to sign or encrypt/decrypt information. However, as the | |||
| following two examples demonstrate, POP also counters less direct, | following two examples demonstrate, POP also counters less direct, | |||
| but more severe, threats: | but more severe, threats. | |||
| POP for signing keys: it is important to provide POP for keys used | 5.2.1 POP for Signing Keys | |||
| to sign material, in order to provide non-repudiation of | ||||
| transactions. For example, suppose Alice legitimately has private | ||||
| key X and its corresponding public key Y. Alice has a certificate | ||||
| from Charlie, a CA, containing Y. Alice uses X to sign a | ||||
| transaction T. Without POP, Mal could also get a certificate from | ||||
| Charlie containing the same public key, Y. Now, there are two | ||||
| possible threats: Mal could claim to have been the real signer of | ||||
| T; or Alice can falsely deny signing T, claiming that it was | ||||
| instead Mal. Since no one can reliably prove that Mal did or did | ||||
| not ever possess X, neither of these claims can be refuted, and | ||||
| thus the service provided by and the confidence in the PKI has | ||||
| been defeated. (Of course, if Mal really did possess X, Alice's | ||||
| private key, then no POP mechanism in the world will help, but | ||||
| that is a different problem.) | ||||
| One level of protection can be gained by having Alice, as the true | It is important to provide POP for keys used to sign material, in | |||
| signer of the transaction, include in the signed information her | order to provide non-repudiation of transactions. For example, | |||
| certificate or an identifier of her certificate (e.g., a hash of | suppose Alice legitimately has private key X and its corresponding | |||
| her certificate). This might make it more difficult for Mal to | public key Y. Alice has a certificate from Charlie, a CA, containing | |||
| claim authorship - he would have to assert that he incorrectly | Y. Alice uses X to sign a transaction T. Without POP, Mal could also | |||
| included Alice's certificate, rather than his own. However, it | get a certificate from Charlie containing the same public key, Y. | |||
| would not stop Alice from falsely repudiating her actions. Since | Now, there are two possible threats: Mal could claim to have been the | |||
| the certificate itself is a public item, Mal indeed could have | real signer of T; or Alice can falsely deny signing T, claiming that | |||
| inserted Alice's certificate into the signed transaction, and thus | it was instead Mal. Since no one can reliably prove that Mal did or | |||
| its presence does not indicate that Alice was the one who | did not ever possess X, neither of these claims can be refuted, and | |||
| participated in the now-repudiated transaction. The only reliable | thus the service provided by and the confidence in the PKI has been | |||
| way to stop this attack is to require that Mal prove he possesses | defeated. (Of course, if Mal really did possess X, Alice's private | |||
| X before his certificate is issued. | key, then no POP mechanism in the world will help, but that is a | |||
| different problem.) | ||||
| One level of protection can be gained by having Alice, as the true | ||||
| signer of the transaction, include in the signed information her | ||||
| certificate or an identifier of her certificate (e.g., a hash of her | ||||
| certificate). This might make it more difficult for Mal to claim | ||||
| authorship - he would have to assert that he incorrectly included | ||||
| Alice's certificate, rather than his own. However, it would not stop | ||||
| Alice from falsely repudiating her actions. Since the certificate | ||||
| itself is a public item, Mal indeed could have inserted Alice's | ||||
| certificate into the signed transaction, and thus its presence does | ||||
| not indicate that Alice was the one who participated in the now- | ||||
| repudiated transaction. The only reliable way to stop this attack is | ||||
| to require that Mal prove he possesses X before his certificate is | ||||
| issued. | ||||
| For signing keys used only for authentication, and not for non- | For signing keys used only for authentication, and not for non- | |||
| repudiation, the threat is lower because users may not care about | repudiation, the threat is lower because users may not care about | |||
| Alice's after-the-fact repudiation, and thus POP becomes less | Alice's after-the-fact repudiation, and thus POP becomes less | |||
| important. However, POP SHOULD still be done wherever feasible in | important. However, POP SHOULD still be done wherever feasible in | |||
| this environment, by either off-line or on-line means. | this environment, by either off-line or on-line means. | |||
| POP for key management keys: Similarly, POP for key management keys | 5.2.2 POP for Key Management Keys | |||
| (that is, keys used for either key agreement or key exchange) can | ||||
| help to prevent undermining confidence in the PKI. Suppose that Al | Similarly, POP for key management keys (that is, keys used for either | |||
| is a new instructor in the Computer Science Department of a local | key agreement or key exchange) can help to prevent undermining | |||
| University. Al has created a draft final exam for the Introduction | confidence in the PKI. Suppose that Al is a new instructor in the | |||
| to Networking course he is teaching. He wants to send a copy of the | Computer Science Department of a local University. Al has created a | |||
| draft final to Dorothy, the Department Head, for her review prior to | draft final exam for the Introduction to Networking course he is | |||
| giving the exam. This exam will of course be encrypted, as several | teaching. He wants to send a copy of the draft final to Dorothy, the | |||
| students have access to the computer system. However, a quick search | Department Head, for her review prior to giving the exam. This exam | |||
| of the certificate repository (e.g., search the repository for all | will of course be encrypted, as several students have access to the | |||
| records with subjectPublicKey=Dorothy's-value) turns up the fact that | computer system. However, a quick search of the certificate | |||
| several students have certificates containing the same public key | repository (e.g., search the repository for all records with | |||
| management key as Dorothy. At this point, if no POP has been done by | subjectPublicKey=Dorothy's-value) turns up the fact that several | |||
| the CA, Al has no way of knowing whether all of the students have | students have certificates containing the same public key management | |||
| simply created these certificates without knowing the corresponding | key as Dorothy. At this point, if no POP has been done by the CA, Al | |||
| private key (and thus it is safe to send the encrypted exam to | has no way of knowing whether all of the students have simply created | |||
| Dorothy), or whether the students have somehow acquired Dorothy's | these certificates without knowing the corresponding private key (and | |||
| private key (and thus it is certainly not safe to send the exam). | thus it is safe to send the encrypted exam to Dorothy), or whether | |||
| Thus, the service to be provided by the PKI - allowing users to | the students have somehow acquired Dorothy's private key (and thus it | |||
| communicate with one another, with confidence in who they are | is certainly not safe to send the exam). Thus, the service to be | |||
| communicating with - has been totally defeated. If the CA is | provided by the PKI - allowing users to communicate with one another, | |||
| providing POP, then either no students will have such certificates, | with confidence in who they are communicating with - has been totally | |||
| or Al can know with certainty that the students do indeed know | defeated. If the CA is providing POP, then either no students will | |||
| Dorothy's private key, and act accordingly. | have such certificates, or Al can know with certainty that the | |||
| students do indeed know Dorothy's private key, and act accordingly. | ||||
| CMP requires that POP be provided for all keys, either through on- | CMP requires that POP be provided for all keys, either through on- | |||
| line or out-of-band means. There are any number of ways to provide | line or out-of-band means. There are any number of ways to provide | |||
| POP, and the choice of which to use is a local matter. Additionally, | POP, and the choice of which to use is a local matter. Additionally, | |||
| a certificate requester can provide POP to either a CA or to an RA, | a certificate requester can provide POP to either a CA or to an RA, | |||
| if the RA can adequately assure the CA that POP has been performed. | if the RA can adequately assure the CA that POP has been performed. | |||
| Some of the acceptable ways to provide POP include: | Some of the acceptable ways to provide POP include: | |||
| Out-of-band means: | - Out-of-band means: | |||
| For keys generated by the CA or an RA (e.g., on a token such as a | - For keys generated by the CA or an RA (e.g., on a token such | |||
| smart card or PCMCIA card), possession of the token can provide | as a smart card or PCMCIA card), possession of the token can | |||
| adequate proof of possession of the private key. | provide adequate proof of possession of the private key. | |||
| For user-generated keys, another approach can be used in | - For user-generated keys, another approach can be used in | |||
| environments where "key recovery" requirements force the requester | environments where "key recovery" requirements force the | |||
| to provide a copy of the private key to the CA or an RA. In this | requester to provide a copy of the private key to the CA or | |||
| case, the CA will not issue the requested certificate until such | an RA. In this case, the CA will not issue the requested | |||
| time as the requester has provided the private key. This approach | certificate until such time as the requester has provided | |||
| is in general not recommended, as it is extremely risky (e.g., the | the private key. This approach is in general not | |||
| system designers need to figure out a way to protect the private | recommended, as it is extremely risky (e.g., the system | |||
| keys from compromise while they are being sent to the CA/RA/other | designers need to figure out a way to protect the private | |||
| authority, and how to protect them there), but it can be used. | keys from compromise while they are being sent to the | |||
| CA/RA/other authority, and how to protect them there), but | ||||
| it can be used. | ||||
| On-line means: | - On-line means: | |||
| For signature keys that are generated by an end-entity, the | - For signature keys that are generated by an end-entity, the | |||
| requester of a certificate can be required to sign some piece of | requester of a certificate can be required to sign some | |||
| data (typically, the certificate request itself) using the private | piece of data (typically, the certificate request itself) | |||
| key. The CA will then use the requested public key to verify the | using the private key. The CA will then use the requested | |||
| signature. If the signature verification works, the CA can safely | public key to verify the signature. If the signature | |||
| conclude that the requester had access to the private key. If the | verification works, the CA can safely conclude that the | |||
| signature verification process fails, the CA can conclude that the | requester had access to the private key. If the signature | |||
| requester did not have access to the correct private key, and | verification process fails, the CA can conclude that the | |||
| reject the request. | requester did not have access to the correct private key, | |||
| and reject the request. | ||||
| For key management keys that are generated by the requester, the | - For key management keys that are generated by the requester, | |||
| CA can send the user the requested public key, along with the CA's | the CA can send the user the requested public key, along | |||
| own private key, to encrypt some piece of data, and send it to the | with the CA's own private key, to encrypt some piece of | |||
| requester to be decrypted. For example, the CA can generate some | data, and send it to the requester to be decrypted. For | |||
| random challenge, and require some action to be taken after | example, the CA can generate some random challenge, and | |||
| decryption (e.g., "decrypt this encrypted random number and send | require some action to be taken after decryption (e.g., | |||
| it back to me"). If the requester does not take the requested | "decrypt this encrypted random number and send it back to | |||
| action, the CA concludes that the requester did not possess the | me"). If the requester does not take the requested action, | |||
| private key, and the certificate is not issued. | the CA concludes that the requester did not possess the | |||
| private key, and the certificate is not issued. | ||||
| Another method of providing POP for key management keys is for the | Another method of providing POP for key management keys is for the CA | |||
| CA to generate the requested certificate, and then send it to the | to generate the requested certificate, and then send it to the | |||
| requester in encrypted form. If the requester does not have | requester in encrypted form. If the requester does not have access to | |||
| access to the appropriate private key, the requester cannot | the appropriate private key, the requester cannot decrypt the | |||
| decrypt the certificate, and thus cannot use it. After some period | certificate, and thus cannot use it. After some period of time in | |||
| of time in which the certificate is not used, the CA will revoke | which the certificate is not used, the CA will revoke the | |||
| the certificate. (This only works if the certificate is not made | certificate. (This only works if the certificate is not made | |||
| available to any untrusted entities until after the requester has | available to any untrusted entities until after the requester has | |||
| successfully decrypted it.) | successfully decrypted it.) | |||
| 5.3 Key Usage Bits | 5.3 Key Usage Bits | |||
| The key usage extension defines the purpose (e.g., encipherment, | The key usage extension defines the purpose (e.g., encipherment, | |||
| signature, certificate signing) of the key contained in the | signature, certificate signing) of the key contained in the | |||
| certificate. This extension is used when a key that could be used for | certificate. This extension is used when a key that could be used for | |||
| more than one operation is to be restricted. For example, when an | more than one operation is to be restricted. For example, when an RSA | |||
| RSA key should be used only for signing, the digitalSignature and/or | key should be used only for signing, the digitalSignature and/or | |||
| nonRepudiation bits would be asserted. Likewise, when an RSA key | nonRepudiation bits would be asserted. Likewise, when an RSA key | |||
| should be used only for key management, the keyEncipherment bit would | should be used only for key management, the keyEncipherment bit would | |||
| be asserted. When used, this extension should be marked critical. | be asserted. When used, this extension should be marked critical. | |||
| The eight bits defined for this extension identify seven mechanisms | The eight bits defined for this extension identify seven mechanisms | |||
| and one service, namely: | and one service, namely: | |||
| - digitalSignature - nonRepudiation - keyEncipherment - | - digitalSignature | |||
| dataEncipherment - keyAgreement - keyCertSign - cRLSign - | - nonRepudiation | |||
| encipherOnly - decipherOnly | - keyEncipherment | |||
| - dataEncipherment | ||||
| - keyAgreement | ||||
| - keyCertSign | ||||
| - cRLSign | ||||
| - encipherOnly | ||||
| - decipherOnly | ||||
| According to [RFC 2459], bits in the KeyUsage type are used as | According to [FORMAT], bits in the KeyUsage type are used as follows: | |||
| follows: | ||||
| - The digitalSignature bit is asserted when the subject public key | - The digitalSignature bit is asserted when the subject public key is | |||
| is used to verify digital signatures that have purposes other than | used to verify digital signatures that have purposes other than | |||
| non-repudiation, certificate signature, and CRL signature. For | non-repudiation, certificate signature, and CRL signature. For | |||
| example, the digitalSignature bit is asserted when the subject | example, the digitalSignature bit is asserted when the subject | |||
| public key is used to provide authentication via the signing of | public key is used to provide authentication via the signing of | |||
| ephemeral data. | ephemeral data. | |||
| - The nonRepudiation bit is asserted when the subject public key | - The nonRepudiation bit is asserted when the subject public key is | |||
| is used to verify digital signatures used to provide a non- | used to verify digital signatures used to provide a non-repudiation | |||
| repudiation service which protects against the signing entity | service which protects against the signing entity falsely denying | |||
| falsely denying some action, excluding certificate or CRL signing. | some action, excluding certificate or CRL signing. | |||
| - The keyEncipherment bit is asserted when the subject public key | - The keyEncipherment bit is asserted when the subject public key is | |||
| is used for key transport. For example, when an RSA key is to be | used for key transport. For example, when an RSA key is to be used | |||
| used for key management, this bit must asserted. | for key management, this bit must asserted. | |||
| - The dataEncipherment bit is asserted when the subject public key | - The dataEncipherment bit is asserted when the subject public key is | |||
| is used for enciphering user data, other than cryptographic keys. | used for enciphering user data, other than cryptographic keys. | |||
| - The keyAgreement bit is asserted when the subject public key is | - The keyAgreement bit is asserted when the subject public key is | |||
| used for key agreement. For example, when a Diffie-Hellman key is | used for key agreement. For example, when a Diffie-Hellman key is | |||
| to be used for key management, this bit must asserted. | to be used for key management, this bit must asserted. | |||
| - The keyCertSign bit is asserted when the subject public key is | - The keyCertSign bit is asserted when the subject public key is used | |||
| used for verifying a signature on certificates. This bit may only | for verifying a signature on certificates. This bit may only be | |||
| be asserted in CA certificates. | asserted in CA certificates. | |||
| - The cRLSign bit is asserted when the subject public key is used | - The cRLSign bit is asserted when the subject public key is used for | |||
| for verifying a signature on revocation information (e.g., a CRL). | verifying a signature on revocation information (e.g., a CRL). | |||
| - The meaning of the encipherOnly bit is undefined in the absence | - The meaning of the encipherOnly bit is undefined in the absence of | |||
| of the keyAgreement bit. When the encipherOnly bit is asserted | the keyAgreement bit. When the encipherOnly bit is asserted and the | |||
| and the keyAgreement bit is also set, the subject public key may | keyAgreement bit is also set, the subject public key may be used | |||
| be used only for enciphering data while performing key agreement. | only for enciphering data while performing key agreement. | |||
| - The meaning of the decipherOnly bit is undefined in the absence | - The meaning of the decipherOnly bit is undefined in the absence of | |||
| of the keyAgreement bit. When the decipherOnly bit is asserted | the keyAgreement bit. When the decipherOnly bit is asserted and the | |||
| and the keyAgreement bit is also set, the subject public key may | keyAgreement bit is also set, the subject public key may be used | |||
| be used only for deciphering data while performing key agreement. | only for deciphering data while performing key agreement. | |||
| PKIX does not restrict the combinations of bits that may be set in an | PKIX does not restrict the combinations of bits that may be set in an | |||
| instantiation of the keyUsage extension. | instantiation of the keyUsage extension. | |||
| The discussion on the PKIX mailing list has centered on the | The discussion on the PKIX mailing list has centered on the | |||
| digitalSignature bit and the nonRepudiation bit. The question has | digitalSignature bit and the nonRepudiation bit. The question has | |||
| come down to something like: When support for the service of non- | come down to something like: When support for the service of non- | |||
| repudiation is desired, should both the digitalSignature and | repudiation is desired, should both the digitalSignature and | |||
| nonRepudiation bits be set, or just the nonRepudiation bit? | nonRepudiation bits be set, or just the nonRepudiation bit? | |||
| (It is noted that provision of the service of non-repudiation | (It is noted that provision of the service of non-repudiation | |||
| requires more than a single bit set in a certificate. It requires an | requires more than a single bit set in a certificate. It requires an | |||
| entire infrastructure of components to preserve for some period of | entire infrastructure of components to preserve for some period of | |||
| time the keys, certificates, revocation status, signed material, | time the keys, certificates, revocation status, signed material, | |||
| etc., as well as a trusted source of time. However, the | etc., as well as a trusted source of time. However, the | |||
| nonRepudiation key usage bit is provided as an indicator that such | nonRepudiation key usage bit is provided as an indicator that such | |||
| keys should not be used as a component of a system providing a non- | keys should not be used as a component of a system providing a non- | |||
| repudiation service.) | repudiation service.) | |||
| According to [SIMONETTI], the intent is that the digitalSignature bit | According to [SIMONETTI], the intent is that the digitalSignature bit | |||
| should be set when what is desired is the ability to sign ephemeral | should be set when what is desired is the ability to sign ephemeral | |||
| transactions; e.g., for a single session authentication. These | transactions; e.g., for a single session authentication. These | |||
| transactions are "ephemeral" in the sense that they are important | transactions are "ephemeral" in the sense that they are important | |||
| only while they are in existence; after the session is terminated, | only while they are in existence; after the session is terminated, | |||
| there is no long-term record of the digital signature and its | there is no long-term record of the digital signature and its | |||
| properties kept. When something is intended to be kept for some | properties kept. When something is intended to be kept for some | |||
| period of time, the nonRepudiation bit should be set. This generally | period of time, the nonRepudiation bit should be set. This generally | |||
| implies that an application will digitally sign something; thus, some | implies that an application will digitally sign something; thus, some | |||
| implementors turn on the digitalSignature bit as well. Other | implementors turn on the digitalSignature bit as well. Other | |||
| implementors, however, keep the two bits mutually exclusive, to | implementors, however, keep the two bits mutually exclusive, to | |||
| prevent a single key from being used for both ephemeral and long-term | prevent a single key from being used for both ephemeral and long-term | |||
| signing. | signing. | |||
| While [RFC 2459] is silent on this specific issue, the working | While [FORMAT] is silent on this specific issue, the working group's | |||
| group's general conclusion is that a certificate may have either or | general conclusion is that a certificate may have either or both bits | |||
| both bits set. If only the nonRepudiation bit is set, the key should | set. If only the nonRepudiation bit is set, the key should not be | |||
| not be used for ephemeral transactions. If only the digitalSignature | used for ephemeral transactions. If only the digitalSignature bit is | |||
| bit is set, the key should not be used for long-term signing. If | set, the key should not be used for long-term signing. If both bits | |||
| both bits are set, the key may be used for either purpose. | are set, the key may be used for either purpose. | |||
| To actually enforce this requires that an application understands | To actually enforce this requires that an application understands | |||
| whether it is signing ephemeral transactions or for the long-term. | whether it is signing ephemeral transactions or for the long-term. | |||
| The application developers will have to understand the difference, | The application developers will have to understand the difference, | |||
| and set up their checks on the key usage bits field accordingly. For | and set up their checks on the key usage bits field accordingly. For | |||
| example, TLS implementors should check only the digitalSignature bit, | example, TLS implementors should check only the digitalSignature bit, | |||
| and ignore the nonRepudiation bit. S/MIME implementors, though, will | and ignore the nonRepudiation bit. S/MIME implementors, though, will | |||
| have a difficult choice to make, since their application could be | have a difficult choice to make, since their application could be | |||
| used for either purpose, and they will generally accept signing using | used for either purpose, and they will generally accept signing using | |||
| keys associated with certificates having either or both bits being | keys associated with certificates having either or both bits being | |||
| turned on. Certification Authorities should know what applications | turned on. Certification Authorities should know what applications | |||
| they are providing certificates for, and provide certificates | they are providing certificates for, and provide certificates | |||
| according to the requirements of those applications. If CA's are | according to the requirements of those applications. If CA's are tied | |||
| tied into non-repudiation systems, they may treat certificates | into non-repudiation systems, they may treat certificates differently | |||
| differently when the nonRepudiation bit is turned on (e.g., store | when the nonRepudiation bit is turned on (e.g., store information | |||
| information associated with the certificate - like the user's | associated with the certificate - like the user's identification | |||
| identification provided during certificate registration, or | provided during certificate registration, or certificate generation | |||
| certificate generation date/time stamps - for longer periods of time, | date/time stamps - for longer periods of time, in more secure | |||
| in more secure environments). | environments). | |||
| The bottom line is that this is an area where PKI implementors are | The bottom line is that this is an area where PKI implementors are | |||
| somewhat limited in what they can do. The onus is on developers of | somewhat limited in what they can do. The onus is on developers of | |||
| certificate-using systems to understand their requirements and | certificate-using systems to understand their requirements and | |||
| request certificates with the appropriate bits set. | request certificates with the appropriate bits set. | |||
| 5.4 Trust Models | 5.4 Trust Models | |||
| (This section will describe the various trust models that PKIX can | (This section will describe the various trust models that PKIX can | |||
| support. It is important to note that PKIX is bound to neither a | support. It is important to note that PKIX is bound to neither a pure | |||
| pure hierarchical model a la PEM, nor a web of trust model a la PGP. | hierarchical model a la PEM, nor a web of trust model a la PGP. PKIX | |||
| PKIX can support either of those models, or any flavor in between. | can support either of those models, or any flavor in between. The | |||
| The implications of different trust models should be described: | implications of different trust models should be described: | |||
| - efficiency of revocation | - efficiency of revocation - certification path building - etc.) | |||
| - certification path building | ||||
| - etc.) | ||||
| 6 Acknowledgements | 6 Acknowledgements | |||
| A lot of the information in this document was taken from the PKIX | A lot of the information in this document was taken from the PKIX | |||
| source documents; the authors of those deserve the credit for their | source documents; the authors of those deserve the credit for their | |||
| own words. Other good material was taken from mail posted to the PKIX | own words. Other good material was taken from mail posted to the PKIX | |||
| working group mail list (ietf-pkix@imc.org). Among those with good | working group mail list (ietf-pkix@imc.org). Among those with good | |||
| things to say were (in alphabetical order, with apologies to anybody | things to say were (in alphabetical order, with apologies to anybody | |||
| we've missed): Sharon Boeyen, Santosh Chokhani, Warwick Ford, Russ | we've missed): Sharon Boeyen, Santosh Chokhani, Warwick Ford, Russ | |||
| Housley, Steve Kent, Ambarish Malpani, Matt Fite, Michael Myers, Tim | Housley, Steve Kent, Ambarish Malpani, Matt Fite, Michael Myers, Tim | |||
| Polk, Stefan Santesson, Dave Simonetti, and. | Polk, Stefan Santesson, Dave Simonetti, and. | |||
| 7 References | 7 References | |||
| [BERT1] McNeil, M., and Glassey, T., "Basic Event Representation | [BERT1] McNeil, M., and Glassey, T., "Basic Event Representation | |||
| Token," <draft-ietf-pkix-bert1-01.txt>, May 1999. | Token," <draft-ietf-pkix-bert1-01.txt>, May 1999. | |||
| [CACHE] "Internet Public Key Infrastructure: Caching the Online | [CACHE] "Internet Public Key Infrastructure: Caching the Online | |||
| Certificate Status Protocol," <draft-ieft-pkix-ocsp-caching-00.txt>, | Certificate Status Protocol," <draft-ieft-pkix-ocsp-caching-00.txt>, | |||
| April 1998. | April 1998. | |||
| [CMC] Myers, M., Liu, X., Fox, B., and Weinstein, J., "Certificate | [CMC] Myers, M., Liu, X., Fox, B., and Weinstein, J., "Certificate | |||
| Management Messages over CMS," <draft-ieft-pkix-cmc-04.txt>, May | Management Messages over CMS," <draft-ieft-pkix-cmc-04.txt>, May | |||
| 1999. | 1999. | |||
| [CMMF] Adams, C., and Myers, M., "Internet X.509 Public Key | [CMP] Adams, C., Farrell, S., "Internet X.509 Public Key | |||
| Infrastructure Certificate Management Message Formats," <draft-ietf- | Infrastructure Certificate Management Protocols", RFC 2510, March | |||
| pkixx-cmmf-02.txt>, July 1998. | 1999. | |||
| Note: This following document has expired. | ||||
| [CRS] Myers, M., Liu X., Fox B., Prafullchandra H., Weinstein J., " | ||||
| Certificate Request Syntax," <draft-ietf-smime-crs-00.txt>, November | ||||
| 1997. | ||||
| [CMS] R. Housley, "Cryptographic Message Syntax," <draft-ietf-smime- | [CMS] R. Housley, "Cryptographic Message Syntax," <draft-ietf-smime- | |||
| cms-13.txt>, April 1999. | cms-13.txt>, April 1999. | |||
| [CRMF] Myers, M., Adams, C., Solo, D., and Kemp, D., "Internet X.509 | ||||
| Certificate Request Message Format," RFC 2511, March 1999. | ||||
| [DCS] Adams, C., and Zuccherato, R., "Internet X.509 Public Key | [DCS] Adams, C., and Zuccherato, R., "Internet X.509 Public Key | |||
| Infrastructure Data Certification Server Protocols", <draft-ietf- | Infrastructure Data Certification Server Protocols", <draft-ietf- | |||
| pkix-dcs-00.txt>, 23 September 1998. | pkix-dcs-00.txt>, 23 September 1998. | |||
| [DHPOP] Prafullchandra, H., and Schaad, J., "Diffie-Hellman Proof- | ||||
| of-Possession Algorithms," <draft-ietf-pkix-dhpop-00.txt>, February | ||||
| 1999. | ||||
| [DNS] Mockapetris, P.V., "Domain names - concepts and facilities," | ||||
| RFC 1034, November 1987. | ||||
| [ECDSA] Bassham, L., Johnson, D., and Polk, W., "Internet x.509 | [ECDSA] Bassham, L., Johnson, D., and Polk, W., "Internet x.509 | |||
| Public Key Infrastructure: Representation of Elliptic Curve Digital | Public Key Infrastructure: Representation of Elliptic Curve Digital | |||
| Signature Algorithm (ECDSA) Keys and Signatures in Internet X.509 | Signature Algorithm (ECDSA) Keys and Signatures in Internet X.509 | |||
| Public Key Infrastructure Certificates," <draft-ietf-pkix-ipki- | Public Key Infrastructure Certificates," <draft-ietf-pkix-ipki- | |||
| ecdsa-01.txt>, November 1997 | ecdsa-01.txt>, November 1997. | |||
| [ETNPT] Namjoshi, P., "Internet X.509 Public Key Infrastructure | [ETNPT] Namjoshi, P., "Internet X.509 Public Key Infrastructure | |||
| Extending trust in non repudiation tokens in time," <draft-ietf-pkix- | Extending trust in non repudiation tokens in time," <draft-ietf- | |||
| extend-trust-non-repudiation-token-00.txt>, May 1999. | pkix-extend-trust-non-repudiation-token-00.txt>, May 1999. | |||
| [IP] Postel, J., "Internet Protocol," RFC 791, September 1981. | ||||
| [IPv6] Deering, S., and Hinden, R., "Internet Protocol, Version 6 | ||||
| [IPv6] Specification," RFC 1883, December 1995. | ||||
| [FORMAT] Housley, R., Ford, W., Polk, W., and Solo, D., "Internet | ||||
| X.509 Public Key Infrastructure Certificate and CRL Profile," RFC | ||||
| 2459, January 1999. | ||||
| [FTPHTTP] Housley, R., and Hoffman, P., "Internet X.509 Public Key | ||||
| Infrastructure Operational Protocols: FTP and HTTP," RFC 2585, July | ||||
| 1998. | ||||
| [KEA] Housley, R., and Polk, W., "Internet X.509 Public Key | ||||
| Infrastructure Representation of Key Exchange Algorithm (KEA) Keys in | ||||
| Internet X.509 Public Key Infrastructure Certificates," RFC 2528, | ||||
| March 1999. | ||||
| [LDAPv2] Yeong, Y., Howes, T., and Kille, S., "Lightweight Directory | ||||
| Access Protocol", RFC 1777, March 1995. | ||||
| [MISPC] Burr, W., Dodson, D., Nazario, N., and Polk, W., "MISPC | [MISPC] Burr, W., Dodson, D., Nazario, N., and Polk, W., "MISPC | |||
| Minimum Interoperability Specification for PKI Components, Version | Minimum Interoperability Specification for PKI Components, Version | |||
| 1", September 3, 1997 | 1", <http://csrc.nist.gov/pki/mispc/welcome.html> September 3, 1997. | |||
| [OCDP] Hallam-Baker, P., and Ford, W., "Internet X.509 Public Key | [OCDP] Hallam-Baker, P., and Ford, W., "Internet X.509 Public Key | |||
| Infrastructure Enhanced CRL Distribution Options (OpenCDP)," <draft- | Infrastructure Enhanced CRL Distribution Options (OpenCDP)," <draft- | |||
| ietf-pkix-ocdp-01.txt>, August 7, 1998 | ietf-pkix-ocdp-01.txt>, August 7, 1998. | |||
| [OCSP] Myers, M., Ankney, R., Malpani, A., Galperin, S., and Adams, | [OCSP] Myers, M., Ankney, R., Malpani, A., Galperin, S., and Adams, | |||
| C., "X.509 Internet Public Key Infrastructure Online Certificate | C., "X.509 Internet Public Key Infrastructure Online Certificate | |||
| Status Protocol - OCSP," <draft-ietf-pkix-ocsp-08.txt>, March 1999. | Status Protocol - OCSP," <draft-ietf-pkix-ocsp-08.txt>, March 1999. | |||
| [PEM] Kent, S., "Privacy Enhancement for Internet Electronic Mail: | ||||
| Part II: Certificate-Based Key Management," RFC 1422, February 1993. | ||||
| [PKCS10] RSA Laboratories, "The Public-Key Cryptography | [PKCS10] RSA Laboratories, "The Public-Key Cryptography | |||
| Standards(PKCS)", RSA Data Security Inc., Redwood City, California, | Standards(PKCS)," RSA Data Security Inc., Redwood City, California, | |||
| November 1993 Release. | November 1993 Release. | |||
| [DHPOP] Prafullchandra, H., and Schaad, J., "Diffie-Hellman Proof-of- | [PKI-LDAPv2] Boeyen, S., Howes, T., and Richard, P., "Internet X.509 | |||
| Possession Algorithms," <draft-ietf-pkix-dhpop-00.txt>, February | Public Key Infrastructure Operational Protocols - LDAPv2," RFC 2559, | |||
| 1999. | April 1999. | |||
| [QC] Santesson, S., Polk, W., and Gloeckner, P., "Internet X.509 | ||||
| Public Key Infrastructure Qualified Certificates", <draft-ietf-pkix- | ||||
| qc-00.txt>, 3 February 1999. | ||||
| [RFC 791] Postel, J., "Internet Protocol", September 1981. | ||||
| [RFC 822] Crocker, D., "Standard for the Format of ARPA Internet Text | ||||
| Messages", August 1982. | ||||
| [RFC 1034] Mockapetris, P.V., "Domain names - concepts and | ||||
| facilities", November 1987. | ||||
| [RFC 1422] Kent, S., "Privacy Enhancement for Internet Electronic | ||||
| Mail: Part II: Certificate-Based Key Management," February 1993. | ||||
| [RFC 1777] Yeong, Y., Howes, T., and Kille, S., "Lightweight | ||||
| Directory Access Protocol", March 1995 | ||||
| [RFC 1883] Deering, S., and Hinden, R., "Internet Protocol, Version 6 | ||||
| [IPv6] Specification", December 1995. | ||||
| [RFC 2459] Housley, R., Ford, W., Polk, W., and Solo, D., "Internet | ||||
| X.509 Public Key Infrastructure Certificate and CRL Profile," January | ||||
| 1999. | ||||
| [RFC 2510] Adams, C., Farrell, S., "Internet X.509 Public Key | ||||
| Infrastructure Certificate Management Protocols", March 1999. | ||||
| [RFC 2511] Myers, M., Adams, C., Solo, D., and Kemp, D., "Internet | ||||
| X.509 Certificate Request Message Format," RFC 2510, March 1999. | ||||
| [RFC 2527] Chokhani, S., and Ford, W., "Internet X.509 Public Key | [POLPRAC] Chokhani, S., and Ford, W., "Internet X.509 Public Key | |||
| Infrastructure Certificate Policy and Certification Practices | Infrastructure Certificate Policy and Certification Practices | |||
| Framework," RFC 2527, March 1999. | Framework," RFC 2527, March 1999. | |||
| [RFC 2528] Housley, R., and Polk, W., "Internet X.509 Public Key | [QC] Santesson, S., Polk, W., and Gloeckner, P., "Internet X.509 | |||
| Infrastructure Representation of Key Exchange Algorithm (KEA) Keys in | Public Key Infrastructure Qualified Certificates", <draft-ietf-pkix- | |||
| Internet X.509 Public Key Infrastructure Certificates," RFC 2528, | qc-00.txt>, 3 February 1999. | |||
| March 1999. | ||||
| [RFC 2559] Boeyen, S., Howes, T., and Richard, P., "Internet X.509 | ||||
| Public Key Infrastructure Operational Protocols - LDAPv2," RFC 2559, | ||||
| April 1999. | ||||
| [RFC 2585] Housley, R., and Hoffman, P., "Internet X.509 Public Key | [RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text | |||
| Infrastructure Operational Protocols: FTP and HTTP," RFC 2585, July | Messages," RFC 822, August 1982. | |||
| 1998. | ||||
| [RFC 2587] Boeyen, S., Howes, T., and Richard, P., "Internet X.509 | [SCHEMA] Boeyen, S., Howes, T., and Richard, P., "Internet X.509 | |||
| Public Key Infrastructure LDAPv2 Schema," RFC 2587, June 1999. | Public Key Infrastructure LDAPv2 Schema," RFC 2587, June 1999. | |||
| [SIMONETTI] Simonetti, D., "Re: German Key Usage", posting to ietf- | [SIMONETTI] Simonetti, D., "Re: German Key Usage", posting to ietf- | |||
| pkix@imc.org mailing list, 12 August 1998 | pkix@imc.org mailing list, 12 August 1998. | |||
| [TSP] Adams, C., Cain, P., Pinkas, D., and Zuccherato, R., "Internet | [TSP] Adams, C., Cain, P., Pinkas, D., and Zuccherato, R., "Internet | |||
| X.509 Public Key Infrastructure Time Stamp Protocols", <draft-ietf- | X.509 Public Key Infrastructure Time Stamp Protocols", <draft-ietf- | |||
| pkix-time-stamp-02.txt>, May 1999. | pkix-time-stamp-02.txt>, May 1999. | |||
| [WEB] Reddy, S., "WEB based Certificate Access Protocol-- | [WEB] Reddy, S., "WEB based Certificate Access Protocol-- | |||
| WebCAP/1.0," <draft-ietf-pkix-webcap-00.txt>, April 19, 1998 | WebCAP/1.0," <draft-ietf-pkix-webcap-00.txt>, April 19, 1998. | |||
| [X.509] ITU-T Recommendation X.509 (1997 E): Information Technology | [X.509] ITU-T Recommendation X.509 (1997 E): Information Technology - | |||
| - Open Systems Interconnection - The Directory: Authentication | Open Systems Interconnection - The Directory: Authentication | |||
| Framework, June 1997. | Framework, June 1997. | |||
| [X9.42] ANSI X9.42-199x, Public Key Cryptography for The Financial | [X9.42] ANSI X9.42-199x, Public Key Cryptography for The Financial | |||
| Services Industry: Agreement of Symmetric Algorithm Keys Using | Services Industry: Agreement of Symmetric Algorithm Keys Using | |||
| Diffie-Hellman (Working Draft), December 1997. | Diffie-Hellman (Working Draft), December 1997. | |||
| [X9.55] ANSI X9.55-1995, Public Key Cryptography For The Financial | [X9.55] ANSI X9.55-1995, Public Key Cryptography For The Financial | |||
| Services Industry: Extensions To Public Key Certificates And | Services Industry: Extensions To Public Key Certificates And | |||
| Certificate Revocation Lists, 8 December, 1995. | Certificate Revocation Lists, 8 December, 1995. | |||
| [X9.57] ANSI X9.57-199x, Public Key Cryptography For The Financial | [X9.57] ANSI X9.57-199x, Public Key Cryptography For The Financial | |||
| Services Industry: Certificate Management (Working Draft), 21 June, | Services Industry: Certificate Management (Working Draft), 21 June, | |||
| 1996. | 1996. | |||
| 8 Security Considerations | 8 Security Considerations | |||
| TBSL | TBSL | |||
| 9 Editor's Address | 9 Editor's Address | |||
| Alfred Arsenault U. S. Department of Defense 9800 Savage Road Suite | Alfred Arsenault U. S. Department of Defense 9800 Savage Road Suite | |||
| End of changes. 295 change blocks. | ||||
| 863 lines changed or deleted | 843 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||