Additional Kerberos Naming Constraints
Reserves 'WELLKNOWN' Kerberos names for special meanings and says what servers must do when they do not support one.
Zhu, L., "Additional Kerberos Naming Constraints", RFC 6111, DOI 10.17487/RFC6111, April 2011, <https://www.rfc-editor.org/info/rfc6111>.
@misc{rfc6111,
series = {Request for Comments},
number = 6111,
howpublished = {RFC 6111},
publisher = {RFC Editor},
doi = {10.17487/RFC6111},
url = {https://www.rfc-editor.org/info/rfc6111},
author = {L. Zhu},
title = {{Additional Kerberos Naming Constraints}},
pagetotal = 6,
year = 2011,
month = apr,
} RFC text
Contents
Internet Engineering Task Force (IETF) L. Zhu
Request for Comments: 6111 Microsoft Corporation
Updates: 4120 April 2011
Category: Standards Track
ISSN: 2070-1721
Additional Kerberos Naming Constraints
Abstract
This document 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.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 5741.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc6111.
Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
This document 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 this
material may not have granted the IETF Trust the right to allow
modifications of such material outside the IETF Standards Process.
Without obtaining an adequate license from the person(s) controlling
the copyright in such materials, this document may not be modified
outside the IETF Standards Process, and derivative works of it may
not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate 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
Occasionally, protocol designers need to designate a Kerberos
principal name or a Kerberos realm name to have a special meaning
other than identifying a particular instance. An example is that the
anonymous principal name and the anonymous realm name are defined for
the Kerberos anonymity support [RFC6112]. This anonymity name pair
conveys no more meaning than that the client's identity is not
disclosed. In the case of the anonymity support, it is critical that
deployed Kerberos implementations that do not support anonymity fail
the authentication if the anonymity name pair is used; therefore, no
access is granted accidentally to a principal who's name happens to
match with that of the anonymous identity.
However, Kerberos, as defined in [RFC4120], does not have such
reserved names. As such, protocol designers have resolved to use
names that are exceedingly unlikely to have been used to avoid
collision. Even if a registry were set up to avoid collision of new
implementations, there is no guarantee for deployed implementations
preventing accidental reuse of names that can lead to access being
granted unexpectedly.
The Kerberos realm name in [RFC4120] has a reserved name space
although no specific name is defined and the criticality of unknown
reserved realm names is not specified.
This document remedies these issues by defining well-known Kerberos
names and the protocol behavior when a well-known name is used but
not 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 are 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 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 is used as the client principal name
or the server principal name but 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 not
supported, and SHOULD reject the authentication attempt if a well-
known principal name is used as the server principal name but not
supported. These rules were designed to allow incremental updates
and ease migration. More specifically, if a well-known principal is
accepted in one realm, it is desirable to allow the cross-realm
Ticket Granting Ticket (TGT) to work when not all of the realms in
the cross-realm authentication path are updated; if the server
principal with an identically named well-known name was created
before the Key Distribution Center (KDC) is updated, it might be
acceptable to allow authentication to work within a reasonably
limited time window. However, unless otherwise specified, if a well-
known principal name is used but not supported in any other places of
Kerberos messages, authentication MUST fail. The error code is
KRB_AP_ERR_PRINCIPAL_UNKNOWN, and there is no accompanying error data
defined in this document 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 not supported. The TGS [RFC4120] MAY reject the
authentication attempt if a well-known realm name is used as the
client realm but not supported, and it SHOULD reject the
authentication attempt if a well-known realm name is used as the
server realm but not supported. Unless otherwise specified, if a
well-known realm name is used but not supported in any other places
of Kerberos messages, authentication MUST fail. The error code is
KRB_AP_ERR_REALM_UNKNOWN, and there is no accompanying error data
defined in this document 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, and if a reserved principal name is
used but not supported, and if 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 is no accompanying error data defined in this document for this
error.
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. Typically, well-known realms are defined to carry special
meanings, and they are not used to refer to intermediate realms in
the client's authentication path. Consequently, 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. In the case of KDCs checking the
transited realm path, this means that the TRANSITED-POLICY-CHECKED
flag MUST NOT be set in the resulting ticket. Aside from the
hierarchical meaning of a null subfield, the DOMAIN-X500-COMPRESS
encoding for transited realms [RFC4120] treats realm names as
strings, although it is optimized for domain style and X.500 realm
names; hence, 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. However, if the client's realm is a well-
known realm, the abbreviation forms [RFC4120] that build on the
preceding name cannot be used at the start of the transited encoding.
The null-subfield form (e.g., encoding ending with ",") [RFC4120]
could not be used next to a well-known realm, including potentially
at the beginning and end where the client and server realm names,
respectively, are filled in.
4. Security Considerations
It is possible to have a name collision with well-known names because
Kerberos, as defined in [RFC4120], does not reserve names that have
special meanings; accidental reuse of names MUST be avoided. If a
well-known name is not supported, authentication MUST fail as
specified in Section 3. Otherwise, access can be granted
unintentionally, resulting in a security weakness. Consider, for
example, a KDC that supports this specification but not the anonymous
authentication described in [RFC6112]. Assume further that the KDC
allows a principal to be created named identically to the anonymous
principal. If that principal were created and given access to
resources, then anonymous users might inadvertently gain access to
those resources if the KDC supports anonymous authentication at some
future time. Similar issues may occur with other well-known names.
By requiring that KDCs reject authentication with unknown well-known
names, we minimize these concerns.
If a well-known name was created before the KDC is updated to conform
to this specification, it SHOULD be renamed. The provisioning code
that manages account creation MUST be updated to disallow creation of
principals with unsupported well-known names.
5. Acknowledgements
The initial document was mostly based on the author's conversation
with Clifford Newman and Sam Hartman.
Jeffrey Hutzelman, Ken Raeburn, and Stephen Hanna provided helpful
suggestions for improvements to early revisions of this document.
6. IANA Considerations
This document 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].
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
AI ELI5
On this page
§1Why Reserved Names Are Needed
Protocol designers sometimes need a Kerberos principal name or realm name to carry a special meaning instead of naming one particular instance. The example in the RFC is the anonymous principal name and anonymous realm name from the Kerberos anonymity support in RFC 6112. That name pair says only that the client's identity is not disclosed.
RFC 4120 has no reserved names. Designers have so far picked names that are very unlikely to be in use, but nothing stops a deployed implementation from letting someone create an account with the same name, and then access could be granted unexpectedly. The realm name space in RFC 4120 is reserved, but no name is defined and the RFC does not say what happens with an unknown reserved realm name.
This RFC fixes both gaps by defining well-known names and the behavior required when one is used but not supported.
Imagine a class where a kid could sign up with the name 'Teacher'. This RFC says special names are reserved, and anyone who does not know a special name must say no.
§3.1Well-Known Principal Names
A new name type, KRB_NT_WELLKNOWN, with value 11, marks well-known principal names. Such a name MUST have at least two KerberosString components, and the first component MUST be the literal string WELLKNOWN.
If a well-known principal name is used as the client or server principal name but is not supported, the Authentication Service (AS) and the application server MUST reject the attempt. The Ticket Granting Service (TGS) is more relaxed: it MAY reject an unsupported well-known client name and SHOULD reject an unsupported well-known server name. The RFC explains that this allows incremental updates and easier migration, for example letting a cross-realm ticket-granting ticket work when not every realm on the path has been updated.
Anywhere else in a Kerberos message, an unsupported well-known principal name makes authentication fail with KRB_AP_ERR_PRINCIPAL_UNKNOWN (82). No error data is defined for it.
Special names all start with the same secret word, WELLKNOWN. If a computer sees that word and does not know the special name, it turns the visitor away.
§3.2Well-Known Realm Names
RFC 4120 allows realm names of the 'other' style. This RFC defines a realm type WELLKNOWN as a name of that style, written WELLKNOWN:realm-name.
The rejection rules mirror those for principals. The AS and application server MUST reject an unsupported well-known client or server realm. The TGS MAY reject an unsupported well-known client realm and SHOULD reject an unsupported well-known server realm. Elsewhere in a message, authentication MUST fail with KRB_AP_ERR_REALM_UNKNOWN (83).
Unless otherwise specified, every principal name inside a well-known realm is reserved. If such a name is used but not supported and the attempt is rejected, the error code MUST be KRB_AP_ERR_PRINCIPAL_RESERVED (84).
Whole special neighborhoods can be reserved too. Every address inside one is off limits unless the rules say otherwise.
§3.3Error Codes and the Transited Field
Three new error codes carry no accompanying error data: KRB_AP_ERR_PRINCIPAL_UNKNOWN (82), KRB_AP_ERR_REALM_UNKNOWN (83) and KRB_AP_ERR_PRINCIPAL_RESERVED (84).
RFC 4120 has the TGS add the previous realm to the transited field of the ticket it returns. Well-known realms normally carry special meaning and do not stand for intermediate realms on the client's path, so unless otherwise specified the TGS MUST NOT put a well-known realm name in the transited field. Parties checking the transited path MUST reject a path that includes one. A KDC that checks the path therefore MUST NOT set the TRANSITED-POLICY-CHECKED flag in the resulting ticket.
The DOMAIN-X500-COMPRESS encoding treats realm names as strings, so it can still be used when a reserved realm is the client or server realm. If the client's realm is well-known, the abbreviation forms that build on the preceding name cannot be used at the start of the transited encoding, and the null-subfield form cannot be used next to a well-known realm.
A special neighborhood is never listed as a stop on the trip itself. If someone's trip log says it was, the guard must refuse it.
- 82KRB_AP_ERR_PRINCIPAL_UNKNOWN — A well-known Kerberos principal name is used but not supported.
- 83KRB_AP_ERR_REALM_UNKNOWN — A well-known Kerberos realm name is used but not supported.
- 84KRB_AP_ERR_PRINCIPAL_RESERVED — A reserved Kerberos principal name is used but not supported.
§4Security Considerations
Because RFC 4120 reserves no names, a well-known name can collide with a normal one, and accidental reuse MUST be avoided. If an unsupported well-known name were accepted, access could be granted unintentionally.
The RFC's example: a KDC supports this specification but not the anonymous authentication of RFC 6112, and allows a principal to be created with the anonymous principal's name. If that principal is given access to resources and the KDC later supports anonymous authentication, anonymous users could inadvertently reach those resources. Requiring KDCs to reject unknown well-known names reduces this risk.
A well-known name created before the KDC was updated SHOULD be renamed. Account provisioning code MUST be updated so it does not create principals with unsupported well-known names.
If a stranger could sign up as 'Anonymous' and get a key, then real anonymous visitors might later walk into places that stranger had access to. So special names must always be refused when not understood.
§6IANA Registries
This RFC is only a framework for defining well-known names. It does not define any specific well-known principal or realm itself. Two new IANA registries hold well-known Kerberos principal names and realm names defined under it. The evaluation policy for each is 'Specification Required', as described in RFC 5226.
There are now two official lists of the special names, and you need a written document to add a name to them.