diff options
Diffstat (limited to 'third_party/heimdal/doc/standardisation/draft-ietf-cat-kerberos-pk-init-18.txt')
-rw-r--r-- | third_party/heimdal/doc/standardisation/draft-ietf-cat-kerberos-pk-init-18.txt | 893 |
1 files changed, 893 insertions, 0 deletions
diff --git a/third_party/heimdal/doc/standardisation/draft-ietf-cat-kerberos-pk-init-18.txt b/third_party/heimdal/doc/standardisation/draft-ietf-cat-kerberos-pk-init-18.txt new file mode 100644 index 00000000000..f3c795f282b --- /dev/null +++ b/third_party/heimdal/doc/standardisation/draft-ietf-cat-kerberos-pk-init-18.txt @@ -0,0 +1,893 @@ +INTERNET-DRAFT Brian Tung +draft-ietf-cat-kerberos-pk-init-18.txt Clifford Neuman +Updates: RFC 1510bis USC/ISI +expires August 20, 2004 Matthew Hur + Ari Medvinsky + Microsoft Corporation + Sasha Medvinsky + Motorola, Inc. + John Wray + Iris Associates, Inc. + Jonathan Trostle + + Public Key Cryptography for Initial Authentication in Kerberos + +0. Status Of This Memo + +This document is an Internet-Draft and is in full conformance with +all provision of Section 10 of RFC 2026. Internet-Drafts are +working documents of the Internet Engineering Task Force (IETF), its +areas, and its working groups. Note that other groups may also +distribute working documents as Internet-Drafts. + +Internet-Drafts are draft documents valid for a maximum of six +months and may be updated, replaced, or obsoleted by other documents +at any time. It is inappropriate to use Internet-Drafts as +reference material or to cite them other than as "work in progress." + +The list of current Internet-Drafts can be accessed at +http://www.ietf.org/ietf/1id-abstracts.txt + +The list of Internet-Draft Shadow Directories can be accessed at +http://www.ietf.org/shadow.html + +The distribution of this memo is unlimited. It is filed as +draft-ietf-cat-kerberos-pk-init-18.txt and expires August 20, 2004. +Please send comments to the authors. + + +1. Abstract + +This draft describes protocol extensions (hereafter called PKINIT) +to the Kerberos protocol specification (RFC 1510bis [1]). These +extensions provide a method for integrating public key cryptography +into the initial authentication exchange, by passing cryptographic +certificates and associated authenticators in preauthentication data +fields. + + +2. Introduction + +A client typically authenticates itself to a service in Kerberos +using three distinct though related exchanges. First, the client +requests a ticket-granting ticket (TGT) from the Kerberos +authentication server (AS). Then, it uses the TGT to request a +service ticket from the Kerberos ticket-granting server (TGS). +Usually, the AS and TGS are integrated in a single device known as +a Kerberos Key Distribution Center, or KDC. (In this draft, we will +refer to both the AS and the TGS as the KDC.) Finally, the client +uses the service ticket to authenticate itself to the service. + +The advantage afforded by the TGT is that the user need only +explicitly request a ticket and expose his credentials once. The +TGT and its associated session key can then be used for any +subsequent requests. One implication of this is that all further +authentication is independent of the method by which the initial +authentication was performed. Consequently, initial authentication +provides a convenient place to integrate public-key cryptography +into Kerberos authentication. + +As defined, Kerberos authentication exchanges use symmetric-key +cryptography, in part for performance. (Symmetric-key cryptography +is typically 10-100 times faster than public-key cryptography, +depending on the public-key operations. [cite]) One cost of using +symmetric-key cryptography is that the keys must be shared, so that +before a user can authentication himself, he must already be +registered with the KDC. + +Conversely, public-key cryptography--in conjunction with an +established certification infrastructure--permits authentication +without prior registration. Adding it to Kerberos allows the +widespread use of Kerberized applications by users without requiring +them to register first--a requirement that has no inherent security +benefit. + +As noted above, a convenient and efficient place to introduce +public-key cryptography into Kerberos is in the initial +authentication exchange. This document describes the methods and +data formats for integrating public-key cryptography into Kerberos +initial authentication. Another document (PKCROSS) describes a +similar protocol for Kerberos cross-realm authentication. + + +3. Extensions + +This section describes extensions to RFC 1510bis for supporting the +use of public-key cryptography in the initial request for a ticket +granting ticket (TGT). + +Briefly, the following changes to RFC 1510bis are proposed: + + 1. If public-key authentication is indicated, the client sends + the user's public-key data and an authenticator in a + preauthentication field accompanying the usual request. + This authenticator is signed by the user's private + signature key. + + 2. The KDC verifies the client's request against its own + policy and certification authorities. + + 3. If the request passes the verification tests, the KDC + replies as usual, but the reply is encrypted using either: + + a. a randomly generated key, signed using the KDC's + signature key and encrypted using the user's encryption + key; or + + b. a key generated through a Diffie-Hellman exchange with + the client, signed using the KDC's signature key. + + Any key data required by the client to obtain the encryption + key is returned in a preauthentication field accompanying + the usual reply. + + 4. The client obtains the encryption key, decrypts the reply, + and then proceeds as usual. + +Section 3.1 of this document defines the necessary message formats. +Section 3.2 describes their syntax and use in greater detail. +Implementation of all specified formats and uses in these sections +is REQUIRED for compliance with PKINIT. + + +3.1. Definitions + + +3.1.1. Required Algorithms + +At minimum, PKINIT must be able to use the following algorithms: + + Reply key (or DH-derived key): AES256-CTS-HMAC-SHA1-96 etype + (as required by clarifications). + Signature algorithm: SHA-1 digest and RSA. + Reply key delivery method: ephemeral-ephemeral Diffie-Hellman + with a non-zero nonce. + Unkeyed checksum type for the paChecksum member of + PKAuthenticator: SHA1 (unkeyed). + + +3.1.2. Defined Message and Encryption Types + +PKINIT makes use of the following new preauthentication types: + + PA-PK-AS-REQ TBD + PA-PK-AS-REP TBD + PA-PK-OCSP-REQ TBD + PA-PK-OCSP-REP TBD + +PKINIT also makes use of the following new authorization data type: + + AD-INITIAL-VERIFIED-CAS TBD + +PKINIT introduces the following new error types: + + KDC_ERR_CLIENT_NOT_TRUSTED 62 + KDC_ERR_KDC_NOT_TRUSTED 63 + KDC_ERR_INVALID_SIG 64 + KDC_ERR_KEY_TOO_WEAK 65 + KDC_ERR_CERTIFICATE_MISMATCH 66 + KDC_ERR_CANT_VERIFY_CERTIFICATE 70 + KDC_ERR_INVALID_CERTIFICATE 71 + KDC_ERR_REVOKED_CERTIFICATE 72 + KDC_ERR_REVOCATION_STATUS_UNKNOWN 73 + KDC_ERR_CLIENT_NAME_MISMATCH 75 + +PKINIT uses the following typed data types for errors: + + TD-DH-PARAMETERS 102 + TD-TRUSTED-CERTIFIERS 104 + TD-CERTIFICATE-INDEX 105 + +PKINIT defines the following encryption types, for use in the AS-REQ +message (to indicate acceptance of the corresponding encryption OIDs +in PKINIT): + + dsaWithSHA1-CmsOID 9 + md5WithRSAEncryption-CmsOID 10 + sha1WithRSAEncryption-CmsOID 11 + rc2CBC-EnvOID 12 + rsaEncryption-EnvOID (PKCS1 v1.5) 13 + rsaES-OAEP-ENV-OID (PKCS1 v2.0) 14 + des-ede3-cbc-Env-OID 15 + +The above encryption types are used (in PKINIT) only within CMS [8] +structures within the PKINIT preauthentication fields. Their use +within Kerberos EncryptedData structures is unspecified. + + +3.1.3. Algorithm Identifiers + +PKINIT does not define, but does make use of, the following +algorithm identifiers. + +PKINIT uses the following algorithm identifier for Diffie-Hellman +key agreement [11]: + + dhpublicnumber + +PKINIT uses the following signature algorithm identifiers [8, 12]: + + sha-1WithRSAEncryption (RSA with SHA1) + md5WithRSAEncryption (RSA with MD5) + id-dsa-with-sha1 (DSA with SHA1) + +PKINIT uses the following encryption algorithm identifiers [12] for +encrypting the temporary key with a public key: + + rsaEncryption (PKCS1 v1.5) + id-RSAES-OAEP (PKCS1 v2.0) + +These OIDs are not to be confused with the encryption types listed +above. + +PKINIT uses the following algorithm identifiers [8] for encrypting +the reply key with the temporary key: + + des-ede3-cbc (three-key 3DES, CBC mode) + rc2-cbc (RC2, CBC mode) + +Again, these OIDs are not to be confused with the encryption types +listed above. + + +3.2. PKINIT Preauthentication Syntax and Use + +In this section, we describe the syntax and use of the various +preauthentication fields employed to implement PKINIT. + + +3.2.1. Client Request + +The initial authentication request (AS-REQ) is sent as per RFC +1510bis, except that a preauthentication field containing data +signed by the user's private signature key accompanies the request, +as follows: + + PA-PK-AS-REQ ::= SEQUENCE { + -- PAType TBD + signedAuthPack [0] ContentInfo, + -- Defined in CMS. + -- Type is SignedData. + -- Content is AuthPack + -- (defined below). + trustedCertifiers [1] SEQUENCE OF TrustedCAs OPTIONAL, + -- A list of CAs, trusted by + -- the client, used to certify + -- KDCs. + kdcCert [2] IssuerAndSerialNumber OPTIONAL, + -- Defined in CMS. + -- Identifies a particular KDC + -- certificate, if the client + -- already has it. + encryptionCert [3] IssuerAndSerialNumber OPTIONAL, + -- May identify the user's + -- Diffie-Hellman certificate, + -- or an RSA encryption key + -- certificate. + ... + } + + TrustedCAs ::= CHOICE { + caName [0] Name, + -- Fully qualified X.500 name + -- as defined in X.509 [11]. + issuerAndSerial [1] IssuerAndSerialNumber, + -- Identifies a specific CA + -- certificate, if the client + -- only trusts one. + ... + } + + AuthPack ::= SEQUENCE { + pkAuthenticator [0] PKAuthenticator, + clientPublicValue [1] SubjectPublicKeyInfo OPTIONAL + -- Defined in X.509, + -- reproduced below. + -- Present only if the client + -- is using ephemeral-ephemeral + -- Diffie-Hellman. + } + + PKAuthenticator ::= SEQUENCE { + cusec [0] INTEGER, + ctime [1] KerberosTime, + -- cusec and ctime are used as + -- in RFC 1510bis, for replay + -- prevention. + nonce [2] INTEGER, + -- Binds reply to request, + -- except is zero when client + -- will accept cached + -- Diffie-Hellman parameters + -- from KDC and MUST NOT be + -- zero otherwise. + -- MUST be < 2^32. + paChecksum [3] Checksum, + -- Defined in [15]. + -- Performed over KDC-REQ-BODY, + -- must be unkeyed. + ... + } + + IMPORTS + -- from X.509 + SubjectPublicKeyInfo, AlgorithmIdentifier, DomainParameters, + ValidationParms + FROM PKIX1Explicit88 { iso (1) identified-organization (3) + dod (6) internet (1) security (5) mechanisms (5) + pkix (7) id-mod (0) id-pkix1-explicit-88 (1) } + +The ContentInfo in the signedAuthPack is filled out as follows: + + 1. The eContent field contains data of type AuthPack. It MUST + contain the pkAuthenticator, and MAY also contain the + user's Diffie-Hellman public value (clientPublicValue). + + 2. The eContentType field MUST contain the OID value for + pkauthdata: { iso (1) org (3) dod (6) internet (1) + security (5) kerberosv5 (2) pkinit (3) pkauthdata (1)} + + 3. The signerInfos field MUST contain the signature of the + AuthPack. + + 4. The certificates field MUST contain at least a signature + verification certificate chain that the KDC can use to + verify the signature on the AuthPack. Additionally, the + client may also insert an encryption certificate chain, if + (for example) the client is not using ephemeral-ephemeral + Diffie-Hellman. + + 5. If a Diffie-Hellman key is being used, the parameters SHOULD + be chosen from the First or Second defined Oakley Groups. + (See RFC 2409 [c].) + + 6. The KDC may wish to use cached Diffie-Hellman parameters. + To indicate acceptance of caching, the client sends zero in + the nonce field of the pkAuthenticator. Zero is not a valid + value for this field under any other circumstances. Since + zero is used to indicate acceptance of cached parameters, + message binding in this case is performed instead using the + nonce in the main request. + + +3.2.2. Validation of Client Request + +Upon receiving the client's request, the KDC validates it. This +section describes the steps that the KDC MUST (unless otherwise +noted) take in validating the request. + +The KDC must look for a user certificate in the signedAuthPack. +If it cannot find one signed by a CA it trusts, it sends back an +error of type KDC_ERR_CANT_VERIFY_CERTIFICATE. The accompanying +e-data for this error is a SEQUENCE OF TypedData: + + TypedData ::= SEQUENCE { + -- As defined in RFC 1510bis. + data-type [0] INTEGER, + data-value [1] OCTET STRING + } + +For this error, the data-type is TD-TRUSTED-CERTIFIERS, and the +data-value is an OCTET STRING containing the DER encoding of + + TrustedCertifiers ::= SEQUENCE OF Name + +If, while verifying the certificate chain, the KDC determines that +the signature on one of the certificates in the signedAuthPack is +invalid, it returns an error of type KDC_ERR_INVALID_CERTIFICATE. +The accompanying e-data for this error is a SEQUENCE OF TypedData, +whose data-type is TD-CERTIFICATE-INDEX, and whose data-value is an +OCTET STRING containing the DER encoding of the index into the +CertificateSet field, ordered as sent by the client: + + CertificateIndex ::= INTEGER + -- 0 = first certificate (in + -- order of encoding), + -- 1 = second certificate, etc. + +If more than one signature is invalid, the KDC sends one TypedData +per invalid signature. + +The KDC MAY also check whether any of the certificates in the user's +chain have been revoked. If any of them have been revoked, the KDC +returns an error of type KDC_ERR_REVOKED_CERTIFICATE; if the KDC +attempts to determine the revocation status but is unable to do so, +it SHOULD return an error of type KDC_ERR_REVOCATION_STATUS_UNKNOWN. +The certificate or certificates affected are identified exactly as +for an error of type KDC_ERR_INVALID_CERTIFICATE (see above). + +If the certificate chain is successfully validated, but the user's +certificate is not authorized to the client's principal name in the +AS-REQ (when present), the KDC MUST return an error of type +KDC_ERR_CLIENT_NAME_MISMATCH. There is no accompanying e-data for +this error. + +Even if the chain is validated, and the names in the certificate and +the request match, the KDC may decide not to trust the client. For +example, the certificate may include (or not include) an Enhanced +Key Usage (EKU) OID in the extensions field. As a matter of local +policy, the KDC may decide to reject requests on the basis of the +absence or presence of specific EKU OIDs. In this case, the KDC +returns an error of type KDC_ERR_CLIENT_NOT_TRUSTED. For the +benefit of implementors, we define a PKINIT EKU OID as follows: +{ iso (1) org (3) dod (6) internet (1) security (5) kerberosv5 (2) +pkinit (3) pkekuoid (4) }. + +If the certificate chain and usage check out, but the client's +signature on the signedAuthPack fails to verify, the KDC returns an +error of type KDC_ERR_INVALID_SIG. There is no accompanying e-data +for this error. + +The KDC must check the timestamp to ensure that the request is not +a replay, and that the time skew falls within acceptable limits. +The recommendations for ordinary (that is, non-PKINIT) skew times +apply here. If the check fails, the KDC returns an error of type +KRB_AP_ERR_REPEAT or KRB_AP_ERR_SKEW, respectively. + +Finally, if the clientPublicValue is filled in, indicating that the +client wishes to use ephemeral-ephemeral Diffie-Hellman, the KDC +checks to see if the parameters satisfy its policy. If they do not, +it returns an error of type KDC_ERR_KEY_TOO_WEAK. The accompanying +e-data is a SEQUENCE OF TypedData, whose data-type is +TD-DH-PARAMETERS, and whose data-value is an OCTET STRING containing +the DER encoding of a DomainParameters (see above), including +appropriate Diffie-Hellman parameters with which to retry the +request. + +In order to establish authenticity of the reply, the KDC will sign +some key data (either the random key used to encrypt the reply in +the case of a KDCDHKeyInfo, or the Diffie-Hellman parameters used to +generate the reply-encrypting key in the case of a ReplyKeyPack). +The signature certificate to be used is to be selected as follows: + + 1. If the client included a kdcCert field in the PA-PK-AS-REQ, + use the referred-to certificate, if the KDC has it. If it + does not, the KDC returns an error of type + KDC_ERR_CERTIFICATE_MISMATCH. + + 2. Otherwise, if the client did not include a kdcCert field, + but did include a trustedCertifiers field, and the KDC + possesses a certificate issued by one of the listed + certifiers, use that certificate. if it does not possess + one, it returns an error of type KDC_ERR_KDC_NOT_TRUSTED. + + 3. Otherwise, if the client included neither a kdcCert field + nor a trustedCertifiers field, and the KDC has only one + signature certificate, use that certificate. If it has + more than one certificate, it returns an error of type + KDC_ERR_CERTIFICATE_MISMATCH. + + +3.2.3. KDC Reply + +Assuming that the client's request has been properly validated, the +KDC proceeds as per RFC 1510bis, except as follows. + +The user's name as represented in the AS-REP must be derived from +the certificate provided in the client's request. If the KDC has +its own mapping from the name in the certificate to a Kerberos name, +it uses that Kerberos name. + +Otherwise, if the certificate contains a SubjectAltName extension +with a KerberosName in the otherName field, it uses that name. + + AnotherName ::= SEQUENCE { + -- Defined in [11]. + type-id OBJECT IDENTIFIER, + value [0] EXPLICIT ANY DEFINED BY type-id + } + + KerberosName ::= SEQUENCE { + realm [0] Realm, + principalName [1] PrincipalName + } + +with OID + + krb5 OBJECT IDENTIFIER ::= { iso (1) org (3) dod (6) internet (1) + security (5) kerberosv5 (2) } + + krb5PrincipalName OBJECT IDENTIFIER ::= { krb5 2 } + +In this case, the realm in the ticket is that of the local realm (or +some other realm name chosen by that realm). Otherwise, the KDC +returns an error of type KDC_ERR_CLIENT_NAME_MISMATCH. + +In addition, the KDC MUST set the initial flag in the issued TGT +*and* add an authorization data of type AD-INITIAL-VERIFIED-CAS to +the TGT. The value is an OCTET STRING containing the DER encoding +of InitialVerifiedCAs: + + InitialVerifiedCAs ::= SEQUENCE OF SEQUENCE { + ca [0] Name, + ocspValidated [1] BOOLEAN, + ... + } + +The KDC MAY wrap any AD-INITIAL-VERIFIED-CAS data in AD-IF-RELEVANT +containers if the list of CAs satisfies the KDC's realm's policy. +(This corresponds to the TRANSITED-POLICY-CHECKED ticket flag.) +Furthermore, any TGS must copy such authorization data from tickets +used in a PA-TGS-REQ of the TGS-REQ to the resulting ticket, +including the AD-IF-RELEVANT container, if present. + +AP servers that understand this authorization data type SHOULD apply +local policy to determine whether a given ticket bearing such a type +(not contained within an AD-IF-RELEVANT container) is acceptable. +(This corresponds to the AP server checking the transited field when +the TRANSITED-POLICY-CHECKED flag has not been set.) If such a data +type *is* contained within an AD-IF-RELEVANT container, AP servers +still MAY apply local policy to determine whether the authorization +data is acceptable. + +The AS-REP is otherwise unchanged from RFC 1510bis. The KDC then +encrypts the reply as usual, but not with the user's long-term key. +Instead, it encrypts it with either a random encryption key, or a +key derived from a Diffie-Hellman exchange. Which is the case is +indicated by the contents of the PA-PK-AS-REP (note tags): + + PA-PK-AS-REP ::= CHOICE { + -- PAType YY (TBD) + dhSignedData [0] ContentInfo, + -- Type is SignedData. + -- Content is KDCDHKeyInfo + -- (defined below). + encKeyPack [1] ContentInfo, + -- Type is EnvelopedData. + -- Content is ReplyKeyPack + -- (defined below). + ... + } + +Note that PA-PK-AS-REP is a CHOICE: either a dhSignedData, or an +encKeyPack, but not both. The former contains data of type +KDCDHKeyInfo, and is used only when the reply is encrypted using a +Diffie-Hellman derived key: + + KDCDHKeyInfo ::= SEQUENCE { + subjectPublicKey [0] BIT STRING, + -- Equals public exponent + -- (g^a mod p). + -- INTEGER encoded as payload + -- of BIT STRING. + nonce [1] INTEGER, + -- Binds reply to request. + -- Exception: A value of zero + -- indicates that the KDC is + -- using cached values. + dhKeyExpiration [2] KerberosTime OPTIONAL, + -- Expiration time for KDC's + -- cached values. + ... + } + +The fields of the ContentInfo for dhSignedData are to be filled in +as follows: + + 1. The eContent field contains data of type KDCDHKeyInfo. + + 2. The eContentType field contains the OID value for + pkdhkeydata: { iso (1) org (3) dod (6) internet (1) + security (5) kerberosv5 (2) pkinit (3) pkdhkeydata (2) } + + 3. The signerInfos field contains a single signerInfo, which is + the signature of the KDCDHKeyInfo. + + 4. The certificates field contains a signature verification + certificate chain that the client may use to verify the + KDC's signature over the KDCDHKeyInfo.) It may only be left + empty if the client did not include a trustedCertifiers + field in the PA-PK-AS-REQ, indicating that it has the KDC's + certificate. + + 5. If the client and KDC agree to use cached parameters, the + KDC SHOULD return a zero in the nonce field and include the + expiration time of the cached values in the dhKeyExpiration + field. If this time is exceeded, the client SHOULD NOT use + the reply. If the time is absent, the client SHOULD NOT use + the reply and MAY resubmit a request with a non-zero nonce, + thus indicating non-acceptance of the cached parameters. + +The key is derived as follows: Both the KDC and the client calculate +the value g^(ab) mod p, where a and b are the client's and KDC's +private exponents, respectively. They both take the first k bits of +this secret value as a key generation seed, where the parameter k +(the size of the seed) is dependent on the selected key type, as +specified in the Kerberos crypto draft [15]. The seed is then +converted into a protocol key by applying to it a random-to-key +function, which is also dependent on key type. + +The protocol key is used to derive the integrity key Ki and the +encryption key Ke according to [15]. Ke and Ki are used to generate +the encrypted part of the AS-REP. + + 1. For example, if the encryption type is DES with MD4, k = 64 + bits and the random-to-key function consists of replacing + some of the bits with parity bits, according to FIPS PUB 74 + [cite]. In this case, the key derivation function for Ke is + the identity function, and Ki is not needed because the + checksum in the EncryptedData is not keyed. + + 2. If the encryption type is three-key 3DES with HMAC-SHA1, + k = 168 bits and the random-to-key function is + DES3random-to-key as defined in [15]. This function inserts + parity bits to create a 192-bit 3DES protocol key that is + compliant with FIPS PUB 74 [cite]. Ke and Ki are derived + from this protocol key according to [15] with the key usage + number set to 3 (AS-REP encrypted part). + +If the KDC and client are not using Diffie-Hellman, the KDC encrypts +the reply with an encryption key, packed in the encKeyPack, which +contains data of type ReplyKeyPack: + + ReplyKeyPack ::= SEQUENCE { + replyKey [0] EncryptionKey, + -- Defined in RFC 1510bis. + -- Used to encrypt main reply. + -- MUST be at least as large + -- as session key. + nonce [1] INTEGER, + -- Binds reply to request. + -- MUST be < 2^32. + ... + } + +The fields of the ContentInfo for encKeyPack MUST be filled in as +follows: + + 1. The innermost data is of type SignedData. The eContent for + this data is of type ReplyKeyPack. + + 2. The eContentType for this data contains the OID value for + pkrkeydata: { iso (1) org (3) dod (6) internet (1) + security (5) kerberosv5 (2) pkinit (3) pkrkeydata (3) } + + 3. The signerInfos field contains a single signerInfo, which is + the signature of the ReplyKeyPack. + + 4. The certificates field contains a signature verification + certificate chain, which the client may use to verify the + KDC's signature over the ReplyKeyPack.) It may only be left + empty if the client did not include a trustedCertifiers + field in the PA-PK-AS-REQ, indicating that it has the KDC's + certificate. + + 5. The outer data is of type EnvelopedData. The + encryptedContent for this data is the SignedData described + in items 1 through 4, above. + + 6. The encryptedContentType for this data contains the OID + value for id-signedData: { iso (1) member-body (2) us (840) + rsadsi (113549) pkcs (1) pkcs7 (7) signedData (2) } + + 7. The recipientInfos field is a SET which MUST contain exactly + one member of type KeyTransRecipientInfo. The encryptedKey + for this member contains the temporary key which is + encrypted using the client's public key. + + 8. Neither the unprotectedAttrs field nor the originatorInfo + field is required for PKINIT. + + +3.2.4. Validation of KDC Reply + +Upon receipt of the KDC's reply, the client proceeds as follows. If +the PA-PK-AS-REP contains a dhSignedData, the client obtains and +verifies the Diffie-Hellman parameters, and obtains the shared key +as described above. Otherwise, the message contains an encKeyPack, +and the client decrypts and verifies the temporary encryption key. +In either case, the client then decrypts the main reply with the +resulting key, and then proceeds as described in RFC 1510bis. + + +3.2.5. Support for OCSP + +OCSP (Online Certificate Status Protocol) [cite] allows the use of +on-line requests for a client or server to determine the validity of +each other's certificates. It is particularly useful for clients +authenticating each other across a constrained network. These +clients will not have to download the entire CRL to check for the +validity of the KDC's certificate. + +In these cases, the KDC generally has better connectivity to the +OCSP server, and it therefore processes the OCSP request and +response and sends the results to the client. The changes proposed +in this section allow a client to request an OCSP response from the +KDC when using PKINIT. This is similar to the way that OCSP is +handled in [cite]. + +OCSP support is provided in PKINIT through the use of additional +preauthentication data. The following new preauthentication types +are defined: + + PA-PK-OCSP-REQ ::= SEQUENCE { + -- PAType TBD + responderIDList [0] SEQUENCE of ResponderID OPTIONAL, + -- ResponderID is a DER-encoded + -- ASN.1 type defined in [cite] + requestExtensions [1] Extensions OPTIONAL + -- Extensions is a DER-encoded + -- ASN.1 type defined in [cite] + } + + PA-PK-OCSP-REP ::= SEQUENCE of OCSPResponse + -- OCSPResponse is a DER-encoded + -- ASN.1 type defined in [cite] + +A KDC that receives a PA-PK-OCSP-REQ MAY send a PA-PK-OCSP-REP. +KDCs MUST NOT send a PA-PK-OCSP-REP if they do not first receive a +PA-PK-OCSP-REQ from the client. The KDC may either send a cached +OCSP response or send an on-line request to the OCSP server. + +When using OCSP, the response is signed by the OCSP server, which is +trusted by the client. Depending on local policy, further +verification of the validity of the OCSP server may need to be done. + + +4. Security Considerations + +PKINIT raises certain security considerations beyond those that can +be regulated strictly in protocol definitions. We will address them +in this section. + +PKINIT extends the cross-realm model to the public-key +infrastructure. Anyone using PKINIT must be aware of how the +certification infrastructure they are linking to works. + +Also, as in standard Kerberos, PKINIT presents the possibility of +interactions between cryptosystems of varying strengths, and this +now includes public-key cryptosystems. Many systems, for example, +allow the use of 512-bit public keys. Using such keys to wrap data +encrypted under strong conventional cryptosystems, such as 3DES, may +be inappropriate. + +PKINIT calls for randomly generated keys for conventional +cryptosystems. Many such systems contain systematically "weak" +keys. For recommendations regarding these weak keys, see RFC +1510bis. + +PKINIT allows the use of a zero nonce in the PKAuthenticator when +cached Diffie-Hellman parameters are used. In this case, message +binding is performed using the nonce in the main request in the same +way as it is done for ordinary (that is, non-PKINIT) AS-REQs. The +nonce field in the KDC request body is signed through the checksum +in the PKAuthenticator, and it therefore cryptographically binds the +AS-REQ with the AS-REP. If cached parameters are also used on the +client side, the generated session key will be the same, and a +compromised session key could lead to the compromise of future +cached exchanges. It is desirable to limit the use of cached +parameters to just the KDC, in order to eliminate this exposure. + +Care should be taken in how certificates are chosen for the purposes +of authentication using PKINIT. Some local policies may require +that key escrow be applied for certain certificate types. People +deploying PKINIT should be aware of the implications of using +certificates that have escrowed keys for the purposes of +authentication. + +PKINIT does not provide for a "return routability" test to prevent +attackers from mounting a denial-of-service attack on the KDC by +causing it to perform unnecessary and expensive public-key +operations. Strictly speaking, this is also true of standard +Kerberos, although the potential cost is not as great, because +standard Kerberos does not make use of public-key cryptography. +It might be possible to address this using a preauthentication field +as part of the proposed Kerberos preauthenticatino framework. + + +5. Acknowledgements + +Some of the ideas on which this proposal is based arose during +discussions over several years between members of the SAAG, the IETF +CAT working group, and the PSRG, regarding integration of Kerberos +and SPX. Some ideas have also been drawn from the DASS system. +These changes are by no means endorsed by these groups. This is an +attempt to revive some of the goals of those groups, and this +proposal approaches those goals primarily from the Kerberos +perspective. Lastly, comments from groups working on similar ideas +in DCE have been invaluable. + + +6. Expiration Date + +This draft expires August 20, 2004. + + +7. Bibliography + +[1] J. Kohl, C. Neuman. The Kerberos Network Authentication Service +(V5). Request for Comments 1510. + +[2] B.C. Neuman, Theodore Ts'o. Kerberos: An Authentication Service +for Computer Networks, IEEE Communications, 32(9):33-38. September +1994. + +[3] M. Sirbu, J. Chuang. Distributed Authentication in Kerberos +Using Public Key Cryptography. Symposium On Network and Distributed +System Security, 1997. + +[4] B. Cox, J.D. Tygar, M. Sirbu. NetBill Security and Transaction +Protocol. In Proceedings of the USENIX Workshop on Electronic +Commerce, July 1995. + +[5] T. Dierks, C. Allen. The TLS Protocol, Version 1.0. Request +for Comments 2246, January 1999. + +[6] B.C. Neuman, Proxy-Based Authorization and Accounting for +Distributed Systems. In Proceedings of the 13th International +Conference on Distributed Computing Systems, May 1993. + +[7] ITU-T (formerly CCITT) Information technology - Open Systems +Interconnection - The Directory: Authentication Framework +Recommendation X.509 ISO/IEC 9594-8 + +[8] R. Housley. Cryptographic Message Syntax. +draft-ietf-smime-cms-13.txt, April 1999, approved for publication as +RFC. + +[9] PKCS #7: Cryptographic Message Syntax Standard. An RSA +Laboratories Technical Note Version 1.5. Revised November 1, 1993 + +[10] R. Rivest, MIT Laboratory for Computer Science and RSA Data +Security, Inc. A Description of the RC2(r) Encryption Algorithm. +March 1998. Request for Comments 2268. + +[11] R. Housley, W. Ford, W. Polk, D. Solo. Internet X.509 Public +Key Infrastructure, Certificate and CRL Profile, April 2002. +Request for Comments 3280. + +[12] B. Kaliski, J. Staddon. PKCS #1: RSA Cryptography +Specifications, October 1998. Request for Comments 2437. + +[13] ITU-T (formerly CCITT) Information Processing Systems - Open +Systems Interconnection - Specification of Abstract Syntax Notation +One (ASN.1) Rec. X.680 ISO/IEC 8824-1. + +[14] PKCS #3: Diffie-Hellman Key-Agreement Standard, An RSA +Laboratories Technical Note, Version 1.4, Revised November 1, 1993. + +[15] K. Raeburn. Encryption and Checksum Specifications for +Kerberos 5, October 2003. draft-ietf-krb-wg-crypto-06.txt. + +[16] S. Blake-Wilson, M. Nystrom, D. Hopwood, J. Mikkelsen, and +T. Wright. Transport Layer Security (TLS) Extensions, June 2003. +Request for Comments 3546. + +[17] M. Myers, R. Ankney, A. Malpani, S. Galperin, and C. Adams. +Internet X.509 Public Key Infrastructure: Online Certificate Status +Protocol - OCSP, June 1999. Request for Comments 2560. + + +8. Authors + +Brian Tung +Clifford Neuman +USC Information Sciences Institute +4676 Admiralty Way Suite 1001 +Marina del Rey CA 90292-6695 +Phone: +1 310 822 1511 +E-mail: {brian,bcn}@isi.edu + +Matthew Hur +Ari Medvinsky +Microsoft Corporation +One Microsoft Way +Redmond WA 98052 +Phone: +1 425 707 3336 +E-mail: matthur@microsoft.com, arimed@windows.microsoft.com + +Sasha Medvinsky +Motorola, Inc. +6450 Sequence Drive +San Diego, CA 92121 ++1 858 404 2367 +E-mail: smedvinsky@motorola.com + +John Wray +Iris Associates, Inc. +5 Technology Park Dr. +Westford, MA 01886 +E-mail: John_Wray@iris.com + +Jonathan Trostle +E-mail: jtrostle@world.std.com |