view Side-By-Side changes
draft-ietf-cat-kerberos-pk-init-15.txtdraft-ietf-cat-kerberos-pk-init-18.txt Clifford Neuman Updates: RFC 1510bis USC/ISI expiresMay 25, 2002August 20, 2004 Matthew HurCiscoAri MedvinskyKeen.com, Inc.Microsoft Corporation Sasha MedvinskyMotorolaMotorola, Inc. John Wray Iris Associates, Inc. Jonathan TrostleCiscoPublic Key Cryptography for Initial Authentication in Kerberos 0. Status Of This Memo This document is an Internet-Draft and is in full conformance with allprovisionsprovision 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 athttp://www.ietf.org/shadow.html. To learn the current status of any Internet-Draft, please check the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow Directories on ftp.ietf.org (US East Coast), nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim).http://www.ietf.org/shadow.html The distribution of this memo is unlimited. It is filed asdraft-ietf-cat-kerberos-pk-init-15.txt,draft-ietf-cat-kerberos-pk-init-18.txt and expiresMay 25, 2002.August 20, 2004. Please send comments to the authors. 1. Abstract Thisdocument definesdraft describes protocol extensions(PKINIT)(hereafter called PKINIT) to the Kerberos protocol specification (RFC 1510bis[1]) to[1]). These extensions provide a method forusingintegrating public key cryptographyduring initial authentication. The methods defined specifyinto thewaysinitial authentication exchange, by passing cryptographic certificates and associated authenticators inwhichpreauthentication datafields and error data fields in Kerberos messages are to be used to transport public key data.fields. 2. IntroductionThe popularity of public key cryptography has producedA client typically authenticates itself to adesire for its supportservice in Kerberos[2]. The advantages provided by public key cryptography include simplified key management (fromusing three distinct though related exchanges. First, the client requests a ticket-granting ticket (TGT) from the Kerberosperspective) andauthentication server (AS). Then, it uses theabilityTGT toleverage existingrequest a service ticket from the Kerberos ticket-granting server (TGS). Usually, the AS anddeveloping public key certification infrastructures. Public key cryptography can beTGS are integratedinto Kerberosin anumber of ways. One issingle 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 toassociateauthenticate 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 keypair with each realm, whichcan then be usedto facilitate cross-realm authentication;for any subsequent requests. One implication of this isthe topic of another draft proposal. Another waythat all further authentication is independent of the method by which the initial authentication was performed. Consequently, initial authentication provides a convenient place toallow users with public key certificates tointegrate public-key cryptography into Kerberos authentication. As defined, Kerberos authentication exchanges usethemsymmetric-key cryptography, ininitial authentication. Thispart for performance. (Symmetric-key cryptography is typically 10-100 times faster than public-key cryptography, depending on theconcernpublic-key operations. [cite]) One cost of using symmetric-key cryptography is that thecurrent document. PKINIT utilizes ephemeral-ephemeral Diffie-Hellman keys in combination with DSAkeysas the primary, required mechanism. Notemust be shared, so thatPKINIT supportsbefore 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 ofseparate signatureKerberized applications by users without requiring them to register first--a requirement that has no inherent security benefit. As noted above, a convenient andencryption keys. PKINIT enables accessefficient place toKerberos-secured services based onintroduce public-key cryptography into Kerberos is in the initial authenticationutilizing public key cryptography. PKINIT utilizes standard public key signatureexchange. This document describes the methods andencryptiondata formatswithin the standardfor integrating public-key cryptography into Kerberosmessages. The basic mechanism is as follows: The user sends an AS-REQ messageinitial authentication. Another document (PKCROSS) describes a similar protocol for Kerberos cross-realm authentication. 3. Extensions This section describes extensions to RFC 1510bis for supporting theKDC as before, except that if that user is tousepublic keyof public-key cryptography in the initialauthentication step, his certificate and a signature accompany the initialrequestin the preauthentication fields. Upon receipt of this request, the KDC verifies the certificate and issuesfor a ticket granting ticket(TGT) as before, except that(TGT). Briefly, theencPart fromfollowing changes to RFC 1510bis are proposed: 1. If public-key authentication is indicated, theAS-REP message carryingclient sends theTGT is now encrypted utilizing eitheruser's public-key data and an authenticator in aDiffie-Hellman derived key orpreauthentication field accompanying theuser's public key.usual request. Thismessageauthenticator isauthenticated utilizingsigned by thepublic keyuser's private signatureofkey. 2. The KDC verifies theKDC. Note that PKINIT does not requireclient's request against its own policy and certification authorities. 3. If theuse of certificates. A KDC may storerequest passes thepublic key of a principal as part of that principal's record. In this scenario,verification tests, the KDC replies as usual, but the reply is encrypted using either: a. a randomly generated key, signed using thetrusted party that vouches forKDC's signature key and encrypted using theprincipal (as inuser's encryption key; or b. astandard, non-cross realm, Kerberos environment). Thus, for any principal, the KDC may maintain a symmetric key, a public key, or both. The PKINIT specification may also be used askey generated through abuilding block for other specifications. PKINIT may be utilized to establish inter-realm keys forDiffie-Hellman exchange with thepurposes of issuing cross-realm service tickets. It may also be used to issue anonymous Kerberos ticketsclient, signed using theDiffie-Hellman option. Efforts are under way to draft specifications for these two application protocols. Additionally, the PKINIT specification may be used for direct peer to peer authentication without contacting a central KDC. This application of PKINIT is based on concepts introduced in [6, 7]. For direct client-to-server authentication,KDC's signature key. Any key data required by the clientuses PKINIT to authenticate to the end server (instead of a central KDC), which then issues a ticket for itself. This approach has an advantage over TLS [5] in that the server does not need to save state (cache session keys). Furthermore, an additional benefit is that Kerberos tickets can facilitate delegation (see [6]). 3. Proposed Extensions This section describes extensionstoRFC 1510bis for supporting the use of public key cryptography in the initial request for a ticket granting ticket (TGT). In summary,obtain thefollowing change to RFC 1510bis is proposed: * Users may authenticate using either a public key pair or a conventional (symmetric) key. If public key cryptography is used, publicencryption keydataistransportedreturned in a preauthenticationdata fields to help establish identity.field accompanying the usual reply. 4. Theuser presents a public key certificate andclient obtainsan ordinary TGT that may be used for subsequent authentication, with such authentication using only conventional cryptography.the encryption key, decrypts the reply, and then proceeds as usual. Section 3.1provides definitions to help specifyof this document defines the necessary message formats. Section 3.2 describesthe extensionstheir syntax and use in greater detail. Implementation of all specified formats and uses in these sections is REQUIRED forthe initial authentication method.compliance with PKINIT. 3.1. DefinitionsThe extensions involve new preauthentication fields; we introduce3.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-REQ14TBD PA-PK-AS-REP15 The extensionsTBD PA-PK-OCSP-REQ TBD PA-PK-OCSP-REP TBD PKINIT alsoinvolvemakes use of the following newerror types; we introduceauthorization 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 73KDC_ERR_REVOCATION_STATUS_UNAVAILABLE 74KDC_ERR_CLIENT_NAME_MISMATCH 75KDC_ERR_KDC_NAME_MISMATCH 76 We utilizePKINIT uses the following typed data types for errors:TD-PKINIT-CMS-CERTIFICATES 101 TD-KRB-PRINCIPALTD-DH-PARAMETERS 102TD-KRB-REALM 103TD-TRUSTED-CERTIFIERS 104 TD-CERTIFICATE-INDEX 105We utilizePKINIT defines the following encryptiontypes (which map directly to OIDs):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(PKCS#1(PKCS1 v1.5) 13 rsaES-OAEP-ENV-OID(PKCS#1(PKCS1 v2.0) 14 des-ede3-cbc-Env-OID 15These mappings are provided so that a client may send the appropriate enctypes in the AS-REQ message in order to indicate support for the corresponding OIDs (for performing PKINIT).The above encryption types areutilizedused (in PKINIT) only within CMS [8] structures within the PKINIT preauthentication fields. Their use withintheKerberos EncryptedDatastructurestructures is unspecified.In many cases,3.1.3. Algorithm Identifiers PKINITrequires the encoding of the X.500 name of a certificate authority as a Realm. When such a name appears as a realm it will be represented using the "Other" form of the realm name as specified in the naming constraints section of RFC 1510bis. For a realm derived from an X.500 name, NAMETYPE will have the value X500-RFC2253. The full realm name will appear as follows: <nametype> + ":" + <string> where nametype is "X500-RFC2253" and string is the result of doing an RFC2253 encoding of the distinguished name, i.e. "X500-RFC2253:" + RFC2253Encode(DistinguishedName) where DistinguishedName is an X.500 name, and RFC2253Encode is a function returing a readable UTF encoding of an X.500 name, as defined by RFC 2253 [11] (part of LDAPv3 [15]). Each component of a DistinguishedName is called a RelativeDistinguishedName, where a RelativeDistinguishedName is a SET OF AttributeTypeAndValue. RFC 2253does notspecify the order in which to encodedefine, but does make use of, theelements offollowing algorithm identifiers. PKINIT uses theRelativeDistinguishedName and so to ensure that this encoding is unique, we addfollowing algorithm identifier for Diffie-Hellman key agreement [11]: dhpublicnumber PKINIT uses the followingrule to those specified by RFC 2253: When converting a multi-valued RelativeDistinguishedName to a string, the output consists of the string encodings of each AttributeTypeAndValue, in the same order as specified by the DER encoding. Similarly, in cases where the KDC does not provide a specific policy-based mapping from the X.500 name or X.509 Version 3 SubjectAltName extension in the user's certificate to a Kerberos principal name, PKINIT requires the direct encoding of the X.500 name as a PrincipalName. In this case, the name-type of the principal name MUST be set to KRB_NT-X500-PRINCIPAL. This new name type is defined in RFC 1510bis as: KRB_NT_X500_PRINCIPAL 6 For this type, the name-string MUST be set as follows: RFC2253Encode(DistinguishedName) as described above. When this name type is used, the principal's realm MUST be set to the certificate authority's distinguished name using the X500-RFC2253 realm name format described earlier in this section. Note that the same string may be represented using several different ASN.1 data types. As the result, the reverse conversion from an RFC2253-encoded principal name back to an X.500 name may not be unique and may result in an X.500 name that is not the same as the original X.500 name found in the client certificate. RFC 1510bis describes an alternate encoding of an X.500 name into a realm name. However, as described in RFC 1510bis, the alternate encoding does not guarantee a unique mapping from a DistinguishedName inside a certificate into a realm name and similarly cannot be used to produce a unique principal name. PKINIT therefore uses an RFC 2253-based name mapping approach, as specified above. RFC 1510bis specifies the ASN.1 structure for PrincipalName as follows: PrincipalName ::= SEQUENCE { name-type[0] INTEGER, name-string[1] SEQUENCE OF GeneralString } The following rules relate to the the matching of PrincipalNames with regard to the PKI name constraints for CAs as laid out in RFC 2459 [12]. In order to be regarded as a match (for permitted and excluded name trees), the following MUST be satisfied. 1. If the constraint is given as a user plus realm name, or as a client principal name plus realm name (as specified in RFC 1510bis), the realm name MUST be valid (see 2.a-d below) and the match MUST be exact, byte for byte. 2. If the constraint is given only as a realm name, matching depends on the type of the realm: a. If the realm contains a colon (':') before any equal sign ('='), it is treated as a realm of type Other, and MUST match exactly, byte for byte. b. Otherwise, if the realm name conforms to rules regarding the format of DNS names, it is considered a realm name of type Domain. The constraint may be given as a realm name 'FOO.BAR', which matches any PrincipalName within the realm 'FOO.BAR' but not those in subrealms such as 'CAR.FOO.BAR'. A constraint of the form '.FOO.BAR' matches PrincipalNames in subrealms of the form 'CAR.FOO.BAR' but not the realm 'FOO.BAR' itself. c. Otherwise, the realm name is invalid and does not match under any conditions. 3.1.1. Encryption and Key Formats In the exposition below, we use the terms public key and private key generically. It should be understood that the term "public key" may be used to refer to either a public encryption key or a signature verification key, and that the term "private key" may be used to refer to either a private decryption key or a signature generation key. The fact that these are logically distinct does not preclude the assignment of bitwise identical keys for RSA keys. In the case of Diffie-Hellman, the key is produced from the agreed bit string as follows: * Truncate the bit string to the required length. * Apply the specific cryptosystem's random-to-key function. Appropriate key constraints for each valid cryptosystem are given in RFC 1510bis. 3.1.2. Algorithm Identifiers PKINIT does not define, but does permit, the algorithm identifiers listed below. 3.1.2.1. Signature Algorithm Identifiers The following signature algorithm identifiers specified in [8] and in [12] are used with PKINIT: id-dsa-with-sha1 (DSA with SHA1) md5WithRSAEncryption (RSA with MD5) sha-1WithRSAEncryption (RSA with SHA1) 3.1.2.2 Diffie-Hellman Key Agreement Algorithm Identifier The following algorithm identifier shall be used within the SubjectPublicKeyInfo data structure: dhpublicnumber This identifier and the associated algorithm parameters are specified in RFC 2459 [12]. 3.1.2.3. Algorithm Identifiers for RSA Encryption These algorithm identifiers are used inside the EnvelopedData data structure, for encrypting the temporary key with a public key: rsaEncryption (RSA encryption, PKCS#1 v1.5) id-RSAES-OAEP (RSA encryption, PKCS#1 v2.0) Both of the above RSA encryption schemes are specified in [13]. Currently, only PKCS#1 v1.5 is specified by CMS [8], although the CMS specification says that it will likely include PKCS#1 v2.0 in the future. (PKCS#1 v2.0 addresses adaptive chosen ciphertext vulnerability discovered in PKCS#1 v1.5.) 3.1.2.4. Algorithm Identifiers for Encryption with Secret Keys These algorithm identifiers are used inside the EnvelopedData data structure in the PKINIT Reply, for encrypting the reply key with the temporary key: des-ede3-cbc (3-key 3-DES, CBC mode) rc2-cbc (RC2, CBC mode) The full definition of the above algorithm identifiers and their corresponding parameters (an IV for block chaining) is provided in the CMS specification [8]. 3.2. Public Key Authentication Implementation of the changes in this section is REQUIRED for compliance with PKINIT. 3.2.1. Client Request Public keys may be signed by some certification authority (CA), or they may be maintained by the KDC in which case the KDC is the trusted authority. Note that the latter mode does not require the use of certificates. The initial authentication request is sent as per RFC 1510bis, except that a preauthentication field containing data signed by the user's private key accompanies the request: PA-PK-AS-REQ ::= SEQUENCE { -- PA TYPE 14 signedAuthPack [0] ContentInfo, -- Defined in CMS [8]; -- SignedData OID is {pkcs7 2} -- AuthPack (below) defines the -- data that is signed. trustedCertifiers [1] SEQUENCE OF TrustedCas OPTIONAL, -- This is a list of CAs that the -- client trusts and that certify -- KDCs. kdcCert [2] IssuerAndSerialNumber OPTIONAL -- As defined in CMS [8]; -- specifies a particular KDC -- certificate if the client -- already has it. encryptionCert [3] IssuerAndSerialNumber OPTIONAL -- For example, this may be the -- client's Diffie-Hellman -- certificate, or it may be the -- client's RSA encryption -- certificate. } TrustedCas ::= CHOICE { principalName [0] KerberosName, -- as defined below caName [1] Name -- fully qualified X.500 name -- as defined by X.509 issuerAndSerial [2] IssuerAndSerialNumber -- Since a CA may have a number of -- certificates, only one of which -- a client trusts } The type of the ContentInfo in the signedAuthPack is SignedData. Its usage is as follows: The SignedData data type is specified in the Cryptographic Message Syntax, a product of the S/MIME working group of the IETF. The following describes how to fill in the fields of this data: 1. The encapContentInfo field MUST contain the PKAuthenticator and, optionally, the client's Diffie Hellman public value. a. 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) b. The eContent field is data of the type AuthPack (below). 2. The signerInfos field contains the signature of AuthPack. 3. The Certificates field, when non-empty, contains the client's certificate chain. If present, the KDC uses the public key from the client's certificate to verify the signature in the request. Note that the client may pass different certificate chains that are used for signing or for encrypting. Thus, the KDC may utilize a different client certificate forsignatureverification than the one italgorithm identifiers [8, 12]: sha-1WithRSAEncryption (RSA with SHA1) md5WithRSAEncryption (RSA with MD5) id-dsa-with-sha1 (DSA with SHA1) PKINIT usesto encrypt the reply to the client. For example, the client may place a Diffie-Hellman certificate in this field in order to convey its static Diffie Hellman certificate totheKDC to enable static-ephemeral Diffie-Hellman modefollowing encryption algorithm identifiers [12] for encrypting thereply; in this case, the client does NOT place its public value in the AuthPack (defined below). As another example, the client may place an RSA encryption certificate in this field. However, there MUST always be (at least) a signature certificate. 4. When a DHtemporary keyis being used, the public exponent is provided in the subjectPublicKey field of the SubjectPublicKeyInfo and the DH parameters are supplied as a DHParameter in the AlgorithmIdentitfier parameters. The DH paramters SHOULD be chosen from the First and Second defined Oakley Groups [The Internet Key Exchange (IKE) RFC-2409], if a server will not accept either of these groups, it will respond with a krb-error of KDC_ERR_KEY_TOO_WEAK and the e_data will contain a DHParameterwithappropriate parameters for the client to use. 5. The KDC may wish to use cached Diffie-Hellman parameters (see Section 3.2.2, KDC Response). To indicate acceptance of cached parameters, the client sends zero in the nonce field of the PKAuthenticator. Zero is notavalid value for this field under any other circumstances. If cached parameterspublic key: rsaEncryption (PKCS1 v1.5) id-RSAES-OAEP (PKCS1 v2.0) These OIDs areused,not to be confused with theclient andencryption types listed above. PKINIT uses theKDC MUST performfollowing algorithm identifiers [8] for encrypting the reply keyderivation (forwith theappropriate cryptosystem) ontemporary key: des-ede3-cbc (three-key 3DES, CBC mode) rc2-cbc (RC2, CBC mode) Again, these OIDs are not to be confused with theresultingencryptionkey,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 asspecified inper RFC1510bis. (With1510bis, except that azero nonce, message binding is performed usingpreauthentication field containing data signed by thenonce inuser's private signature key accompanies themainrequest,which must be encrypted using the encapsulated reply key.) AuthPackas follows: PA-PK-AS-REQ ::= SEQUENCE {pkAuthenticator-- PAType TBD signedAuthPack [0]PKAuthenticator, clientPublicValue [1] SubjectPublicKeyInfo OPTIONALContentInfo, --if clientDefined in CMS. -- Type isusing Diffie-HellmanSignedData. --(ephemeral-ephemeral only) } PKAuthenticator ::= SEQUENCE { cusec [0] INTEGER,Content is AuthPack --for replay prevention as in RFC 1510bis ctime(defined below). trustedCertifiers [1]KerberosTime,SEQUENCE OF TrustedCAs OPTIONAL, --for replay prevention as in RFC 1510bis nonceA list of CAs, trusted by -- the client, used to certify -- KDCs. kdcCert [2]INTEGER,IssuerAndSerialNumber OPTIONAL, --zero onlyDefined in CMS. -- Identifies a particular KDC -- certificate, if the clientwill accept -- cached DH parameters from KDC;--must be non-zero otherwise pachecksumalready has it. encryptionCert [3]ChecksumIssuerAndSerialNumber OPTIONAL, --Checksum over KDC-REQ-BODYMay identify the user's --Defined by Kerberos spec;Diffie-Hellman certificate, --must be unkeyed, e.g. sha1orrsa-md5an RSA encryption key -- certificate. ... }SubjectPublicKeyInfoTrustedCAs ::=SEQUENCECHOICE {algorithm AlgorithmIdentifier, -- dhKeyAgreement subjectPublicKey BIT STRINGcaName [0] Name, --for DH, equalsFully qualified X.500 name --public exponent (INTEGER encodedas defined in X.509 [11]. issuerAndSerial [1] IssuerAndSerialNumber, --as payload of BIT STRING) }Identifies a specific CA --as specified bycertificate, if theX.509 recommendation [7] AlgorithmIdentifierclient -- only trusts one. ... } AuthPack ::= SEQUENCE {algorithm OBJECT IDENTIFIER, -- for dhKeyAgreement, this ispkAuthenticator [0] PKAuthenticator, clientPublicValue [1] SubjectPublicKeyInfo OPTIONAL --{ iso (1) member-body (2) US (840)Defined in X.509, --rsadsi (113459) pkcs (1) 3 1 }reproduced below. --from PKCS #3 [17] parameters ANY DEFINED by algorithm OPTIONALPresent only if the client --for dhKeyAgreement, thisis using ephemeral-ephemeral --DHParameterDiffie-Hellman. }-- as specified by the X.509 recommendation [7] DHParameterPKAuthenticator ::= SEQUENCE {primecusec [0] INTEGER, ctime [1] KerberosTime, --p base INTEGER,cusec and ctime are used as --g privateValueLength INTEGER OPTIONALin RFC 1510bis, for replay --l }prevention. nonce [2] INTEGER, --as defined in PKCS #3 [17] If the client passes an issuer and serial number in theBinds reply to request,the KDC-- except isrequested to use the referred-to certificate. If none exists, then the KDC returns an error of type KDC_ERR_CERTIFICATE_MISMATCH. It also returns this error if, on the other hand, thezero when clientdoes not pass any trustedCertifiers, believing that it has the KDC's certificate, but the KDC has more than one certificate. The KDC should include information in the KRB-ERROR message that indicates the-- will accept cached -- Diffie-Hellman parameters -- from KDCcertificate(s) that a client may utilize. This data is specified in the e-data, which is definedand MUST NOT be -- zero otherwise. -- MUST be < 2^32. paChecksum [3] Checksum, -- Defined inRFC 1510bis revisions as a SEQUENCE of TypedData: TypedData ::= SEQUENCE { data-type [0] INTEGER, data-value [1] OCTET STRING,[15]. -- Performed over KDC-REQ-BODY, -- must be unkeyed. ... } IMPORTS --per Kerberos RFC 1510bis where: data-type = TD-PKINIT-CMS-CERTIFICATES = 101 data-value = CertificateSet // as specified by CMS [8]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) } ThePKAuthenticator carries information to foil replay attacks, to bindContentInfo in thepre-authenticationsignedAuthPack is filled out as follows: 1. The eContent field contains datatoof type AuthPack. It MUST contain theKDC-REQ-BODY,pkAuthenticator, andto bindMAY also contain therequest and response.user's Diffie-Hellman public value (clientPublicValue). 2. ThePKAuthenticator is signed witheContentType 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 theclient'ssignaturekey. 3.2.2. KDC Response Upon receiptof theAS_REQ with PA-PK-AS-REQ pre-authentication type,AuthPack. 4. The certificates field MUST contain at least a signature verification certificate chain that the KDCattemptscan use to verify theuser'ssignature on the AuthPack. Additionally, the client may also insert an encryption certificatechain (userCert),chain, ifone(for example) the client isprovidednot 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 therequest. Thisnonce field of the pkAuthenticator. Zero isdone by verifyingnot 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 thecertification path againstnonce in theKDC's policymain request. 3.2.2. Validation oflegitimate certifiers. IfClient Request Upon receiving the client'scertificate chain contains no certificate signed by a CA trusted byrequest, theKDC, thenKDC 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 errormessageof type KDC_ERR_CANT_VERIFY_CERTIFICATE. The accompanying e-data for this error is a SEQUENCEof oneOF TypedData: TypedData(with type TD-TRUSTED-CERTIFIERS=104) whose::= 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 STRINGwhich iscontaining the DER encoding of TrustedCertifiers ::= SEQUENCE OFPrincipalName -- X.500 name encoded as a principal name -- see Section 3.1 IfName If, while verifyingathe certificatechainchain, the KDC determines that the signature on one of the certificates in theCertificateSet from thesignedAuthPackfails verification, then the KDCis invalid, it returns an error of type KDC_ERR_INVALID_CERTIFICATE. The accompanying e-data for this error is a SEQUENCEof one TypedData (with type TD-CERTIFICATE-INDEX=105)OF TypedData, whose data-type is TD-CERTIFICATE-INDEX, and whose data-value is an OCTET STRINGwhich iscontaining the DER encoding of the index into the CertificateSet field, ordered as sent by theclient.client: CertificateIndex ::= INTEGER -- 0 =1st certificate, --first certificate (in -- order ofencoding)encoding), -- 1 =2ndsecond certificate,etcetc. If more than one signature is invalid, the KDC sends one TypedData per invalid signature. The KDCmayMAY also check whether any of the certificates in theclient'suser's chainhashave been revoked. Ifoneany ofthe certificates hasthem have been revoked,thenthe KDC returns an error of type KDC_ERR_REVOKED_CERTIFICATE; ifsuch a query reveals thatthecertificate'sKDC attempts to determine the revocation status but isunknown or not available, then if required by policy, the KDC returns the appropriateunable to do so, it SHOULD return an error of typeKDC_ERR_REVOCATION_STATUS_UNKNOWNKDC_ERR_REVOCATION_STATUS_UNKNOWN. The certificate orKDC_ERR_REVOCATION_STATUS_UNAVAILABLE. In any of these three cases, thecertificates affectedcertificate isare identifiedby the accompanying e-data, which contains a CertificateIndexexactly asdescribedforKDC_ERR_INVALID_CERTIFICATE.an error of type KDC_ERR_INVALID_CERTIFICATE (see above). If the certificate chaincan be verified,is successfully validated, but thename of the client in theuser's certificatedoesis notmatchauthorized to the client's principal name in therequest, thenAS-REQ (when present), the KDCreturnsMUST return an error of type KDC_ERR_CLIENT_NAME_MISMATCH. There is no accompanying e-datafield infor thiscase.error. Even ifall succeeds,the chain is validated, and the names in the certificate and the request match, the KDCmay--for policy reasons--decidemay 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 errormessageof type KDC_ERR_CLIENT_NOT_TRUSTED.One specific case of this is the presence or absence of an Enhanced Key Usage (EKU) OID within the certificate extensions. The rules regarding acceptability of an EKU sequence (or the absence of any sequence) are a matter of local policy.For the benefit ofimplementers,implementors, we define a PKINIT EKU OID asthe following:follows: { iso (1) org (3) dod (6) internet (1) security (5) kerberosv5 (2) pkinit (3) pkekuoid(2).(4) }. Ifa trust relationship exists,theKDC then verifiescertificate chain and usage check out, but the client's signature onAuthPack. If that fails,the signedAuthPack fails to verify, the KDC returns an errormessageof type KDC_ERR_INVALID_SIG.Otherwise, theThere is no accompanying e-data for this error. The KDCusesmust check the timestamp(ctime and cusec) in the PKAuthenticatortoassureensure that the request is not areplay. The KDC also verifiesreplay, and thatits name is specified inthePKAuthenticator.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 clientPublicValuefieldis filled in, indicating that the client wishes to useDiffie-Hellman key agreement, thenephemeral-ephemeral Diffie-Hellman, the KDC checks to seethatif the parameters satisfy its policy. If they donot (e.g., the prime size is insufficient for the expected encryption type), then the KDC sends backnot, it returns an errormessageof typeKDC_ERR_KEY_TOO_WEAK, with anKDC_ERR_KEY_TOO_WEAK. The accompanying e-datacontainingis astructure of type DHParameter with appropriate DH parameters for the client to retry the request. Otherwise, it generates its own public and private values for the response. The KDC also checks that the timestamp in the PKAuthenticatorSEQUENCE OF TypedData, whose data-type iswithin the allowable window and that the principal name and realm are correct. If the local (server) timeTD-DH-PARAMETERS, andthe client time in the authenticator differ by more than the allowable clock skew, then the KDC returns an error message of type KRB_AP_ERR_SKEW as defined in RFC 1510bis. Assuming no errors, the KDC replies as per RFC 1510bis, except as follows. The user's name in the ticketwhose data-value isdetermined by the following decision algorithm: 1. Ifan OCTET STRING containing theKDC hasDER encoding of amapping from the name in the certificateDomainParameters (see above), including appropriate Diffie-Hellman parameters with which toa Kerberos name, then use that name. Else 2. Ifretry thecertificate containsrequest. In order to establish authenticity of theSubjectAltName extention andreply, thelocalKDCpolicy defines a mapping fromwill sign some key data (either theSubjectAltNamerandom key used toa Kerberos name, then use that name. Else 3. Useencrypt thename as representedreply in thecertificate, mapping as necessary (e.g., as per RFC 2253 for X.500 names). In thiscasethe realm in the ticket MUST be the nameof a KDCDHKeyInfo, or thecertifier that issuedDiffie-Hellman parameters used to generate theuser's certificate. Note that a principal name may be carriedreply-encrypting key in thesubjectAltName fieldcase of acertificate. This name mayReplyKeyPack). The signature certificate to bemappedused is to be selected as follows: 1. If the client included aprincipal recordkdcCert field ina security database based on local policy, for examplethesubjectAltName may be kerberos/principal@realm format. In this casePA-PK-AS-REQ, use therealm name is not thatreferred-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 theCAclient 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 thelocal realm doingclient included neither a kdcCert field nor a trustedCertifiers field, and themapping (or some realm name chosen byKDC has only one signature certificate, use thatrealm).certificate. Ifa non-KDC X.509 certificate containsit has more than one certificate, it returns an error of type KDC_ERR_CERTIFICATE_MISMATCH. 3.2.3. KDC Reply Assuming that theprincipal name withinclient's request has been properly validated, thesubjectAltName version 3 extension, thatKDC proceeds as per RFC 1510bis, except as follows. The user's namemay utilize KerberosNameasdefined below, or,represented in thecase of an S/MIMEAS-REP must be derived from the certificate[14], may utilizeprovided in theemail address.client's request. If the KDCis presented with an S/MIME certificate, then the email address within subjectAltName will be interpreted as a principal and realm separated byhas its own mapping from the"@" sign, or as anamethat needs to be mapped according to local policy. Ifin theresulting name does not correspondcertificate to aregistered principalKerberos name,thenit uses that Kerberos name. Otherwise, if theprincipal name is formed as defined in section 3.1. The trustedCertifiers fieldcertificate contains alist of certification authorities trusted by the client,SubjectAltName extension with a KerberosName in thecaseotherName 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, theclient does not possessrealm in theKDC's public key certificate. Ifticket is that of theKDC has no certificate signedlocal realm (or some other realm name chosen byany ofthat realm). Otherwise, thetrustedCertifiers, then itKDC returns an error of typeKDC_ERR_KDC_NOT_TRUSTED. KDCs should try to (in order of preference): 1. UseKDC_ERR_CLIENT_NAME_MISMATCH. In addition, the KDCcertificate identified byMUST set theserialNumber includedinitial 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 theclient's request. 2. Use a certificate issuedKDC's realm's policy. (This corresponds to theKDC by oneTRANSITED-POLICY-CHECKED ticket flag.) Furthermore, any TGS must copy such authorization data from tickets used in a PA-TGS-REQ of theclient's trustedCertifier(s); IfTGS-REQ to theKDCresulting 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) isunableacceptable. (This corresponds tocomply with any of these options, thentheKDC returns an error message ofAP server checking the transited field when the TRANSITED-POLICY-CHECKED flag has not been set.) If such a data typeKDC_ERR_KDC_NOT_TRUSTED*is* contained within an AD-IF-RELEVANT container, AP servers still MAY apply local policy to determine whether theclient.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-termkey, butkey. Instead, it encrypts it withthe Diffie Hellman derived key oreither a random encryption key, or a keygenerated for this particular response whichderived from a Diffie-Hellman exchange. Which iscarried inthepadata fieldcase is indicated by the contents of theTGS-REP message.PA-PK-AS-REP (note tags): PA-PK-AS-REP ::= CHOICE { --PA TYPE 15PAType YY (TBD) dhSignedData [0] ContentInfo, --Defined in CMS [8] and used only with -- Diffie-Hellman key exchange (if the -- client public value was present in the -- request). -- SignedData OIDType is{pkcs7 2}SignedData. --This choice MUST be supportedContent is KDCDHKeyInfo --by compliant implementations.(defined below). encKeyPack [1]ContentInfo -- Defined in CMS [8]. -- The temporary key is encrypted -- using the client public key -- key. -- EnvelopedData OID is {pkcs7 3} -- SignedReplyKeyPack, encrypted -- with the temporary key, is alsoContentInfo, --included. } The type of the ContentInfo in the dhSignedData is SignedData. Its usage is as follows: When the Diffie-Hellman option is used, dhSignedData in PA-PK-AS-REP provides authenticated Diffie-Hellman parameters of the KDC. The reply key used to encrypt part of the KDC reply messageType isderived from the Diffie-Hellman exchange: 1. Both the KDC and the client calculate a secret value (g^ab mod p), where aEnvelopedData. -- Content isthe client's private exponent and bReplyKeyPack -- (defined below). ... } Note that PA-PK-AS-REP isthe KDC's private exponent. 2. Both the KDC and the client take the first N bitsa CHOICE: either a dhSignedData, or an encKeyPack, but not both. The former contains data ofthis secret valuetype KDCDHKeyInfo, andconvert it into a reply key. N depends on the reply key type. a. For example, ifis used only when the replykeyisDES, N=64 bits, where someencrypted using a Diffie-Hellman derived key: KDCDHKeyInfo ::= SEQUENCE { subjectPublicKey [0] BIT STRING, -- Equals public exponent -- (g^a mod p). -- INTEGER encoded as payload -- ofthe bits are replaced with parity bits, accordingBIT STRING. nonce [1] INTEGER, -- Binds reply toFIPS PUB 74. b. As another example, ifrequest. -- Exception: A value of zero -- indicates that thereply keyKDC is(3-key) 3-DES, N=192 bits, where some-- using cached values. dhKeyExpiration [2] KerberosTime OPTIONAL, -- Expiration time for KDC's -- cached values. ... } The fields of thebitsContentInfo for dhSignedData arereplaced with parity bits, accordingtoFIPS PUB 74. 3.be filled in as follows: 1. TheencapContentInfoeContent fieldMUST contain the KdcDHKeyInfo as defined below. a.contains data of type KDCDHKeyInfo. 2. The eContentType fieldMUST containcontains the OID value for pkdhkeydata: { iso (1) org (3) dod (6) internet (1) security (5) kerberosv5 (2) pkinit (3) pkdhkeydata (2)b.} 3. TheeContentsignerInfos field contains a single signerInfo, which isdatathe signature of thetype KdcDHKeyInfo (below).KDCDHKeyInfo. 4. The certificates fieldMUST contain the certificates necessary forcontains a signature verification certificate chain that the client may use toestablish trust inverify the KDC'scertificate based on the list of trusted certifiers sent by the client insignature over thePA-PK-AS-REQ. This fieldKDCDHKeyInfo.) It may only be left empty if the client did notsend to the KDC a list of trusted certifiers (the trustedCertifiers field was empty, meaning that the client already possesses the KDC's certificate). 5. The signerInfos field isinclude aSETtrustedCertifiers field in the PA-PK-AS-REQ, indicating thatMUST contain at least one member, sinceitcontainshas theactual signature. 6.KDC's certificate. 5. If the clientindicated acceptance of cached Diffie-Hellman parameters from the KDC,andtheKDCsupports such an option (for performance reasons),agree to use cached parameters, the KDCshouldSHOULD return a zero in the nonce field and include the expiration time of theparameterscached 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-zerononce (thusnonce, thus indicating non-acceptance of the cachedDiffie-Hellman parameters). As indicated above in Section 3.2.1, Client Request, whenparameters. The key is derived as follows: Both the KDCuses cached parameters,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, theKDC MUST performkey derivation(forfunction 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, theappropriate cryptosystem) onKDC encrypts theresultingreply with an encryption key,as specifiedpacked inRFC 1510bis. KdcDHKeyInfothe encKeyPack, which contains data of type ReplyKeyPack: ReplyKeyPack ::= SEQUENCE {-- used only when utilizing Diffie-Hellman subjectPublicKeyreplyKey [0]BIT STRING,EncryptionKey, --Equals public exponent (g^a mod p)Defined in RFC 1510bis. --INTEGER encodedUsed to encrypt main reply. -- MUST be at least aspayload oflarge --BIT STRINGas session key. nonce [1] INTEGER, -- Bindsresponse to the request -- Exception: Setreply tozero when KDC -- is using a cached DH value dhKeyExpiration [2] KerberosTime OPTIONAL -- Expiration time for KDC's cachedrequest. --DH valueMUST be < 2^32. ... } Thetypefields of the ContentInfoin thefor encKeyPackis EnvelopedData. Its usage isMUST be filled in as follows:The EnvelopedData data type is specified in the Cryptographic Message Syntax, a product of the S/MIME working group of the IETF. It contains a temporary key encrypted with the PKINIT client's public key. It also contains a signed and encrypted reply key.1. TheoriginatorInfo field is not required, since that information may be presented in the signedData structure that is encrypted within the encryptedContentInfo field. 2. The optional unprotectedAttrs field is not required for PKINIT. 3. The recipientInfos fieldinnermost data isa SET which MUST contain exactly one memberofthe KeyTransRecipientInfotypefor encryption with a public key. a. The encryptedKey field (in KeyTransRecipientInfo) contains the temporary key which is encrypted with the PKINIT client's public key. 4. The encryptedContentInfo field contains the signed and encrypted reply key. a.SignedData. ThecontentType field MUST contain the OID valueeContent forid-signedData: iso (1) member-body (2) us (840) rsadsi (113549) pkcs (1) pkcs7 (7) signedData (2) b. The encryptedContent field is encryptedthis data is ofthe CMS type signedData as specified below. i. The encapContentInfo field MUST contains thetype ReplyKeyPack.*2. The eContentTypefield MUST containfor 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. TheeContentsignerInfos field contains a single signerInfo, which isdatathe signature of thetype ReplyKeyPack (below). ii.ReplyKeyPack. 4. The certificates fieldMUST contain the certificates necessary forcontains a signature verification certificate chain, which the client may use toestablish trust inverify the KDC'scertificate based on the list of trusted certifiers sent by the client insignature over thePA-PK-AS-REQ. This fieldReplyKeyPack.) It may only be left empty if the client did notsend to the KDCinclude alist of trusted certifiers (thetrustedCertifiers fieldwas empty, meaning thatin theclient already possessesPA-PK-AS-REQ, indicating that it has the KDC'scertificate). iii.certificate. 5. ThesignerInfosouter 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 SETthatwhich MUST containat leastexactly onemember, since itmember of type KeyTransRecipientInfo. The encryptedKey for this member contains theactual signature. ReplyKeyPack ::= SEQUENCE { -- not used for Diffie-Hellman replyKey [0] EncryptionKey, -- from RFC 1510bis -- used to encrypt main reply -- ENCTYPE is at least as strong as -- ENCTYPE of sessiontemporary keynonce [1] INTEGER, -- binds response to the request -- must be same as the nonce -- passed in the PKAuthenticator } 3.2.2.1. Use of transited Field Since each certifier in the certification path of a user's certificatewhich isequivalent to a separate Kerberos realm, the name of each certifier inencrypted using thecertificate chain MUST be added toclient's public key. 8. Neither thetransitedunprotectedAttrs fieldofnor theticket. The format of these realm namesoriginatorInfo field isdefined in Section 3.1 of this document. If applicable, the transit-policy-checked flag should be set inrequired for PKINIT. 3.2.4. Validation of KDC Reply Upon receipt of theissued ticket. 3.2.2.2. Kerberos Names in Certificates TheKDC'scertificate(s) MUST bindreply, thepublic key(s) ofclient proceeds as follows. If theKDC toPA-PK-AS-REP contains aname derivable from the name ofdhSignedData, therealm for that KDC. X.509 certificates MUST containclient obtains and verifies theprincipal name ofDiffie-Hellman parameters, and obtains theKDC (defined in RFC 1510bis)shared key as described above. Otherwise, theSubjectAltName version 3 extension. Below ismessage contains an encKeyPack, and thedefinition of this version 3 extension, as specified byclient decrypts and verifies theX.509 standard: subjectAltName EXTENSION ::= { SYNTAX GeneralNames IDENTIFIED BY id-ce-subjectAltName } GeneralNames ::= SEQUENCE SIZE(1..MAX) OF GeneralName GeneralName ::= CHOICE { otherName [0] OtherName, ... } OtherName ::= SEQUENCE { type-id OBJECT IDENTIFIER, value [0] EXPLICIT ANY DEFINED BY type-id } Fortemporary encryption key. In either case, thepurpose of specifying a Kerberos principal name,client then decrypts thevalue in OtherName MUST be a KerberosName, defined as follows: KerberosName ::= SEQUENCE { realm [0] Realm, principalName [1] PrincipalName } This specific syntax is identified within subjectAltName by settingmain reply with thetype-idresulting key, and then proceeds as described inOtherName to krb5PrincipalName, where (from the Kerberos specification) we have krb5 OBJECT IDENTIFIER ::= { iso (1) org (3) dod (6) internet (1) security (5) kerberosv5 (2) } krb5PrincipalName OBJECT IDENTIFIER ::= { krb5 2 } (This specification may also be used to specify a Kerberos name withinRFC 1510bis. 3.2.5. Support for OCSP OCSP (Online Certificate Status Protocol) [cite] allows theuser's certificate.) The KDC's certificate may be signed directly byuse of on-line requests for aCA,client orthere may be intermediaries if theserverresides withinto determine the validity of each other's certificates. It is particularly useful for clients authenticating each other across alarge organization, or it may be unsigned ifconstrained network. These clients will not have to download theclient indicates possession (and trust)entire CRL to check for the validity of the KDC's certificate.Note thatIn these cases, theKDC's principal nameKDC generally hasthe instance equalbetter connectivity to therealm,OCSP server, andthose fields should be appropriately set init therefore processes therealmOCSP request andprincipalName fields ofresponse and sends theKerberosName. This isresults to thecase even when obtaining a cross-realm ticket using PKINIT. 3.2.3. Client Extraction of Replyclient. The changes proposed in this section allow a clientthen extracts the random key usedtoencryptrequest an OCSP response from themain reply.KDC when using PKINIT. Thisrandom key (in encPaReply)isencrypted with eithersimilar to theclient's public key or withway 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 akey derivedDER-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 theDH values exchanged between the client and the KDC.client. Theclient uses this random keyKDC may either send a cached OCSP response or send an on-line request todecryptthemain reply, and subsequently proceeds as described in RFC 1510bis. 3.2.4. Required Algorithms Not allOCSP 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 thealgorithms invalidity of thePKINIT protocol specification haveOCSP server may need to beimplementeddone. 4. Security Considerations PKINIT raises certain security considerations beyond those that can be regulated strictly inorder to comply with the proposed standard. Below is a list of the required algorithms: * Diffie-Hellman public/private key pairs * utilizing Diffie-Hellman ephemeral-ephemeral mode * SHA1 digest and DSA for signatures * SHA1 digest forprotocol definitions. We will address them in this section. PKINIT extends theChecksum incross-realm model to thePKAuthenticator *public-key infrastructure. Anyone usingKerberos checksum type 'sha1' * 3-key triple DES keys derived fromPKINIT must be aware of how theDiffie-Hellman Exchange * 3-key triple DES Temporary and Reply keys 4. Logistics and Policy This section describes a waycertification infrastructure they are linking todefineworks. Also, as in standard Kerberos, PKINIT presents thepolicy onpossibility 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 foreach principal and request. The KDC is not required to contain a database recordrandomly generated keys forusers who use public key authentication. However, ifconventional cryptosystems. Many such systems contain systematically "weak" keys. For recommendations regarding theseusers are registered with the KDC, it is recommended thatweak keys, see RFC 1510bis. PKINIT allows thedatabase record for these users be modified to an additional flaguse of a zero nonce in theattributes field to indicate that the user should authenticate using PKINIT. IfPKAuthenticator when cached Diffie-Hellman parameters are used. In thisflag is set and a requestcase, messagedoes not containbinding is performed using thePKINIT preauthentication field, thennonce in theKDC sends backmain request in the same way aserror of type KDC_ERR_PREAUTH_REQUIRED indicating that a preauthenticationit is done for ordinary (that is, non-PKINIT) AS-REQs. The nonce fieldof type PA-PK-AS-REQ must be includedin therequest. 5. Security Considerations PKINIT raises a few security considerations, which we will addressKDC request body is signed through the checksum inthis section. First of all, PKINIT extendsthecross-realm model toPKAuthenticator, and it therefore cryptographically binds the AS-REQ with the AS-REP. If cached parameters are also used on the client side, thepublicgenerated session keyinfrastructure. Anyone using PKINIT mustwill beaware of howthecertification infrastructure they are linkingsame, and a compromised session key could lead toworks. Also, as in standard Kerberos, PKINIT presentsthepossibility of interactions between different cryptosystemscompromise ofvarying strengths, and this now includes public-key cryptosystems. Many systems, for instance, allowfuture cached exchanges. It is desirable to limit the use of512-bit public keys. Using such keyscached parameters towrap data encrypted under strong conventional cryptosystems, such as triple-DES, may be inappropriate.just the KDC, in order to eliminate this exposure. Care should be taken in how certificates arechoosenchosen 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.As described in Section 3.2,PKINITallowsdoes not provide forthe caching of the Diffie-Hellman parametersa "return routability" test to prevent attackers from mounting a denial-of-service attack on the KDCside, for performance reasons. For similar reasons, the signed data inby causing it to perform unnecessary and expensive public-key operations. Strictly speaking, thiscaseis also true of standard Kerberos, although the potential cost is not as great, because standard Kerberos does notvary from messagemake use of public-key cryptography. It might be possible tomessage, untiladdress this using a preauthentication field as part of thecached parameters expire. Becauseproposed Kerberos preauthenticatino framework. 5. Acknowledgements Some of thepersistenceideas on which this proposal is based arose during discussions over several years between members ofthese parameters,theclient andSAAG, theKDC are to useIETF CAT working group, and theappropriate key derivation measures (as described in RFC 1510bis) when using cached DH parameters. Lastly, PKINIT calls for randomly generated keys for conventional cryptosystems. Many such systems contain systematically "weak" keys. For recommendationsPSRG, regarding integration of Kerberos and SPX. Some ideas have also been drawn from the DASS system. These changes are by no means endorsed by theseweak keys, see RFC 1510bis. 6. Transport Issues Certificate chains can potentially grow quite largegroups. This is an attempt to revive some of the goals of those groups, andspan several UDP packets;thisin turn increasesproposal approaches those goals primarily from theprobability that aKerberosmessage involving PKINIT extensions will be brokenperspective. Lastly, comments from groups working on similar ideas intransit. In light of the possibility that the Kerberos specification will require KDCs to accept requests using TCP as a transport mechanism, we make the same recommendation with respect to the PKINIT extensions as well.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, Version1.01.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 SyntaxStandard,Standard. An RSA Laboratories Technical Note Version1.51.5. Revised November 1, 1993 [10] R. Rivest, MIT Laboratory for Computer Science and RSA Data Security, Inc. A Description of the RC2(r) EncryptionAlgorithmAlgorithm. March 1998. Request for Comments 2268. [11]M. Wahl, S. Kille, T. Howes. Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names. Request for Comments 2253. [12]R. Housley, W. Ford, W. Polk, D. Solo. Internet X.509 Public Key Infrastructure, Certificate and CRL Profile,January 1999.April 2002. Request for Comments2459. [13]3280. [12] B. Kaliski, J. Staddon. PKCS #1: RSA Cryptography Specifications, October 1998. Request for Comments 2437.[14] S. Dusse, P. Hoffman, B. Ramsdell, J. Weinstein. S/MIME Version 2 Certificate Handling, March 1998. Request for Comments 2312. [15] M. Wahl, T. Howes, S. Kille. Lightweight Directory Access Protocol (v3), December 1997. Request for Comments 2251. [16][13] ITU-T (formerly CCITT) Information Processing Systems - Open Systems Interconnection - Specification of Abstract Syntax Notation One (ASN.1) Rec. X.680 ISO/IEC8824-1 [17]8824-1. [14] PKCS #3: Diffie-Hellman Key-Agreement Standard, An RSA Laboratories Technical Note, Version 1.4, Revised November 1, 1993.8. 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,[15] K. Raeburn. Encryption andthe PSRG, regarding integration ofChecksum Specifications for Kerberos 5, October 2003. draft-ietf-krb-wg-crypto-06.txt. [16] S. Blake-Wilson, M. Nystrom, D. Hopwood, J. Mikkelsen, andSPX. 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,T. Wright. Transport Layer Security (TLS) Extensions, June 2003. Request for Comments 3546. [17] M. Myers, R. Ankney, A. Malpani, S. Galperin, andthis proposal approaches those goals primarily from the Kerberos perspective. Lastly, comments from groups working on similar ideas in DCE have been invaluable. 9. Expiration Date This draft expires May 25, 2002. 10.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{brian,bcn}@isi.edu Matthew HurCisco Systems 2901 Third Avenue Seattle WA 98121 Phone: (206) 256-3197 E-Mail: mhur@cisco.comAri MedvinskyKeen.com, Inc. 150 Independence Drive Menlo Park CA 94025Microsoft Corporation One Microsoft Way Redmond WA 98052 Phone: +1650 289 3134425 707 3336 E-mail:ari@keen.commatthur@microsoft.com, arimed@windows.microsoft.com Sasha MedvinskyMotorolaMotorola, Inc. 6450 Sequence Drive San Diego, CA 92121 +1 858 404 2367 E-mail:smedvinsky@gi.comsmedvinsky@motorola.com John Wray Iris Associates, Inc. 5 Technology Park Dr. Westford, MA 01886 E-mail: John_Wray@iris.com Jonathan TrostleCisco Systems 170 W. Tasman Dr. San Jose, CA 95134E-mail:jtrostle@cisco.comjtrostle@world.std.com ----