idnits 2.17.1 draft-lha-krb-wg-ticket-extensions-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3978, Section 5.1 on line 15. -- Found old boilerplate from RFC 3978, Section 5.5, updated by RFC 4748 on line 355. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 366. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 373. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 379. ** The document seems to lack an RFC 3978 Section 5.4 (updated by RFC 4748) Copyright Line. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (September 14, 2008) is 5704 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'APPLICATION 1' is mentioned on line 294, but not defined -- Looks like a reference, but probably isn't: '0' on line 311 -- Looks like a reference, but probably isn't: '1' on line 312 -- Looks like a reference, but probably isn't: '2' on line 313 -- Looks like a reference, but probably isn't: '3' on line 298 -- Looks like a reference, but probably isn't: '4' on line 299 ** Obsolete normative reference: RFC 2434 (Obsoleted by RFC 5226) Summary: 3 errors (**), 0 flaws (~~), 1 warning (==), 12 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group L. Hornquist Astrand 3 Internet-Draft Apple, Inc 4 Intended status: Standards Track September 14, 2008 5 Expires: March 18, 2009 7 Kerberos ticket extensions 8 draft-lha-krb-wg-ticket-extensions-02 10 Status of this Memo 12 By submitting this Internet-Draft, each author represents that any 13 applicable patent or other IPR claims of which he or she is aware 14 have been or will be disclosed, and any of which he or she becomes 15 aware will be disclosed, in accordance with Section 6 of BCP 79. 17 Internet-Drafts are working documents of the Internet Engineering 18 Task Force (IETF), its areas, and its working groups. Note that 19 other groups may also distribute working documents as Internet- 20 Drafts. 22 Internet-Drafts are draft documents valid for a maximum of six months 23 and may be updated, replaced, or obsoleted by other documents at any 24 time. It is inappropriate to use Internet-Drafts as reference 25 material or to cite them other than as "work in progress." 27 The list of current Internet-Drafts can be accessed at 28 http://www.ietf.org/ietf/1id-abstracts.txt. 30 The list of Internet-Draft Shadow Directories can be accessed at 31 http://www.ietf.org/shadow.html. 33 This Internet-Draft will expire on March 18, 2009. 35 Abstract 37 The Kerberos protocol does not allow ticket extensions. This make it 38 harder to deploy features like referrals and PKCROSS. 40 Since the Kerberos protocol did not specified extensibility for the 41 Ticket structure and the current implementations are aware of the 42 contents of tickets, the extension protocol cannot simply extend the 43 Ticket ASN.1 structure. Instead, the extension data needs to be 44 hidden inside the ticket. 46 This protocol defines two methods to add extend the tickets. The 47 first method requires updated clients and is more in line with the 48 future development of Kerberos. The second way does not require 49 update client. To take advantage of this protocol the server (KDC or 50 application server) need to update a well. The two methods are 51 equivalent and there is a 1-1 mapping between them. 53 Table of Contents 55 1. Requirements Notation . . . . . . . . . . . . . . . . . . . . 4 56 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . . 5 57 3. Extending the ticket . . . . . . . . . . . . . . . . . . . . . 6 58 3.1. Update Kerberos 5 ticket . . . . . . . . . . . . . . . . . 6 59 3.2. Backward compatible format . . . . . . . . . . . . . . . . 6 60 4. Ticket extentions . . . . . . . . . . . . . . . . . . . . . . 8 61 5. How to request a new assignment for a ticket extension . . . . 9 62 6. Security Considerations . . . . . . . . . . . . . . . . . . . 10 63 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 11 64 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 65 9. Normative References . . . . . . . . . . . . . . . . . . . . . 13 66 Appendix A. Ticket-extensions ASN.1 Module . . . . . . . . . . . 14 67 Appendix B. Changes . . . . . . . . . . . . . . . . . . . . . . . 15 68 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 16 69 Intellectual Property and Copyright Statements . . . . . . . . . . 17 71 1. Requirements Notation 73 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 74 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 75 document are to be interpreted as described in [RFC2119]. 77 2. Background 79 The ticket and enc-part as defined by [RFC4120] is defined as follow: 81 Ticket ::= [APPLICATION 1] SEQUENCE { 82 tkt-vno [0] INTEGER (5), 83 realm [1] Realm, 84 sname [2] PrincipalName, 85 enc-part [3] EncryptedData -- EncTicketPart 86 } 88 EncryptedData ::= SEQUENCE { 89 etype [0] Int32 -- EncryptionType --, 90 kvno [1] UInt32 OPTIONAL, 91 cipher [2] OCTET STRING -- ciphertext 92 } 94 The reason that the ticket can't be extended is that Kerberos clients 95 parses the returned ticket and any additions field will not be 96 preserved. 98 3. Extending the ticket 100 This document describe two methods to extend tickets in Section 3.1 101 and Section 3.2. The two methods are equivalent and there is a 1-1 102 mapping between them, copy the fields into the respetive fields. 103 Anyone that creates protocols that uses ticket extentions MUST 104 support the Section 3.1 and SHOULD support both, ie, not depend on 105 the encoding of the Ticket structure itself. 107 3.1. Update Kerberos 5 ticket 109 The first method to extend the ticket is add a new field, ext-data 110 that extends the ticket with an array of type-value ticket 111 extensions. 113 Ticket ::= [APPLICATION 1] SEQUENCE { 114 tkt-vno[0] Int32, 115 realm[1] Realm, 116 sname[2] PrincipalName, 117 enc-part[3] EncryptedData 118 ext-data[4] SEQUENCE OF TicketExtension OPTIONAL 119 } 121 The client signals support by sending the PA-DATA type pa-data- 122 Client-Extensions setting the bit Client-Extensions-support-et-ticket 123 (the zero bit) to 1. 125 XXX write IANA registration for pa-data-Client-Extensions. Require 126 standard action, private/experimental gets to use their define their 127 own pa data. 129 If the KDC implement any protocols that uses Ticket extentions, it 130 MUST implement this method and prefer its use. 132 3.2. Backward compatible format 134 The second method is the backward compatible ticket that doesn't 135 change the format of the Ticket structure uses hides the extension 136 data inside the enc-part of the ticket. 138 It does this by using a special encryption type etype-TBETicket to 139 signal that enc-part.cipher contains the DER-encoded TBETicket 140 structure, instead of an encrypted EncTicketPart. 142 etype-TBETicket INTEGER ::= 4711 -- TBA XXX -- 144 krb5int32 ::= INTEGER (-2147483648..2147483647) 146 TBETicket ::= SEQUENCE { 147 etype [0] krb5int32 -- EncryptionType --, 148 cipher [1] OCTET STRING 149 extensions [2] SEQUENCE OF TicketExtension OPTIONAL 150 } 152 The content of cipher data and encryption type fields is moved inside 153 TBETicket. The kvno field is not moved and have the same mening as 154 before. 156 If the KDC implement this protocol, it MAY support this method. 158 4. Ticket extentions 160 Ticket extentions are for communicating between the KDC and the 161 service/KDC the ticket is for. Clients and 4th parties can read the 162 data, but should do no attempt to modify, remove or add extentions. 164 The ticket extentions them self is defined as follows: 166 TicketExtension ::= SEQUENCE { 167 te-type [0] krb5int32, 168 te-data [1] OCTET STRING 169 te-csum [2] Checksum OPTIONAL, 170 te-kvno [3] krb5int32 OPTIONAL 171 } 173 Negative ticket extension types (te-type) is private extensions and 174 MUST only be used for experimentation or private use. 176 The te-type field specifies the type of the content in te-data. 177 Unknown te-types MUST be ignored both by the client and the server. 179 The te-csum field is optional for the type, specified by each ticket 180 extension type. The ticket extension type have to be specified and 181 the key usage number to use for the check sum. The key is usually 182 the session key of the ticket, but doesn't have to be, an extension 183 could specify an new session key used for the ticket. 185 The (te-kvno) field is to allow changing keys if they keys is some 186 unrelated key. 188 The KDC MUST NOT use extended ticket in an AS or TGS reply unless it 189 is known that all instances of the service in question support it. 190 In particular, a (local or cross-realm) TGT MUST NOT use extended 191 tickets unless all of the KDCs to which it may be sent are known to 192 support it. 194 The KDC MAY return extended tickets to servers supporting ticket 195 extensions even if the extended ticket does not contain any 196 extensions. 198 5. How to request a new assignment for a ticket extension 200 When anyone is writing a Internet-draft for which a new assignment 201 for te-type is needed/wanted under the ticket extension, then the 202 proper way to do so is as follows: 204 EXAMPLE-MODULE DEFINITIONS ::= BEGIN 206 krb5-ticket-extension-Name ::= INTEGER nnn 207 -- IANA: please assign nnn 208 -- RFC-Editor: replace nnn with IANA-assigned 209 -- number and remove this note 210 END 212 IANA: Don't do note above, its an example, remove this note RFC- 213 Editor: Don't do note above, its an example, remove this note IANA 214 will assign the number as part of the RFC publication process. 216 When reviewing the document, the reviewer should take sure to check 217 that if te-csum is used, the signing key and key usage is specified. 219 6. Security Considerations 221 This document describes how to extend Kerberos tickets to include 222 additional data in the ticket. This does have a security 223 implications since the extension data in the TBETicket is only 224 optionally signed, not encrypted and is not replay protected. It is 225 up to the consumers of this interface to make sure its used safely. 227 Some of the issues that the extensions need to protect them self from 228 are: MITM downgrade to normal ticket, add or remove extensions, cut 229 and paste extensions between requests, retransmission of requests to 230 a different KDC. The data is sent in clear text, so can should be 231 taken to not send private data. 233 The ticket extension is mainly to communicate information from the 234 KDC to the server. The information can either be protected by the 235 session key, or the key of the server. If its protected by the 236 session key they both the client and the server can modify the data, 237 and if its protected the servers key is can modified by the server. 238 Any extension using Kerberos extension needs to define what the data 239 is needs protection from. 241 7. Acknowledgements 243 Thanks to Leif Johansson, Kamada Ken'ichi, and Ken Raeburn for 244 reviewing the document and provided suggestions for improvements. 246 8. IANA Considerations 248 There are currently no ticket extensions. Future ticket extensions 249 will be published at: 251 http://www.iana.org/assignments/NNNNNNNN 252 -- IANA: please name registry, proposal: krb5-ticket-extensions 254 IANA is requested to maintain this registry for future assignments. 255 New assignments can only be made via Specification Required as 256 described in [RFC2434]. 258 IANA will assign the number as part of the RFC publication process. 260 9. Normative References 262 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 263 Requirement Levels", BCP 14, RFC 2119, March 1997. 265 [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an 266 IANA Considerations Section in RFCs", BCP 26, RFC 2434, 267 October 1998. 269 [RFC4120] Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The 270 Kerberos Network Authentication Service (V5)", RFC 4120, 271 July 2005. 273 Appendix A. Ticket-extensions ASN.1 Module 275 KerberosV5-TicketExtensions { 276 iso(1) identified-organization(3) dod(6) internet(1) 277 security(5) kerberosV5(2) modules(4) ticket-extensions(TBA) 278 --- XXX who is the registerar for this number ? 279 } DEFINITIONS EXPLICIT TAGS ::= BEGIN 281 IMPORTS 282 -- as defined in RFC 4120 283 Int32, Checksum 284 FROM KerberosV5Spec2 { iso(1) identified-organization(3) 285 dod(6) internet(1) security(5) kerberosV5(2) 286 modules(4) krb5spec2(2) } 288 pa-data-Client-Extensions INTEGER ::= 4710 -- XXX TBA -- 290 PA-DATA-CLIENT-EXTENSIONS ::= BIT STRING 292 Client-Extensions-support-et-ticket INTEGER ::= 1 294 Ticket ::= [APPLICATION 1] SEQUENCE { 295 tkt-vno[0] Int32, 296 realm[1] Realm, 297 sname[2] PrincipalName, 298 enc-part[3] EncryptedData 299 ext-data[4] SEQUENCE OF TicketExtension OPTIONAL 300 } 302 etype-TBETicket INTEGER ::= 4711 -- XXX TBA -- 304 TBETicket ::= SEQUENCE { 305 etype [0] Int32 -- EncryptionType --, 306 cipher [1] OCTET STRING 307 extensions [2] SEQUENCE OF TicketExtension OPTIONAL 308 } 310 TicketExtension ::= SEQUENCE { 311 te-type [0] Int32, 312 te-data [1] OCTET STRING 313 te-csum [2] Checksum 314 } 316 END 317 Appendix B. Changes 319 RFC-EDITOR: please remove this section. 321 o Version 00 - initial version, after review of Leif Johansson, 322 Kamada Ken'ichi 324 o Version 01 - comments from Ken Raeburn: experimentation or private 325 use, attack types, asn1. nits. 327 o Version 02 - comments from Ken Raeburn: new format for the Ticket 328 PDU message. protocol neg from the client via pa-data. kvno is 329 Ticket.enc-data, added kvno for te-csum field. Clearifed between 330 what parties the messages are for. 332 Author's Address 334 Love Hornquist Astrand 335 Apple, Inc 336 Cupertino 337 USA 339 Email: lha@apple.com 341 Full Copyright Statement 343 Copyright (C) The IETF Trust (2008). 345 This document is subject to the rights, licenses and restrictions 346 contained in BCP 78, and except as set forth therein, the authors 347 retain all their rights. 349 This document and the information contained herein are provided on an 350 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 351 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 352 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 353 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 354 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 355 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 357 Intellectual Property 359 The IETF takes no position regarding the validity or scope of any 360 Intellectual Property Rights or other rights that might be claimed to 361 pertain to the implementation or use of the technology described in 362 this document or the extent to which any license under such rights 363 might or might not be available; nor does it represent that it has 364 made any independent effort to identify any such rights. Information 365 on the procedures with respect to rights in RFC documents can be 366 found in BCP 78 and BCP 79. 368 Copies of IPR disclosures made to the IETF Secretariat and any 369 assurances of licenses to be made available, or the result of an 370 attempt made to obtain a general license or permission for the use of 371 such proprietary rights by implementers or users of this 372 specification can be obtained from the IETF on-line IPR repository at 373 http://www.ietf.org/ipr. 375 The IETF invites any interested party to bring to its attention any 376 copyrights, patents or patent applications, or other proprietary 377 rights that may cover technology that may be required to implement 378 this standard. Please address the information to the IETF at 379 ietf-ipr@ietf.org.