3 NETWORK WORKING GROUP B. Tung
4 Internet-Draft USC Information Sciences Institute
5 Expires: August 22, 2005 L. Zhu
10 Public Key Cryptography for Initial Authentication in Kerberos
11 draft-ietf-cat-kerberos-pk-init-25
15 This document is an Internet-Draft and is subject to all provisions
16 of Section 3 of RFC 3667. By submitting this Internet-Draft, each
17 author represents that any applicable patent or other IPR claims of
18 which he or she is aware have been or will be disclosed, and any of
19 which he or she become aware will be disclosed, in accordance with
22 Internet-Drafts are working documents of the Internet Engineering
23 Task Force (IETF), its areas, and its working groups. Note that
24 other groups may also distribute working documents as
27 Internet-Drafts are draft documents valid for a maximum of six months
28 and may be updated, replaced, or obsoleted by other documents at any
29 time. It is inappropriate to use Internet-Drafts as reference
30 material or to cite them other than as "work in progress."
32 The list of current Internet-Drafts can be accessed at
33 http://www.ietf.org/ietf/1id-abstracts.txt.
35 The list of Internet-Draft Shadow Directories can be accessed at
36 http://www.ietf.org/shadow.html.
38 This Internet-Draft will expire on August 22, 2005.
42 Copyright (C) The Internet Society (2005).
46 This document describes protocol extensions (hereafter called PKINIT)
47 to the Kerberos protocol specification. These extensions provide a
48 method for integrating public key cryptography into the initial
49 authentication exchange, by using asymmetric-key signature and/or
50 encryption algorithms in pre-authentication data fields.
54 Tung & Zhu Expires August 22, 2005 [Page 1]
56 Internet-Draft PKINIT February 2005
61 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
62 2. Conventions Used in This Document . . . . . . . . . . . . . . 3
63 3. Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . 4
64 3.1 Definitions, Requirements, and Constants . . . . . . . . . 4
65 3.1.1 Required Algorithms . . . . . . . . . . . . . . . . . 4
66 3.1.2 Defined Message and Encryption Types . . . . . . . . . 5
67 3.1.3 Algorithm Identifiers . . . . . . . . . . . . . . . . 6
68 3.2 PKINIT Pre-authentication Syntax and Use . . . . . . . . . 6
69 3.2.1 Generation of Client Request . . . . . . . . . . . . . 6
70 3.2.2 Receipt of Client Request . . . . . . . . . . . . . . 10
71 3.2.3 Generation of KDC Reply . . . . . . . . . . . . . . . 13
72 3.2.4 Receipt of KDC Reply . . . . . . . . . . . . . . . . . 19
73 3.3 Interoperability Requirements . . . . . . . . . . . . . . 20
74 3.4 KDC Indication of PKINIT Support . . . . . . . . . . . . . 20
75 4. Security Considerations . . . . . . . . . . . . . . . . . . . 21
76 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 22
77 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22
78 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 23
79 7.1 Normative References . . . . . . . . . . . . . . . . . . . 23
80 7.2 Informative References . . . . . . . . . . . . . . . . . . 24
81 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 24
82 A. PKINIT ASN.1 Module . . . . . . . . . . . . . . . . . . . . . 25
83 Intellectual Property and Copyright Statements . . . . . . . . 30
110 Tung & Zhu Expires August 22, 2005 [Page 2]
112 Internet-Draft PKINIT February 2005
117 A client typically authenticates itself to a service in Kerberos
118 using three distinct though related exchanges. First, the client
119 requests a ticket-granting ticket (TGT) from the Kerberos
120 authentication server (AS). Then, it uses the TGT to request a
121 service ticket from the Kerberos ticket-granting server (TGS).
122 Usually, the AS and TGS are integrated in a single device known as a
123 Kerberos Key Distribution Center, or KDC. (In this document, both
124 the AS and the TGS are referred to as the KDC.) Finally, the client
125 uses the service ticket to authenticate itself to the service.
127 The advantage afforded by the TGT is that the client exposes his
128 long-term secrets only once. The TGT and its associated session key
129 can then be used for any subsequent service ticket requests. One
130 result of this is that all further authentication is independent of
131 the method by which the initial authentication was performed.
132 Consequently, initial authentication provides a convenient place to
133 integrate public-key cryptography into Kerberos authentication.
135 As defined in [CLAR], Kerberos authentication exchanges use
136 symmetric-key cryptography, in part for performance. One
137 disadvantage of using symmetric-key cryptography is that the keys
138 must be shared, so that before a client can authenticate itself, he
139 must already be registered with the KDC.
141 Conversely, public-key cryptography (in conjunction with an
142 established Public Key Infrastructure) permits authentication without
143 prior registration with a KDC. Adding it to Kerberos allows the
144 widespread use of Kerberized applications by clients without
145 requiring them to register first with a KDC--a requirement that has
146 no inherent security benefit.
148 As noted above, a convenient and efficient place to introduce
149 public-key cryptography into Kerberos is in the initial
150 authentication exchange. This document describes the methods and
151 data formats for integrating public-key cryptography into Kerberos
152 initial authentication.
154 2. Conventions Used in This Document
156 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
157 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
158 document are to be interpreted as described in [RFC2119].
160 In this document, the encryption key used to encrypt the enc-part
161 field of the KDC-REP in the AS-REP [CLAR] is referred to as the KDC
166 Tung & Zhu Expires August 22, 2005 [Page 3]
168 Internet-Draft PKINIT February 2005
173 This section describes extensions to [CLAR] for supporting the use of
174 public-key cryptography in the initial request for a ticket.
176 Briefly, this document defines the following extensions to [CLAR]:
178 1. The client indicates the use of public-key authentication by
179 including a special preauthenticator in the initial request. This
180 preauthenticator contains the client's public-key data and a
183 2. The KDC tests the client's request against its authentication
184 policy and trusted Certification Authorities (CAs).
186 3. If the request passes the verification tests, the KDC replies as
187 usual, but the reply is encrypted using either:
189 a. a key generated through a Diffie-Hellman (DH) key exchange
190 [RFC2631][IEEE1363] with the client, signed using the KDC's
193 b. a symmetric encryption key, signed using the KDC's signature
194 key and encrypted using the client's public key.
196 Any keying material required by the client to obtain the
197 encryption key for decrypting the KDC reply is returned in a
198 pre-authentication field accompanying the usual reply.
200 4. The client validates the KDC's signature, obtains the encryption
201 key, decrypts the reply, and then proceeds as usual.
203 Section 3.1 of this document enumerates the required algorithms and
204 necessary extension message types. Section 3.2 describes the
205 extension messages in greater detail.
207 3.1 Definitions, Requirements, and Constants
209 3.1.1 Required Algorithms
211 All PKINIT implementations MUST support the following algorithms:
213 o KDC AS reply key enctype: AES256-CTS-HMAC-SHA1-96 etype [RFC3961].
215 o Signature algorithm: sha-1WithRSAEncryption [RFC3279].
217 o KDC AS reply key delivery method: Diffie-Hellman key exchange
222 Tung & Zhu Expires August 22, 2005 [Page 4]
226 3.1.2 Defined Message and Encryption Types
228 PKINIT makes use of the following new pre-authentication types:
233 PKINIT also makes use of the following new authorization data type:
235 AD_INITIAL_VERIFIED_CAS 9
237 PKINIT introduces the following new error codes:
239 KDC_ERR_CLIENT_NOT_TRUSTED 62
240 KDC_ERR_INVALID_SIG 64
241 KDC_ERR_DH_KEY_PARAMETERS_NOT_ACCEPTED 65
242 KDC_ERR_CANT_VERIFY_CERTIFICATE 70
243 KDC_ERR_INVALID_CERTIFICATE 71
244 KDC_ERR_REVOKED_CERTIFICATE 72
245 KDC_ERR_REVOCATION_STATUS_UNKNOWN 73
246 KDC_ERR_CLIENT_NAME_MISMATCH 75
247 KDC_ERR_INCONSISTENT_KEY_PURPOSE 76
249 PKINIT uses the following typed data types for errors:
251 TD_TRUSTED_CERTIFIERS 104
252 TD_INVLID_CERTIFICATES 105
255 PKINIT defines the following encryption types, for use in the AS-REQ
256 message to indicate acceptance of the corresponding algorithms that
257 can used by Cryptographic Message Syntax (CMS) [RFC3852] messages in
261 md5WithRSAEncryption-CmsOID 10
262 sha1WithRSAEncryption-CmsOID 11
264 rsaEncryption-EnvOID (PKCS1 v1.5) 13
265 rsaES-OAEP-EnvOID (PKCS1 v2.0) 14
266 des-ede3-cbc-EnvOID 15
268 The ASN.1 module for all structures defined in this document (plus
269 IMPORT statements for all imported structures) is given in
272 All structures defined in or imported into this document MUST be
273 encoded using Distinguished Encoding Rules (DER) [X690] (unless
274 otherwise noted). All data structures carried in OCTET STRINGs must
278 Tung & Zhu Expires August 22, 2005 [Page 5]
280 Internet-Draft PKINIT February 2005
283 be encoded according to the rules specified in corresponding
286 Interoperability note: Some implementations may not be able to decode
287 wrapped CMS objects encoded with BER but not DER; specifically, they
288 may not be able to decode infinite length encodings. To maximize
289 interoperability, implementers SHOULD encode CMS objects used in
292 3.1.3 Algorithm Identifiers
294 PKINIT does not define, but does make use of, the following algorithm
297 PKINIT uses the following algorithm identifiers for Diffie-Hellman
298 key agreement [RFC3279]:
300 dhpublicnumber (Diffie-Hellman modulo a prime p [RFC2631])
301 id-ecPublicKey (Elliptic Curve Diffie-Hellman [IEEE1363])
303 PKINIT uses the following signature algorithm identifiers [RFC3279]:
305 sha-1WithRSAEncryption (RSA with SHA1)
306 md5WithRSAEncryption (RSA with MD5)
307 id-dsa-with-sha1 (DSA with SHA1)
309 PKINIT uses the following encryption algorithm identifiers [RFC3447]
310 for encrypting the temporary key with a public key:
312 rsaEncryption (PKCS1 v1.5)
313 id-RSAES-OAEP (PKCS1 v2.0)
315 PKINIT uses the following algorithm identifiers [RFC3370][RFC3565]
316 for encrypting the KDC AS reply key with the temporary key:
318 des-ede3-cbc (three-key 3DES, CBC mode)
319 rc2-cbc (RC2, CBC mode)
320 id-aes256-CBC (AES-256, CBC mode)
323 3.2 PKINIT Pre-authentication Syntax and Use
325 This section defines the syntax and use of the various
326 pre-authentication fields employed by PKINIT.
328 3.2.1 Generation of Client Request
330 The initial authentication request (AS-REQ) is sent as per [CLAR]; in
334 Tung & Zhu Expires August 22, 2005 [Page 6]
336 Internet-Draft PKINIT February 2005
339 addition, a pre-authentication data element, whose padata-type is
340 PA_PK_AS_REQ and whose padata-value contains the DER encoding of the
341 type PA-PK-AS-REQ, is included.
343 PA-PK-AS-REQ ::= SEQUENCE {
344 signedAuthPack [0] IMPLICIT OCTET STRING,
345 -- Contains a CMS type ContentInfo encoded
346 -- according to [RFC3852].
347 -- The contentType field of the type ContentInfo
348 -- is id-signedData (1.2.840.113549.1.7.2),
349 -- and the content field is a SignedData.
350 -- The eContentType field for the type SignedData is
351 -- id-pkauthdata (1.3.6.1.5.2.3.1), and the
352 -- eContent field contains the DER encoding of the
354 -- AuthPack is defined below.
355 trustedCertifiers [1] SEQUENCE OF TrustedCA OPTIONAL,
356 -- A list of CAs, trusted by the client, that can
357 -- be used as the trust anchor to validate the KDC's
359 -- Each TrustedCA identifies a CA or a CA
360 -- certificate (thereby its public key).
361 kdcPkId [2] IMPLICIT OCTET STRING
363 -- Contains a CMS type SignerIdentifier encoded
364 -- according to [RFC3852].
365 -- Identifies, if present, a particular KDC
366 -- public key that the client already has.
370 DHNonce ::= OCTET STRING
372 TrustedCA ::= SEQUENCE {
373 caName [0] IMPLICIT OCTET STRING,
374 -- Contains a PKIX type Name encoded according to
376 -- Identifies a CA by the CA's distinguished subject
378 certificateSerialNumber [1] INTEGER OPTIONAL,
379 -- Specifies the CA certificate's serial number.
380 -- The defintion of the certificate serial number
381 -- is taken from X.509 [X.509-97].
382 subjectKeyIdentifier [2] OCTET STRING OPTIONAL,
383 -- Identifies the CA's public key by a key
384 -- identifier. When an X.509 certificate is
385 -- referenced, this key identifier matches the X.509
386 -- subjectKeyIdentifier extension value. When other
390 Tung & Zhu Expires August 22, 2005 [Page 7]
392 Internet-Draft PKINIT February 2005
395 -- certificate formats are referenced, the documents
396 -- that specify the certificate format and their use
397 -- with the CMS must include details on matching the
398 -- key identifier to the appropriate certificate
403 AuthPack ::= SEQUENCE {
404 pkAuthenticator [0] PKAuthenticator,
405 clientPublicValue [1] SubjectPublicKeyInfo OPTIONAL,
406 -- Type SubjectPublicKeyInfo is defined in
408 -- Specifies Diffie-Hellman domain parameters
409 -- and the client's public key value [IEEE1363].
410 -- The public key value (the subjectPublicKey field
411 -- of the type SubjectPublicKeyInfo) MUST be encoded
412 -- according to [RFC3279].
413 -- Present only if the client wishes to use the
414 -- Diffie-Hellman key agreement method.
415 supportedCMSTypes [2] SEQUENCE OF AlgorithmIdentifier
417 -- Type AlgorithmIdentifier is defined in
419 -- List of CMS encryption types supported by the
420 -- client in order of (decreasing) preference.
421 clientDHNonce [3] DHNonce OPTIONAL,
422 -- Present only if the client indicates that it
423 -- wishes to reuse DH keys or to allow the KDC to
424 -- do so (see Section 3.2.3.1).
428 PKAuthenticator ::= SEQUENCE {
429 cusec [0] INTEGER (0..999999),
430 ctime [1] KerberosTime,
431 -- cusec and ctime are used as in [CLAR], for replay
433 nonce [2] INTEGER (0..4294967295),
434 -- Chosen randomly; This nonce does not need to
435 -- match with the nonce in the KDC-REQ-BODY.
436 paChecksum [3] OCTET STRING,
437 -- Contains the SHA1 checksum, performed over
442 The ContentInfo [RFC3852] structure for the signedAuthPack field is
446 Tung & Zhu Expires August 22, 2005 [Page 8]
448 Internet-Draft PKINIT February 2005
451 filled out as follows:
453 1. The contentType field of the type ContentInfo is id-signedData
454 (as defined in [RFC3852]), and the content field is a SignedData
455 (as defined in [RFC3852]).
457 2. The eContentType field for the type SignedData is id-pkauthdata:
458 { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2)
459 pkinit(3) pkauthdata(1) }.
461 3. The eContent field for the type SignedData contains the DER
462 encoding of the type AuthPack.
464 4. The signerInfos field of the type SignedData contains a single
465 signerInfo, which contains the signature over the type AuthPack.
467 5. The certificates field of the type SignedData contains
468 certificates intended to facilitate certification path
469 construction, so that the KDC can verify the signature over the
470 type AuthPack. For path validation, these certificates SHOULD be
471 sufficient to construct at least one certification path from the
472 client certificate to one trust anchor acceptable by the KDC
473 [CAPATH]. The certificates field MUST NOT contain "root" CA
476 6. The client's Diffie-Hellman public value (clientPublicValue) is
477 included if and only if the client wishes to use the
478 Diffie-Hellman key agreement method. The Diffie-Hellman domain
479 parameters for the client's public key are specified in the
480 algorithm field of the type SubjectPublicKeyInfo
481 [IEEE1363][RFC3279] and the client's Diffie-Hellman public key
482 value is mapped to a subjectPublicKey (a BIT STRING) according to
483 [RFC3279]. When using the Diffie-Hellman key agreement method,
484 implementations MUST support Oakley 1024-bit MODP well-known
485 group 2 [RFC2412] and SHOULD support Oakley 2048-bit MODP
486 well-known group 14 and Oakley 4096-bit MODP well-known group 16
489 The Diffie-Hellman field size should be chosen so as to provide
490 sufficient cryptographic security. The following table, based on
491 [LENSTRA], gives approximate comparable key sizes for symmetric-
492 and asymmetric-key cryptosystems based on the best-known
493 algorithms for attacking them.
502 Tung & Zhu Expires August 22, 2005 [Page 9]
504 Internet-Draft PKINIT February 2005
507 Symmetric | ECC | DH/DSA/RSA
508 -------------+---------+------------
515 Table 1: Comparable key sizes (in bits)
517 When Diffie-Hellma modulo a prime p is used, the exponents should
518 have at least twice as many bits as the symmetric keys that will
519 be derived from them [ODL99].
521 7. The client may wish to reuse DH keys or to allow the KDC to do so
522 (see Section 3.2.3.1). If so, then the client includes the
523 clientDHNonce field. This nonce string needs to be as long as
524 the longest key length of the symmetric key types that the client
525 supports. This nonce MUST be chosen randomly.
528 3.2.2 Receipt of Client Request
530 Upon receiving the client's request, the KDC validates it. This
531 section describes the steps that the KDC MUST (unless otherwise
532 noted) take in validating the request.
534 The KDC verifies the client's signature in the signedAuthPack field
535 according to [RFC3852].
537 If, while validating the client's X.509 certificate [RFC3280], the
538 KDC cannot build a certification path to validate the client's
539 certificate, it sends back a KRB-ERROR [CLAR] message with the code
540 KDC_ERR_CANT_VERIFY_CERTIFICATE. The accompanying e-data for this
541 error message is a TYPED-DATA (as defined in [CLAR]) that contains an
542 element whose data-type is TD_TRUSTED_CERTIFIERS, and whose
543 data-value contains the DER encoding of the type
544 TD-TRUSTED-CERTIFIERS:
546 TD-TRUSTED-CERTIFIERS ::= SEQUENCE OF TrustedCA
547 -- Identifies a list of CAs trusted by the KDC.
548 -- Each TrustedCA identifies a CA or a CA
549 -- certificate (thereby its public key).
551 Upon receiving this error message, the client SHOULD retry only if it
552 has a different set of certificates (from those of the previous
553 requests) that form a certification path (or a partial path) from one
554 of the trust anchors selected by the KDC to its own certificate.
558 Tung & Zhu Expires August 22, 2005 [Page 10]
560 Internet-Draft PKINIT February 2005
563 If, while processing the certification path, the KDC determines that
564 the signature on one of the certificates in the signedAuthPack field
565 is invalid, it returns a KRB-ERROR [CLAR] message with the code
566 KDC_ERR_INVALID_CERTIFICATE. The accompanying e-data for this error
567 message is a TYPED-DATA that contains an element whose data-type is
568 TD_INVALID_CERTIFICATES, and whose data-value contains the DER
569 encoding of the type TD-INVALID-CERTIFICATES:
571 TD-INVALID-CERTIFICATES ::= SEQUENCE OF OCTET STRING
572 -- Each OCTET STRING contains a CMS type
573 -- IssuerAndSerialNumber encoded according to
575 -- Each IssuerAndSerialNumber indentifies a
576 -- certificate (sent by the client) with an invalid
579 If more than one X.509 certificate signature is invalid, the KDC MAY
580 send one TYPED-DATA element per invalid signature.
582 Based on local policy, the KDC may also check whether any X.509
583 certificates in the certification path validating the client's
584 certificate have been revoked. If any of them have been revoked, the
585 KDC MUST return an error message with the code
586 KDC_ERR_REVOKED_CERTIFICATE; if the KDC attempts to determine the
587 revocation status but is unable to do so, it SHOULD return an error
588 message with the code KDC_ERR_REVOCATION_STATUS_UNKNOWN. The
589 certificate or certificates affected are identified exactly as for
590 the error code KDC_ERR_INVALID_CERTIFICATE (see above).
592 The client's public key is then used to verify the signature. If the
593 signature fails to verify, the KDC MUST return an error message with
594 the code KDC_ERR_INVALID_SIG. There is no accompanying e-data for
597 In addition to validating the client's signature, the KDC MUST also
598 check that the client's public key used to verify the client's
599 signature is bound to the client's principal name as specified in the
602 1. If the KDC has its own binding between either the client's
603 signature-verification public key or the client's certificate and
604 the client's Kerberos principal name, it uses that binding.
606 2. Otherwise, if the client's X.509 certificate contains a Subject
607 Alternative Name (SAN) extension [RFC3280] with a
608 KRB5PrincipalName (defined below) in the otherName field, it binds
609 the client's X.509 certificate to that name.
614 Tung & Zhu Expires August 22, 2005 [Page 11]
616 Internet-Draft PKINIT February 2005
619 The otherName field (of type AnotherName) in the SAN extension
620 MUST contain KRB5PrincipalName as defined below.
622 The type-id field of the type AnotherName is id-pksan:
624 id-pksan OBJECT IDENTIFIER ::=
625 { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2)
628 The value field of the type AnotherName is the DER encoding of the
629 following ASN.1 type:
631 KRB5PrincipalName ::= SEQUENCE {
633 principalName [1] PrincipalName
636 If the KDC does not have its own binding and there is no
637 KRB5PrincipalName name present in the client's X.509 certificate, and
638 if the Kerberos name in the request does not match the
639 KRB5PrincipalName in the client's X.509 certificate (including the
640 realm name), the KDC MUST return an error message with the code
641 KDC_ERR_CLIENT_NAME_MISMATCH. There is no accompanying e-data for
644 The KDC MAY require the presence of an Extended Key Usage (EKU)
645 KeyPurposeId [RFC3280] id-pkekuoid in the extensions field of the
646 client's X.509 certificate:
648 id-pkekuoid OBJECT IDENTIFIER ::=
649 { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2)
650 pkinit(3) pkekuoid(4) }
651 -- PKINIT client authentication.
652 -- Key usage bits that MUST be consistent:
654 -- Key usage bits that MAY be consistent:
655 -- nonRepudiation, and (keyEncipherment or keyAgreement).
657 If this EKU is required but is missing, the KDC MUST return an error
658 message of the code KDC_ERR_INCONSISTENT_KEY_PURPOSE. There is no
659 accompanying e-data for this error message. KDCs implementing this
660 requirement SHOULD also accept the EKU KeyPurposeId id-ms-sc-logon
661 (1.3.6.1.4.1.311.20.2.2) as meeting the requirement, as there are a
662 large number of X.509 client certificates deployed for use with
663 PKINIT which have this EKU.
665 If for any other reasons, the client's public key is not accepted,
666 the KDC MUST return an error message with the code
670 Tung & Zhu Expires August 22, 2005 [Page 12]
672 Internet-Draft PKINIT February 2005
675 KDC_ERR_CLIENT_NOT_TRUSTED.
677 The KDC MUST check the timestamp to ensure that the request is not a
678 replay, and that the time skew falls within acceptable limits. The
679 recommendations for clock skew times in [CLAR] apply here. If the
680 check fails, the KDC MUST return error code KRB_AP_ERR_REPEAT or
681 KRB_AP_ERR_SKEW, respectively.
683 If the clientPublicValue is filled in, indicating that the client
684 wishes to use the Diffie-Hellman key agreement method, the KDC SHOULD
685 check to see if the key parameters satisfy its policy. If they do
686 not, it MUST return an error message with the code
687 KDC_ERR_DH_KEY_PARAMETERS_NOT_ACCEPTED. The accompanying e-data is a
688 TYPED-DATA that contains an element whose data-type is
689 TD_DH_PARAMETERS, and whose data-value contains the DER encoding of
690 the type TD-DH-PARAMETERS:
692 TD-DH-PARAMETERS ::= SEQUENCE OF AlgorithmIdentifier
693 -- Each AlgorithmIdentifier specifies a set of
694 -- Diffie-Hellman domain parameters [IEEE1363].
695 -- This list is in decreasing preference order.
697 TD-DH-PARAMETERS contains a list of Diffie-Hellman domain parameters
698 that the KDC supports in decreasing preference order, from which the
699 client SHOULD pick one to retry the request.
701 If the client included a kdcPkId field in the PA-PK-AS-REQ and the
702 KDC does not possess the corresponding key, the KDC MUST ignore the
703 kdcPkId field as if the client did not include one.
705 If the client included a trustedCertifiers field, and the KDC does
706 not possesses the private key for any one of the listed certifiers,
707 the KDC MUST ignore the trustedCertifiers field as if the client did
710 If there is a supportedCMSTypes field in the AuthPack, the KDC must
711 check to see if it supports any of the listed types. If it supports
712 more than one of the types, the KDC SHOULD use the one listed first.
713 If it does not support any of them, it MUST return an error message
714 with the code KDC_ERR_ETYPE_NOSUPP [CLAR].
716 3.2.3 Generation of KDC Reply
718 Assuming that the client's request has been properly validated, the
719 KDC proceeds as per [CLAR], except as follows.
721 The KDC MUST set the initial flag and include an authorization data
722 element of ad-type [CLAR] AD_INITIAL_VERIFIED_CAS in the issued
726 Tung & Zhu Expires August 22, 2005 [Page 13]
728 Internet-Draft PKINIT February 2005
731 ticket. The ad-data [CLAR] field contains the DER encoding of the
732 type AD-INITIAL-VERIFIED-CAS:
734 AD-INITIAL-VERIFIED-CAS ::= SEQUENCE OF TrustedCA
735 -- Identifies the certification path based on which
736 -- the client certificate was validated.
737 -- Each TrustedCA identifies a CA or a CA
738 -- certificate (thereby its public key).
740 The AS wraps any AD-INITIAL-VERIFIED-CAS data in AD-IF-RELEVANT
741 containers if the list of CAs satisfies the AS' realm's local policy
742 (this corresponds to the TRANSITED-POLICY-CHECKED ticket flag
743 [CLAR]). Furthermore, any TGS MUST copy such authorization data from
744 tickets used in a PA-TGS-REQ [CLAR] of the TGS-REQ to the resulting
745 ticket, and it can wrap or unwrap the data into or out-of the
746 AD-IF-RELEVANT container, depends on if the list of CAs satisfies the
747 TGS' realm's local policy.
749 Application servers that understand this authorization data type
750 SHOULD apply local policy to determine whether a given ticket bearing
751 such a type *not* contained within an AD-IF-RELEVANT container is
752 acceptable. (This corresponds to the AP server checking the
753 transited field when the TRANSITED-POLICY-CHECKED flag has not been
754 set [CLAR].) If such a data type is contained within an
755 AD-IF-RELEVANT container, AP servers MAY apply local policy to
756 determine whether the authorization data is acceptable.
758 The content of the AS-REP is otherwise unchanged from [CLAR]. The
759 KDC encrypts the reply as usual, but not with the client's long-term
760 key. Instead, it encrypts it with either a shared key derived from a
761 Diffie-Hellman exchange, or a generated encryption key. The contents
762 of the PA-PK-AS-REP indicate which key delivery method is used:
764 PA-PK-AS-REP ::= CHOICE {
765 dhInfo [0] DHRepInfo,
766 -- Selected when Diffie-Hellman key exchange is
768 encKeyPack [1] IMPLICIT OCTET STRING,
769 -- Selected when public key encryption is used.
770 -- Contains a CMS type ContentInfo encoded
771 -- according to [RFC3852].
772 -- The contentType field of the type ContentInfo is
773 -- id-envelopedData (1.2.840.113549.1.7.3).
774 -- The content field is an EnvelopedData.
775 -- The contentType field for the type EnvelopedData
776 -- is id-signedData (1.2.840.113549.1.7.2).
777 -- The eContentType field for the inner type
778 -- SignedData (when unencrypted) is id-pkrkeydata
782 Tung & Zhu Expires August 22, 2005 [Page 14]
784 Internet-Draft PKINIT February 2005
787 -- (1.2.840.113549.1.7.3) and the eContent field
788 -- contains the DER encoding of the type
790 -- ReplyKeyPack is defined in Section 3.2.3.2.
794 DHRepInfo ::= SEQUENCE {
795 dhSignedData [0] IMPLICIT OCTET STRING,
796 -- Contains a CMS type ContentInfo encoded according
798 -- The contentType field of the type ContentInfo is
799 -- id-signedData (1.2.840.113549.1.7.2), and the
800 -- content field is a SignedData.
801 -- The eContentType field for the type SignedData is
802 -- id-pkdhkeydata (1.3.6.1.5.2.3.2), and the
803 -- eContent field contains the DER encoding of the
804 -- type KDCDHKeyInfo.
805 -- KDCDHKeyInfo is defined below.
806 serverDHNonce [1] DHNonce OPTIONAL
807 -- Present if and only if dhKeyExpiration is
808 -- present in the KDCDHKeyInfo.
811 KDCDHKeyInfo ::= SEQUENCE {
812 subjectPublicKey [0] BIT STRING,
813 -- KDC's DH public key.
814 -- The DH pubic key value is mapped to a BIT STRING
815 -- according to [RFC3279].
816 nonce [1] INTEGER (0..4294967295),
817 -- Contains the nonce in the PKAuthenticator of the
818 -- request if DH keys are NOT reused,
820 dhKeyExpiration [2] KerberosTime OPTIONAL,
821 -- Expiration time for KDC's key pair,
822 -- present if and only if DH keys are reused. If
823 -- this field is omitted then the serverDHNonce
824 -- field MUST also be omitted. See Section 3.2.3.1.
829 3.2.3.1 Using Diffie-Hellman Key Exchange
831 In this case, the PA-PK-AS-REP contains a DHRepInfo structure.
833 The ContentInfo [RFC3852] structure for the dhSignedData field is
834 filled in as follows:
838 Tung & Zhu Expires August 22, 2005 [Page 15]
840 Internet-Draft PKINIT February 2005
843 1. The contentType field of the type ContentInfo is id-signedData
844 (as defined in [RFC3852]), and the content field is a SignedData
845 (as defined in [RFC3852]).
847 2. The eContentType field for the type SignedData is the OID value
848 for id-pkdhkeydata: { iso(1) org(3) dod(6) internet(1)
849 security(5) kerberosv5(2) pkinit(3) pkdhkeydata(2) }.
851 3. The eContent field for the type SignedData contains the DER
852 encoding of the type KDCDHKeyInfo.
854 4. The signerInfos field of the type SignedData contains a single
855 signerInfo, which contains the signature over the type
858 5. The certificates field of the type SignedData contains
859 certificates intended to facilitate certification path
860 construction, so that the client can verify the KDC's signature
861 over the type KDCDHKeyInfo. This field may only be left empty if
862 the KDC public key specified by the kdcPkId field in the
863 PA-PK-AS-REQ was used for signing. Otherwise, for path
864 validation, these certificates SHOULD be sufficient to construct
865 at least one certification path from the KDC certificate to one
866 trust anchor acceptable by the client [CAPATH]. The certificates
867 field MUST NOT contain "root" CA certificates.
869 6. If the client included the clientDHNonce field, then the KDC may
870 choose to reuse its DH keys (see Section 3.2.3.1). If the server
871 reuses DH keys then it MUST include an expiration time in the
872 dhKeyExperiation field. Past the point of the expiration time,
873 the signature over the type DHRepInfo is considered
874 expired/invalid. When the server reuses DH keys then it MUST
875 include a serverDHNonce at least as long as the length of keys
876 for the symmetric encryption system used to encrypt the AS reply.
877 Note that including the serverDHNonce changes how the client and
878 server calculate the key to use to encrypt the reply; see below
879 for details. The KDC SHOULD NOT reuse DH keys unless the
880 clientDHNonce field is present in the request.
882 The KDC AS reply key is derived as follows:
884 1. Both the KDC and the client calculate the shared secret value as
887 a) When Diffie-Hellman modulo a prime p ([RFC2631]) is used, let
888 DHSharedSecret be the shared secret value.
894 Tung & Zhu Expires August 22, 2005 [Page 16]
896 Internet-Draft PKINIT February 2005
899 b) When Elliptic Curve Diffie-Hellman (ECDH) (with each party
900 contributing one key pair) [IEEE1363] is used, let
901 DHSharedSecret be the x-coordinate of the shared secret value
902 (an elliptic curve point).
904 DHSharedSecret is first padded with leading zeros such that the
905 size of DHSharedSecret in octets is the same as that of the
906 modulus, then represented as a string of octets in big-endian
909 Implementation note: Both the client and the KDC can cache the
910 triple (ya, yb, DHSharedSecret), where ya is the client's public
911 key and yb is the KDC's public key. If both ya and yb are the
912 same in a later exchange, the cached DHSharedSecret can be used.
914 2. Let K be the key-generation seed length [RFC3961] of the KDC AS
915 reply key whose enctype is selected according to [CLAR].
917 3. Define the function octetstring2key() as follows:
919 octetstring2key(x) == random-to-key(K-truncate(
926 where x is an octet string; | is the concatenation operator; 0x00,
927 0x01, 0x02, etc., are each represented as a single octet;
928 random-to-key() is an operation that generates a protocol key from
929 a bitstring of length K; and K-truncate truncates its input to the
930 first K bits. Both K and random-to-key() are as defined in the
931 kcrypto profile [RFC3961] for the enctype of the KDC AS reply key.
933 4. When DH keys are reused, let n_c be the clientDHNonce, and n_k be
934 the serverDHNonce; otherwise, let both n_c and n_k be empty octet
937 5. The KDC AS reply key k is:
939 k = octetstring2key(DHSharedSecret | n_c | n_k)
942 3.2.3.2 Using Public Key Encryption
944 In this case, the PA-PK-AS-REP contains a ContentInfo structure
945 wrapped in an OCTET STRING. The KDC AS reply key is encrypted in the
946 encKeyPack field, which contains data of type ReplyKeyPack:
950 Tung & Zhu Expires August 22, 2005 [Page 17]
952 Internet-Draft PKINIT February 2005
955 ReplyKeyPack ::= SEQUENCE {
956 replyKey [0] EncryptionKey,
957 -- Contains the session key used to encrypt the
958 -- enc-part field in the AS-REP.
959 nonce [1] INTEGER (0..4294967295),
960 -- Contains the nonce in the PKAuthenticator of the
965 The ContentInfo [RFC3852] structure for the encKeyPack field is
966 filled in as follows:
968 1. The contentType field of the type ContentInfo is id-envelopedData
969 (as defined in [RFC3852]), and the content field is an
970 EnvelopedData (as defined in [RFC3852]).
972 2. The contentType field for the type EnvelopedData is
973 id-signedData: { iso (1) member-body (2) us (840) rsadsi (113549)
974 pkcs (1) pkcs7 (7) signedData (2) }.
976 3. The eContentType field for the inner type SignedData (when
977 decrypted from the encryptedContent field for the type
978 EnvelopedData) is id-pkrkeydata: { iso(1) org(3) dod(6)
979 internet(1) security(5) kerberosv5(2) pkinit(3) pkrkeydata(3) }.
981 4. The eContent field for the inner type SignedData contains the DER
982 encoding of the type ReplyKeyPack.
984 5. The signerInfos field of the inner type SignedData contains a
985 single signerInfo, which contains the signature over the type
988 6. The certificates field of the inner type SignedData contains
989 certificates intended to facilitate certification path
990 construction, so that the client can verify the KDC's signature
991 over the type ReplyKeyPack. This field may only be left empty if
992 the KDC public key specified by the kdcPkId field in the
993 PA-PK-AS-REQ was used for signing. Otherwise, for path
994 validation, these certificates SHOULD be sufficient to construct
995 at least one certification path from the KDC certificate to one
996 trust anchor acceptable by the client [CAPATH]. The certificates
997 field MUST NOT contain "root" CA certificates.
999 7. The recipientInfos field of the type EnvelopedData is a SET which
1000 MUST contain exactly one member of type KeyTransRecipientInfo.
1001 The encryptedKey of this member contains the temporary key which
1002 is encrypted using the client's public key.
1006 Tung & Zhu Expires August 22, 2005 [Page 18]
1009 8. The unprotectedAttrs or originatorInfo fields of the type
1010 EnvelopedData MAY be present.
1012 3.2.4 Receipt of KDC Reply
1014 Upon receipt of the KDC's reply, the client proceeds as follows. If
1015 the PA-PK-AS-REP contains the dhSignedData field, the client derives
1016 the KDC AS reply key using the same procedure used by the KDC as
1017 defined in Section 3.2.3.1. Otherwise, the message contains the
1018 encKeyPack field, and the client decrypts and extracts the temporary
1019 key in the encryptedKey field of the member KeyTransRecipientInfo,
1020 and then uses that as the KDC AS reply key.
1022 In either case, the client MUST verify the signature in the
1023 SignedData according to [RFC3852]. Unless the client can otherwise
1024 prove that the public key used to verify the KDC's signature is bound
1025 to the target KDC, the KDC's X.509 certificate MUST satisfy at least
1026 one of the following two requirements:
1028 1. The certificate contains a Subject Alternative Name (SAN)
1029 extension [RFC3280] carrying a dNSName and that name value
1030 matches the following name format:
1032 _Service._Proto.Realm
1034 Where the Service name is the string literal "kerberos", the
1035 Proto can be "udp" or "tcp", and the Realm is the domain style
1036 Kerberos realm name [CLAR] of the target KDC. This name format
1037 is identical to the owner label format used in the DNS SRV
1038 records for specifying the KDC location as described in [CLAR].
1039 For example, the X.509 certificate for the KDC of the Kerberos
1040 realm "EXAMPLE.COM" would contain a dNSName value of
1041 "_kerberos._tcp.EXAMPLE.COM" or "_kerberos._udp.EXAMPLE.COM".
1043 2. The certificate contains the EKU KeyPurposeId [RFC3280]
1044 id-pkkdcekuoid (defined below) and an SAN extension [RFC3280]
1045 carrying an AnotherName whose type-id is id-pksan (as defined in
1046 Section 3.2.2) and whose value contains a KRB5PrincipalName name,
1047 and the realm name of that KRB5PrincipalName matches the realm
1048 name of the target KDC.
1050 id-pkkdcekuoid OBJECT IDENTIFIER ::=
1051 { iso(1) org(3) dod(6) internet(1) security(5) kerberosv5(2)
1052 pkinit(3) pkkdcekuoid(5) }
1053 -- Signing KDC responses.
1054 -- Key usage bits that MUST be consistent:
1055 -- digitalSignature.
1057 If no SAN id-pksan extension is present (but the id-pkkdcekuoid
1058 EKU is) in the KDC's X.509 certificate, and the client has a
1062 Tung & Zhu Expires August 22, 2005 [Page 19]
1064 Internet-Draft PKINIT February 2005
1067 priori knowledge of the KDC's hostname (or IP address), the
1068 client SHOULD accept the KDC's X.509 certificate if that
1069 certificate contains an SAN extension carrying a dNSName and the
1070 dNSName value matches the hostname (or the IP address) of the KDC
1071 with which the client believes it is communicating.
1073 Matching rules used for the dNSName value are specified in [RFC3280].
1075 If all applicable checks are satisfied, the client then decrypts the
1076 enc-part field of the KDC-REP in the AS-REP using the KDC AS reply
1077 key, and then proceeds as described in [CLAR].
1079 Implementation note: CAs issuing KDC certificates SHOULD place all
1080 "short" and "fully-qualified" Kerberos realm names of the KDC (one
1081 per SAN extension) into the KDC certificate to allow maximum
1084 3.3 Interoperability Requirements
1086 The client MUST be capable of sending a set of certificates
1087 sufficient to allow the KDC to construct a certification path for the
1088 client's certificate, if the correct set of certificates is provided
1089 through configuration or policy.
1091 If the client sends all the X.509 certificates on a certification
1092 path to a trust anchor acceptable by the KDC, and the KDC can not
1093 verify the client's public key otherwise, the KDC MUST be able to
1094 process path validation for the client's certificate based on the
1095 certificates in the request.
1097 The KDC MUST be capable of sending a set of certificates sufficient
1098 to allow the client to construct a certification path for the KDC's
1099 certificate, if the correct set of certificates is provided through
1100 configuration or policy.
1102 If the KDC sends all the X.509 certificates on a certification path
1103 to a trust anchor acceptable by the client, and the client can not
1104 verify the KDC's public key otherwise, the client MUST be able to
1105 process path validation for the KDC's certificate based on the
1106 certificates in the reply.
1108 3.4 KDC Indication of PKINIT Support
1110 If pre-authentication is required, but was not present in the
1111 request, per [CLAR] an error message with the code
1112 KDC_ERR_PREAUTH_FAILED is returned and a METHOD-DATA object will be
1113 stored in the e-data field of the KRB-ERROR message to specify which
1114 pre-authentication mechanisms are acceptable. The KDC can then
1118 Tung & Zhu Expires August 22, 2005 [Page 20]
1120 Internet-Draft PKINIT February 2005
1123 indicate the support of PKINIT by including an empty element whose
1124 padata-type is PA_PK_AS_REQ in that METHOD-DATA object.
1126 Otherwise if it is required by the KDC's local policy that the client
1127 must be pre-authenticated using the pre-authentication mechanism
1128 specified in this document, but no PKINIT pre-authentication was
1129 present in the request, an error message with the code
1130 KDC_ERR_PREAUTH_FAILED SHOULD be returned.
1132 KDCs MUST leave the padata-value field of the PA_PK_AS_REQ element in
1133 the KRB-ERROR's METHOD-DATA empty (i.e., send a zero-length OCTET
1134 STRING), and clients MUST ignore this and any other value. Future
1135 extensions to this protocol may specify other data to send instead of
1136 an empty OCTET STRING.
1138 4. Security Considerations
1140 PKINIT raises certain security considerations beyond those that can
1141 be regulated strictly in protocol definitions. We will address them
1144 PKINIT extends the cross-realm model to the public-key
1145 infrastructure. Users of PKINIT must understand security policies
1146 and procedures appropriate to the use of Public Key Infrastructures
1149 Standard Kerberos allows the possibility of interactions between
1150 cryptosystems of varying strengths; this document adds interactions
1151 with public-key cryptosystems to Kerberos. Some administrative
1152 policies may allow the use of relatively weak public keys. Using
1153 such keys to wrap data encrypted under stronger conventional
1154 cryptosystems may be inappropriate.
1156 PKINIT requires keys for symmetric cryptosystems to be generated.
1157 Some such systems contain "weak" keys. For recommendations regarding
1158 these weak keys, see [CLAR].
1160 PKINIT allows the use of the same RSA key pair for encryption and
1161 signing when doing RSA encryption based key delivery. This is not
1162 recommended usage of RSA keys [RFC3447], by using DH based key
1163 delivery this is avoided.
1165 Care should be taken in how certificates are chosen for the purposes
1166 of authentication using PKINIT. Some local policies may require that
1167 key escrow be used for certain certificate types. Deployers of
1168 PKINIT should be aware of the implications of using certificates that
1169 have escrowed keys for the purposes of authentication. Because
1170 signing only certificates are normally not escrowed, by using DH
1174 Tung & Zhu Expires August 22, 2005 [Page 21]
1176 Internet-Draft PKINIT February 2005
1179 based key delivery this is avoided.
1181 PKINIT does not provide for a "return routability" test to prevent
1182 attackers from mounting a denial-of-service attack on the KDC by
1183 causing it to perform unnecessary and expensive public-key
1184 operations. Strictly speaking, this is also true of standard
1185 Kerberos, although the potential cost is not as great, because
1186 standard Kerberos does not make use of public-key cryptography. By
1187 using DH based key delivery and reusing DH keys, the necessary crypto
1188 processing cost per request can be minimized.
1190 The syntax for the AD-INITIAL-VERIFIED-CAS authorization data does
1191 permit empty SEQUENCEs to be encoded. Such empty sequences may only
1192 be used if the KDC itself vouches for the user's certificate.
1196 The following people have made significant contributions to this
1197 draft: Paul Leach, Kristin Lauter, Sam Hartman, Love Hornquist
1198 Astrand, Ken Raeburn, Nicolas Williams, John Wray, Jonathan Trostle,
1199 Tom Yu, Jeffrey Hutzelman, David Cross, Dan Simon, Karthik Jaganathan
1200 and Chaskiel M Grundman.
1202 Special thanks to Clifford Neuman, Matthew Hur and Sasha Medvinsky
1203 who wrote earlier versions of this document.
1205 The authors are indebt to the Kerberos working group chair Jeffrey
1206 Hutzelman who kept track of various issues and was enormously helpful
1207 during the creation of this document.
1209 Some of the ideas on which this document is based arose during
1210 discussions over several years between members of the SAAG, the IETF
1211 CAT working group, and the PSRG, regarding integration of Kerberos
1212 and SPX. Some ideas have also been drawn from the DASS system.
1213 These changes are by no means endorsed by these groups. This is an
1214 attempt to revive some of the goals of those groups, and this
1215 document approaches those goals primarily from the Kerberos
1218 Lastly, comments from groups working on similar ideas in DCE have
1221 6. IANA Considerations
1223 This document has no actions for IANA.
1230 Tung & Zhu Expires August 22, 2005 [Page 22]
1232 Internet-Draft PKINIT February 2005
1237 7.1 Normative References
1239 [CLAR] RFC-Editor: To be replaced by RFC number for draft-ietf-
1240 krb-wg-kerberos-clarifications. Work in Progress.
1243 IEEE, "Standard Specifications for Public Key
1244 Cryptography", IEEE 1363, 2000.
1246 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
1247 Requirement Levels", BCP 14, RFC 2119, March 1997.
1249 [RFC2412] Orman, H., "The OAKLEY Key Determination Protocol",
1250 RFC 2412, November 1998.
1252 [RFC2631] Rescorla, E., "Diffie-Hellman Key Agreement Method",
1253 RFC 2631, June 1999.
1255 [RFC3279] Bassham, L., Polk, W. and R. Housley, "Algorithms and
1256 Identifiers for the Internet X.509 Public Key
1257 Infrastructure Certificate and Certificate Revocation List
1258 (CRL) Profile", RFC 3279, April 2002.
1260 [RFC3280] Housley, R., Polk, W., Ford, W. and D. Solo, "Internet
1261 X.509 Public Key Infrastructure Certificate and
1262 Certificate Revocation List (CRL) Profile", RFC 3280,
1265 [RFC3370] Housley, R., "Cryptographic Message Syntax (CMS)
1266 Algorithms", RFC 3370, August 2002.
1268 [RFC3447] Jonsson, J. and B. Kaliski, "Public-Key Cryptography
1269 Standards (PKCS) #1: RSA Cryptography Specifications
1270 Version 2.1", RFC 3447, February 2003.
1272 [RFC3526] Kivinen, T. and M. Kojo, "More Modular Exponential (MODP)
1273 Diffie-Hellman groups for Internet Key Exchange (IKE)",
1276 [RFC3565] Schaad, J., "Use of the Advanced Encryption Standard (AES)
1277 Encryption Algorithm in Cryptographic Message Syntax
1278 (CMS)", RFC 3565, July 2003.
1280 [RFC3852] Housley, R., "Cryptographic Message Syntax (CMS)",
1281 RFC 3852, July 2004.
1285 Tung & Zhu Expires August 22, 2005 [Page 23]
1287 Internet-Draft PKINIT February 2005
1290 [RFC3961] Raeburn, K., "Encryption and Checksum Specifications for
1291 Kerberos 5", RFC 3961, February 2005.
1293 [X.509-97] ITU-T. Recommendation X.509: The Directory - Authentication
1296 [X690] ASN.1 encoding rules: Specification of Basic Encoding
1297 Rules (BER), Canonical Encoding Rules (CER) and
1298 Distinguished Encoding Rules (DER), ITU-T Recommendation
1299 X.690 (1997) | ISO/IEC International Standard
1302 7.2 Informative References
1304 [CAPATH] RFC-Editor: To be replaced by RFC number for draft-ietf-
1305 pkix-certpathbuild. Work in Progress.
1307 [LENSTRA] Lenstra, A. and E. Verheul, "Selecting Cryptographic Key
1308 Sizes", Journal of Cryptology 14 (2001) 255-293.
1310 [ODL99] Odlyzko, A., "Discrete logarithms: The past and the
1311 future, Designs, Codes, and Cryptography (1999)".
1316 USC Information Sciences Institute
1317 4676 Admiralty Way Suite 1001, Marina del Rey CA
1318 Marina del Rey, CA 90292
1321 Email: brian@isi.edu
1325 Microsoft Corporation
1330 Email: lzhu@microsoft.com
1332 Appendix A. PKINIT ASN.1 Module
1336 Tung & Zhu Expires August 22, 2005 [Page 24]
1338 Internet-Draft PKINIT February 2005
1341 KerberosV5-PK-INIT-SPEC {
1342 iso(1) identified-organization(3) dod(6) internet(1)
1343 security(5) kerberosV5(2) modules(4) pkinit(5)
1344 } DEFINITIONS EXPLICIT TAGS ::= BEGIN
1347 SubjectPublicKeyInfo, AlgorithmIdentifier
1348 FROM PKIX1Explicit88 { iso (1)
1349 identified-organization (3) dod (6) internet (1)
1350 security (5) mechanisms (5) pkix (7) id-mod (0)
1351 id-pkix1-explicit (18) }
1352 -- As defined in RFC 3280.
1354 DomainParameters, EcpkParameters
1355 FROM PKIX1Algorithms88 { iso(1)
1356 identified-organization(3) dod(6)
1357 internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
1358 id-mod-pkix1-algorithms(17) }
1359 -- As defined in RFC 3279.
1361 KerberosTime, TYPED-DATA, PrincipalName, Realm, EncryptionKey
1362 FROM KerberosV5Spec2 { iso(1) identified-organization(3)
1363 dod(6) internet(1) security(5) kerberosV5(2)
1364 modules(4) krb5spec2(2) } ;
1366 id-pkinit OBJECT IDENTIFIER ::=
1367 { iso (1) org (3) dod (6) internet (1) security (5)
1368 kerberosv5 (2) pkinit (3) }
1370 id-pkauthdata OBJECT IDENTIFIER ::= { id-pkinit 1 }
1371 id-pkdhkeydata OBJECT IDENTIFIER ::= { id-pkinit 2 }
1372 id-pkrkeydata OBJECT IDENTIFIER ::= { id-pkinit 3 }
1373 id-pkekuoid OBJECT IDENTIFIER ::= { id-pkinit 4 }
1374 id-pkkdcekuoid OBJECT IDENTIFIER ::= { id-pkinit 5 }
1376 pa-pk-as-req INTEGER ::= 16
1377 pa-pk-as-rep INTEGER ::= 17
1379 ad-initial-verified-cas INTEGER ::= 9
1381 td-trusted-certifiers INTEGER ::= 104
1382 td-invalid-certificates INTEGER ::= 105
1383 td-dh-parameters INTEGER ::= 109
1385 PA-PK-AS-REQ ::= SEQUENCE {
1386 signedAuthPack [0] IMPLICIT OCTET STRING,
1387 -- Contains a CMS type ContentInfo encoded
1388 -- according to [RFC3852].
1392 Tung & Zhu Expires August 22, 2005 [Page 25]
1394 Internet-Draft PKINIT February 2005
1397 -- The contentType field of the type ContentInfo
1398 -- is id-signedData (1.2.840.113549.1.7.2),
1399 -- and the content field is a SignedData.
1400 -- The eContentType field for the type SignedData is
1401 -- id-pkauthdata (1.3.6.1.5.2.3.1), and the
1402 -- eContent field contains the DER encoding of the
1404 -- AuthPack is defined below.
1405 trustedCertifiers [1] SEQUENCE OF TrustedCA OPTIONAL,
1406 -- A list of CAs, trusted by the client, that can
1407 -- be used as the trust anchor to validate the KDC's
1409 -- Each TrustedCA identifies a CA or a CA
1410 -- certificate (thereby its public key).
1411 kdcPkId [2] IMPLICIT OCTET STRING
1413 -- Contains a CMS type SignerIdentifier encoded
1414 -- according to [RFC3852].
1415 -- Identifies, if present, a particular KDC
1416 -- public key that the client already has.
1420 DHNonce ::= OCTET STRING
1422 TrustedCA ::= SEQUENCE {
1423 caName [0] IMPLICIT OCTET STRING,
1424 -- Contains a PKIX type Name encoded according to
1426 -- Identifies a CA by the CA's distinguished subject
1428 certificateSerialNumber [1] INTEGER OPTIONAL,
1429 -- Specifies the CA certificate's serial number.
1430 -- The defintion of the certificate serial number
1431 -- is taken from X.509 [X.509-97].
1432 subjectKeyIdentifier [2] OCTET STRING OPTIONAL,
1433 -- Identifies the CA's public key by a key
1434 -- identifier. When an X.509 certificate is
1435 -- referenced, this key identifier matches the X.509
1436 -- subjectKeyIdentifier extension value. When other
1437 -- certificate formats are referenced, the documents
1438 -- that specify the certificate format and their use
1439 -- with the CMS must include details on matching the
1440 -- key identifier to the appropriate certificate
1448 Tung & Zhu Expires August 22, 2005 [Page 26]
1450 Internet-Draft PKINIT February 2005
1453 AuthPack ::= SEQUENCE {
1454 pkAuthenticator [0] PKAuthenticator,
1455 clientPublicValue [1] SubjectPublicKeyInfo OPTIONAL,
1456 -- Type SubjectPublicKeyInfo is defined in
1458 -- Specifies Diffie-Hellman domain parameters
1459 -- and the client's public key value [IEEE1363].
1460 -- The public key value (the subjectPublicKey field
1461 -- of the type SubjectPublicKeyInfo) MUST be encoded
1462 -- according to [RFC3279].
1463 -- Present only if the client wishes to use the
1464 -- Diffie-Hellman key agreement method.
1465 supportedCMSTypes [2] SEQUENCE OF AlgorithmIdentifier
1467 -- Type AlgorithmIdentifier is defined in
1469 -- List of CMS encryption types supported by the
1470 -- client in order of (decreasing) preference.
1471 clientDHNonce [3] DHNonce OPTIONAL,
1472 -- Present only if the client indicates that it
1473 -- wishes to reuse DH keys or to allow the KDC to
1478 PKAuthenticator ::= SEQUENCE {
1479 cusec [0] INTEGER (0..999999),
1480 ctime [1] KerberosTime,
1481 -- cusec and ctime are used as in [CLAR], for replay
1483 nonce [2] INTEGER (0..4294967295),
1484 -- Chosen randomly; This nonce does not need to
1485 -- match with the nonce in the KDC-REQ-BODY.
1486 paChecksum [3] OCTET STRING,
1487 -- Contains the SHA1 checksum, performed over
1492 TD-TRUSTED-CERTIFIERS ::= SEQUENCE OF TrustedCA
1493 -- Identifies a list of CAs trusted by the KDC.
1494 -- Each TrustedCA identifies a CA or a CA
1495 -- certificate (thereby its public key).
1497 TD-INVALID-CERTIFICATES ::= SEQUENCE OF OCTET STRING
1498 -- Each OCTET STRING contains a CMS type
1499 -- IssuerAndSerialNumber encoded according to
1504 Tung & Zhu Expires August 22, 2005 [Page 27]
1506 Internet-Draft PKINIT February 2005
1509 -- Each IssuerAndSerialNumber indentifies a
1510 -- certificate (sent by the client) with an invalid
1513 KRB5PrincipalName ::= SEQUENCE {
1515 principalName [1] PrincipalName
1518 AD-INITIAL-VERIFIED-CAS ::= SEQUENCE OF TrustedCA
1519 -- Identifies the certification path based on which
1520 -- the client certificate was validated.
1521 -- Each TrustedCA identifies a CA or a CA
1522 -- certificate (thereby its public key).
1524 PA-PK-AS-REP ::= CHOICE {
1525 dhInfo [0] DHRepInfo,
1526 -- Selected when Diffie-Hellman key exchange is
1528 encKeyPack [1] IMPLICIT OCTET STRING,
1529 -- Selected when public key encryption is used.
1530 -- Contains a CMS type ContentInfo encoded
1531 -- according to [RFC3852].
1532 -- The contentType field of the type ContentInfo is
1533 -- id-envelopedData (1.2.840.113549.1.7.3).
1534 -- The content field is an EnvelopedData.
1535 -- The contentType field for the type EnvelopedData
1536 -- is id-signedData (1.2.840.113549.1.7.2).
1537 -- The eContentType field for the inner type
1538 -- SignedData (when unencrypted) is id-pkrkeydata
1539 -- (1.2.840.113549.1.7.3) and the eContent field
1540 -- contains the DER encoding of the type
1542 -- ReplyKeyPack is defined below.
1546 DHRepInfo ::= SEQUENCE {
1547 dhSignedData [0] IMPLICIT OCTET STRING,
1548 -- Contains a CMS type ContentInfo encoded according
1550 -- The contentType field of the type ContentInfo is
1551 -- id-signedData (1.2.840.113549.1.7.2), and the
1552 -- content field is a SignedData.
1553 -- The eContentType field for the type SignedData is
1554 -- id-pkdhkeydata (1.3.6.1.5.2.3.2), and the
1555 -- eContent field contains the DER encoding of the
1556 -- type KDCDHKeyInfo.
1560 Tung & Zhu Expires August 22, 2005 [Page 28]
1562 Internet-Draft PKINIT February 2005
1565 -- KDCDHKeyInfo is defined below.
1566 serverDHNonce [1] DHNonce OPTIONAL
1567 -- Present if and only if dhKeyExpiration is
1571 KDCDHKeyInfo ::= SEQUENCE {
1572 subjectPublicKey [0] BIT STRING,
1573 -- KDC's DH public key.
1574 -- The DH pubic key value is mapped to a BIT STRING
1575 -- according to [RFC3279].
1576 nonce [1] INTEGER (0..4294967295),
1577 -- Contains the nonce in the PKAuthenticator of the
1578 -- request if DH keys are NOT reused,
1580 dhKeyExpiration [2] KerberosTime OPTIONAL,
1581 -- Expiration time for KDC's key pair,
1582 -- present if and only if DH keys are reused. If
1583 -- this field is omitted then the serverDHNonce
1584 -- field MUST also be omitted.
1588 ReplyKeyPack ::= SEQUENCE {
1589 replyKey [0] EncryptionKey,
1590 -- Contains the session key used to encrypt the
1591 -- enc-part field in the AS-REP.
1592 nonce [1] INTEGER (0..4294967295),
1593 -- Contains the nonce in the PKAuthenticator of the
1598 TD-DH-PARAMETERS ::= SEQUENCE OF AlgorithmIdentifier
1599 -- Each AlgorithmIdentifier specifies a set of
1600 -- Diffie-Hellman domain parameters [IEEE1363].
1601 -- This list is in decreasing preference order.
1616 Tung & Zhu Expires August 22, 2005 [Page 29]
1618 Internet-Draft PKINIT February 2005
1621 Intellectual Property Statement
1623 The IETF takes no position regarding the validity or scope of any
1624 Intellectual Property Rights or other rights that might be claimed to
1625 pertain to the implementation or use of the technology described in
1626 this document or the extent to which any license under such rights
1627 might or might not be available; nor does it represent that it has
1628 made any independent effort to identify any such rights. Information
1629 on the procedures with respect to rights in RFC documents can be
1630 found in BCP 78 and BCP 79.
1632 Copies of IPR disclosures made to the IETF Secretariat and any
1633 assurances of licenses to be made available, or the result of an
1634 attempt made to obtain a general license or permission for the use of
1635 such proprietary rights by implementers or users of this
1636 specification can be obtained from the IETF on-line IPR repository at
1637 http://www.ietf.org/ipr.
1639 The IETF invites any interested party to bring to its attention any
1640 copyrights, patents or patent applications, or other proprietary
1641 rights that may cover technology that may be required to implement
1642 this standard. Please address the information to the IETF at
1646 Disclaimer of Validity
1648 This document and the information contained herein are provided on an
1649 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1650 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1651 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1652 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1653 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1654 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1659 Copyright (C) The Internet Society (2005). This document is subject
1660 to the rights, licenses and restrictions contained in BCP 78, and
1661 except as set forth therein, the authors retain all their rights.
1666 Funding for the RFC Editor function is currently provided by the
1672 Tung & Zhu Expires August 22, 2005 [Page 30]