RFC 6111

Additional Kerberos Naming Constraints

πŸ“… published April 2011, from ietf

RFC 6111: Additional Kerberos Naming Constraints πŸŽ€ (Part 1 of 2)

okay bestie, this one is RFC 6111 by L. Zhu at Microsoft Corporation, published in April 2011. It's on the Standards Track (so it's an official Internet standard πŸ’…) and it's in the ISSN 2070-1721 series. It updates RFC 4120 and doesn't obsolete anything. It's from the Internet Engineering Task Force (IETF) πŸ¦‹


Abstract ✨

this doc defines new naming constraints for well-known Kerberos principal names and well-known Kerberos realm names πŸ”₯

Status of This Memo πŸ“œ

this is an Internet Standards Track document πŸ’–

it's a product of the Internet Engineering Task Force (IETF) and it represents the consensus of the IETF community. it got public review and was approved for publication by the Internet Engineering Steering Group (IESG). more info on Internet Standards is in Section 2 of RFC 5741 🌸

for the current status, any errata, and how to send feedback, check http://www.rfc-editor.org/info/rfc6111 ✨

Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved.

this doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stand on the publication date. read them carefully because they explain your rights and restrictions for this doc 🫢

code components pulled from this doc must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License.

this doc may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. the person(s) controlling the copyright in some of that material may not have given the IETF Trust permission to allow modifications outside the IETF Standards Process. unless you get a proper license from those copyright holders, this doc may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process. the only exceptions are formatting it for publication as an RFC or translating it into languages other than English 🌈

Table of Contents 🧚

1. Introduction ....................................................2
2. Conventions Used in This Document ...............................3
3. Definitions .....................................................3
   3.1. Well-Known Kerberos Principal Names ........................3
   3.2. Well-Known Kerberos Realm Names ............................4
4. Security Considerations .........................................5
5. Acknowledgements ................................................6
6. IANA Considerations .............................................6
7. References ......................................................6
   7.1. Normative References .......................................6
   7.2. Informative References .....................................6

1. Introduction ✨

okay so sometimes protocol designers need a Kerberos principal name or a Kerberos realm name to mean something special, not just point at one particular instance. the anonymous principal name and the anonymous realm name are a good example, because they're defined for Kerberos anonymity support [RFC6112] πŸ™ˆ

that anonymity pair only means one thing: the client's identity isn't being disclosed. it's super important that deployed Kerberos implementations which don't support anonymity FAIL the authentication if they see this pair. otherwise someone whose principal name just happens to match the anonymous identity could get access by accident πŸ’€

the thing is, Kerberos as defined in [RFC4120] doesn't have any reserved names like that. so protocol designers have resorted to... well, "resolved to" 😭 use names that are super unlikely to have been used already, just to avoid collisions. even if a registry got set up to stop collisions in new implementations, there's no guarantee that deployed implementations stop accidentally reusing those names. and that can lead to access getting granted unexpectedly 🚨

the Kerberos realm name in [RFC4120] has a reserved name space, but no specific name is defined there, and how unknown reserved realm names should be treated (their criticality) isn't specified either πŸŽ€

this doc fixes all of that by defining well-known Kerberos names, plus the protocol behavior when a well-known name gets used but isn't supported ✨

2. Conventions Used in This Document πŸ“š

the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] 🫢

3. Definitions 🧚

in this section, well-known names get defined for both the Kerberos principal name and the Kerberos realm name πŸ’–

3.1. Well-Known Kerberos Principal Names

a new name type, KRB_NT_WELLKNOWN, is defined for well-known principal names. the Kerberos principal name itself is defined in Section 6.2 of [RFC4120] πŸ¦‹

            KRB_NT_WELLKNOWN                  11

a well-known principal name MUST have at least two or more KerberosString components, and the first component MUST be the string literal "WELLKNOWN" πŸ’…

if a well-known principal name gets used as the client principal name or the server principal name and it's not supported, the Authentication Service (AS) [RFC4120] and the application server MUST reject the authentication attempt. similarly, the Ticket Granting Service (TGS) [RFC4120] MAY reject the authentication attempt if a well-known principal name is used as the client principal name but isn't supported, and SHOULD reject the authentication attempt if a well-known principal name is used as the server principal name but isn't supported πŸ”₯

these rules were designed to allow incremental updates and make migration easier. like, if a well-known principal is accepted in one realm, it's desirable to let the cross-realm Ticket Granting Ticket (TGT) keep working even when not every realm in the cross-realm authentication path has been updated. and if the server principal with an identically named well-known name was created before the Key Distribution Center (KDC) got updated, it might be acceptable to let authentication keep working within a reasonably limited time window 🌸

BUT, unless otherwise specified, if a well-known principal name is used but not supported in any other places in Kerberos messages, authentication MUST fail. the error code is KRB_AP_ERR_PRINCIPAL_UNKNOWN, and there's no accompanying error data defined in this doc for this error πŸ’€

            KRB_AP_ERR_PRINCIPAL_UNKNOWN      82
                 -- A well-known Kerberos principal name is used but not
                 -- supported.

3.2. Well-Known Kerberos Realm Names

Section 6.1 of [RFC4120] defines the "other" style of realm name. a new realm type, WELLKNOWN, is defined as a name of type "other", with the NAMETYPE part filled in with the string literal "WELLKNOWN" πŸ‘‘

            other: WELLKNOWN:realm-name

this name type is designated for well-known Kerberos realms 🌈

the AS and the application server MUST reject the authentication attempt if a well-known realm name is used as the client realm or the server realm but isn't supported. the TGS [RFC4120] MAY reject the authentication attempt if a well-known realm name is used as the client realm but isn't supported, and it SHOULD reject the authentication attempt if a well-known realm name is used as the server realm but isn't supported. unless otherwise specified, if a well-known realm name is used but not supported in any other places in Kerberos messages, authentication MUST fail. the error code is KRB_AP_ERR_REALM_UNKNOWN, and there's no accompanying error data defined in this doc for this error ✨

            KRB_AP_ERR_REALM_UNKNOWN          83
                 -- A well-known Kerberos realm name is used but not
                 -- supported.

unless otherwise specified, ALL principal names involving a well-known realm name are reserved. if a reserved principal name is used but not supported, and the authentication is rejected, the error code MUST be KRB_AP_ERR_PRINCIPAL_RESERVED πŸŽ€

            KRB_AP_ERR_PRINCIPAL_RESERVED     84
                 -- A reserved Kerberos principal name is used but not
                 -- supported.

there's no accompanying error data defined in this doc for this error either 🫢

ok now the transited field stuff 🧠. according to Section 3.3.3.2 of [RFC4120], the TGS MUST add the name of the previous realm into the transited field of the returned ticket. but well-known realms are defined to carry special meanings, so they typically aren't used to refer to intermediate realms in the client's authentication path. so, unless otherwise specified, the TGS MUST NOT encode a well-known Kerberos realm name into the transited field [RFC4120] of a ticket, and parties checking the transited realm path MUST reject a transited realm path that includes a well-known realm. for KDCs checking the transited realm path, that means the TRANSITED-POLICY-CHECKED flag MUST NOT be set in the resulting ticket πŸ’…

the DOMAIN-X500-COMPRESS encoding for transited realms [RFC4120] treats realm names as strings. it's optimized for domain style and X.500 realm names, but aside from the hierarchical meaning of a null subfield, it's just strings. so the DOMAIN-X500-COMPRESS encoding can be used when the client realm or the server realm is reserved, or when a reserved realm is in the transited field 🌸

BUT, if the client's realm is a well-known realm, the abbreviation forms [RFC4120] that build on the preceding name can't be used at the start of the transited encoding. the null-subfield form (e.g., encoding ending with ",") [RFC4120] also can't be used next to a well-known realm. that includes potentially the beginning and end, where the client and server realm names get filled in, respectively πŸ™ˆ

➑️ part 2 is next, with Security Considerations and everything after it πŸ’–

5. Acknowledgements πŸ™

okay so the initial document was mostly based on the author's conversation with Clifford Newman and Sam Hartman. bestie, that's such a great origin story 🫢

Jeffrey Hutzelman, Ken Raeburn, and Stephen Hanna provided helpful suggestions for improvements to early revisions of this document. the way they helped shape the early drafts is so iconic ✨

6. IANA Considerations πŸ¦‹

okay so this section is giving "framework" energy πŸ’… it provides the framework for defining well-known Kerberos names and Kerberos realms. two new IANA registries have been created to contain well-known Kerberos principal names and Kerberos realm names that are defined based on this document.

the evaluation policy for each is "Specification Required", as specified in [RFC5226]. so new entries need a specification, no cap 🌸

7. References πŸ“š

7.1. Normative References πŸ’œ

  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [RFC4120] Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The Kerberos Network Authentication Service (V5)", RFC 4120, July 2005.
  • [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.

7.2. Informative References 🧚

  • [RFC6112] Zhu, L., Leach, P., and S. Hartman, "Anonymity Support for Kerberos", RFC 6112, April 2011.

Author's Address πŸŽ€

Larry Zhu Microsoft Corporation One Microsoft Way Redmond, WA 98052 US

EMail: lzhu@microsoft.com

πŸ“¦ where this page comes from