RFC 6880
An Information Model for Kerberos Version 5
RFC 6880 π An Information Model for Kerberos Version 5
Okay bestie, here's the key info before we dive in β¨
- Number: RFC 6880
- Title: An Information Model for Kerberos Version 5
- Author: L. Johansson, SUNET π¦
- Stream: Internet Engineering Task Force (IETF)
- Category: Standards Track, so this is an official Internet Standard π
- Date: March 2013
- ISSN: 2070-1721
- Obsoletes / Updates: the title block doesn't list anything it obsoletes or updates
Abstract πΈ
So this doc is about an information model for Kerberos version 5, seen from the point of view of an administrative service. Here's the tea: there's no standard for administering a Kerberos 5 Key Distribution Center (KDC) π This document fills that gap by describing the services an administrative interface exposes to a KDC. Iconic, honestly.
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, received 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/rfc6880.
Copyright Notice βοΈ
Copyright (c) 2013 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. Please read these carefully, because they spell out your rights and restrictions for 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 they're 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 people controlling the copyright in some of that material may not have granted the IETF Trust the right to allow modifications outside the IETF Standards Process. So unless you get an adequate license from those copyright holders, 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. The exceptions are formatting it for publication as an RFC or translating it into languages other than English.
Table of Contents ποΈ
1. Introduction ....................................................3
2. Requirements Notation ...........................................4
3. Information Model Demarcation ...................................5
4. Information Model Specification .................................6
4.1. Principal ..................................................6
4.1.1. Principal: Attributes ...............................6
4.1.2. Principal: Associations .............................7
4.2. KeySet .....................................................8
4.2.1. KeySet: Attributes ..................................8
4.2.2. KeySet: Associations ................................8
4.3. Key ........................................................9
4.3.1. Key: Attributes .....................................9
4.3.2. Key: Associations ..................................10
4.3.3. Key: Remarks .......................................10
4.4. Policy ....................................................10
4.4.1. Policy: Attributes .................................10
4.4.2. Mandatory-to-Implement Policy ......................11
5. Implementation Scenarios .......................................11
5.1. LDAP Backend to KDC .......................................12
5.2. LDAP Frontend to KDC ......................................12
5.3. SOAP ......................................................12
5.4. NETCONF ...................................................12
6. Security Considerations ........................................12
7. Acknowledgments ................................................13
8. References .....................................................13
8.1. Normative References ......................................13
8.2. Informative References ....................................14
1. Introduction π
Okay, so the Kerberos version 5 authentication service in [RFC4120] explains how a Key Distribution Center (KDC) provides authentication to clients. But RFC 4120 doesn't say how a KDC is managed, and several "kadmin" servers have popped up since RFC 4120 was written. This document covers the services you need to administer a KDC, plus the underlying information model that a kadmin-type service assumes. π
The information model is written in terms of "attributes" and either "services" or "interfaces". Those particular words must not be taken to imply any specific modeling paradigm, though. It's not an object-oriented model, and it's not meant to be a Lightweight Directory Access Protocol (LDAP) [RFC4510] schema either. The author describes the intended semantics and syntax in prose. An LDAP schema based on this model will be more precise about syntax while keeping the same semantics, which is very on-brand for it π§
Implementations of this document MAY decide to change the names used (e.g., principalName). If they do, an implementation MUST provide a name-to-name mapping to this document. Schema languages may have different typographical conventions, like using an uppercase letter (as in camelCase) versus using _ and - to separate words in a name. Implementations MUST call out such conventions explicitly π£
Implementations of this document MUST be able to support default values for attributes, and they MUST have the ability to specify syntax for attribute values π
2. Requirements Notation π
This document uses the standard key words ("MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL") defined in [RFC2119]. But the definitions are modified as described below, and the reason is a big deal: the Kerberos working group talked about it at length π£οΈ
This document describes an information model for Kerberos 5, but it doesn't directly describe any mapping onto a particular schema or modeling language. So an implementation of this model is a mapping to such a language, like an LDAP or SQL schema. That's why the standard normative key words need precise definitions.
The terms "MUST" and "REQUIRED" mean that a schema implementing this model must have a way to represent a feature. In other words, it's mandatory to implement it in the schema. Unless otherwise specified, though, the feature may be an optional element in the chosen schema definition language.
"MUST" also means that a KDC or administrative interface implementing this information model has to provide the feature and the associated behavior, consistent with the schema.
For example, principalName (see Section 4.1.1.1) represents the name of a principal. In an LDAP schema, for instance, it may be represented as an optional attribute, even though every KDC implementing this specification must support it.
The terms "MAY" and "OPTIONAL" mean that it's optional for a KDC or administrative interface implementing this information model to implement the feature. These terms also mean that implementing the feature in the schema is optional.
Schema implementers should be aware that, unless the schema definition can represent critical but optional elements, language confusion can arise. That happens when optional elements are used but not understood by all implementations in a particular deployment π
The expression "MUST NOT be OPTIONAL" means that a feature MUST be implemented ("MUST" per the definition in [RFC2119]), and it must also not be marked as optional in the schema language. Basically, the feature is both mandatory to implement and must be present in all representations of the object it applies to.
Heads up, bestie: "MUST NOT be OPTIONAL" is the strongest version of this. The feature is required in the implementation AND in every schema representation. No wiggle room π
The terms "SHOULD" and "RECOMMENDED" mean that the consequences of not implementing the feature as if it were described with the "MUST" keyword must be carefully weighed before choosing a different course. These terms also imply that interoperability concerns may come up if you don't follow the recommended practice in a schema that implements this model.
Context decides whether the "SHOULD" key word applies to the schema, to the underlying behavior of the KDC, or to both. For example, when this document says that principalIsDisabled (see Section 4.1.1.4) SHOULD default to FALSE, that statement recommends both the behavior of KDCs and how that behavior is represented in the schema β¨
3. Information Model Demarcation πΊοΈ
The information model in Section 4 describes objects, their properties, and the relationships between those objects. These elements give an abstract view of the data represented in a KDC. It's really important to get that the information model is not a schema. The way objects are compared for equality, beyond what's implied by a syntax specification, is not part of this specification. Neither is the ordering between the elements of a particular syntax π ββοΈ
More work on Kerberos will definitely prompt updates to this information model to reflect changes in what the KDC does. Those extensions should always use a normative reference to the relevant RFCs when detailing the change in KDC function.
This model describes a number of elements related to password policy management. Not all of them are unique to Kerberos. For example, an LDAP implementation of this model should bring in existing LDAP schema where the functions overlap, instead of defining new Kerberos-specific elements. Don't reinvent the wheel, babe π
4. Information Model Specification π
4.1. Principal π
The fundamental entity stored in a KDC is the principal. The principal is associated with keys, and it generalizes the "user" concept. The principal MUST be implemented in full and MUST NOT be OPTIONAL in an implementation
4.1.1. Principal: Attributes
4.1.1.1. principalName
The principalName MUST uniquely identify the principal within the administrative context of the KDC. It also MUST be equivalent to the string representation of the principal name (see Section 2.1.1 of [RFC1964]), including, if applicable for the name type, the realm.
The attribute MAY be multivalued if the implementation supports aliases, enterprise names, or both. In that case, exactly one of the principalName values MAY be designated as the canonical principalName. If the implementation supports encryption types (enctypes) that require salt, exactly one of the values of principalName MAY be designated as the canonical salting principalName. Tons of options, bestie, but they all have rules π§
Implementations (i.e., schema) that support enterprise names, aliases, or both SHOULD provide efficient lookup of principal objects based on the alias or enterprise name. That way, finding the right principal is fast and easy π¦
4.1.1.2. principalNotUsedBefore π°οΈ
okay so the principal MUST NOT be used before this date π ββοΈ the syntax of this attribute MUST be Internet date/time format from [RFC3339] π and it MUST be single-valued β¨
4.1.1.3. principalNotUsedAfter π
same energy but backwards π the principal MUST NOT be used after this date. the syntax MUST be Internet date/time format from [RFC3339] π and it MUST be single-valued π¦
4.1.1.4. principalIsDisabled π«
this one is a boolean that's used to disable a principal π it SHOULD default to boolean FALSE πΈ so, like, your principal's chill unless you say otherwise π«Ά
4.1.1.5. principalLastCredentialChangeTime π
single-valued attribute that holds the time of the last successful change of credentials (think password or private key) tied to this principal ποΈ its syntax MUST be Internet date/time format from [RFC3339] β°
4.1.1.6. principalCreateTime π
single-valued attribute with the time and date when this principal was created π° the syntax MUST be Internet date/time format from [RFC3339] π
4.1.1.7. principalModifyTime βοΈ
single-valued attribute with the time and date when this principal was last modified π
BUT changes to credentials don't count here (those live in principalLastCredentialChangeTime) π syntax MUST be Internet date/time format from [RFC3339] π
4.1.1.8. principalMaximumTicketLifetime ποΈ
single-valued attribute holding the time, in seconds, for the maximum lifetime of a ticket issued for this principal β³β¨
4.1.1.9. principalMaximumRenewableTicketLifetime π
single-valued attribute holding the delta time, in seconds, for how long a ticket may be renewed for this principal π§ it's the cap on renewals, basically π
4.1.1.10. principalAllowedEnctype π§©
this OPTIONAL multivalued attribute lists the enctypes allowed for this principal π if it's empty or absent, then any enctype the implementation supports is allowed for this principal π
this one is a policy attribute, so it restricts ALL uses of enctypes, including server, client, and session keys π data models MAY choose to use policy objects to represent more complex decision mechanisms π¦
4.1.2. Principal: Associations π€
each principal MAY be associated with 0 or more KeySets and MAY be associated with 0 or more Policies π the KeySet is an object in this model, because it has attributes attached to it (the key version number) π’ usually a principal has exactly one KeySet, but implementations MUST NOT assume that π ββοΈ an implementation of this standard MUST be able to handle the general case of multiple KeySets per principal π multiple KeySets can be super useful when you're doing a key rollover for a principal π
4.2. KeySet ποΈ
in Kerberos, principals are associated with zero or more symmetric secret keys, and each key has a key version number (kvno) and an enctype π§Ύ in this model we group keys by kvno into KeySet objects π¦ a principal can have zero or more KeySet objects, and each of those MUST have one or more keys π each KeySet is associated with exactly one principal π«Ά a schema derived from this model MAY lack a direct analogue of KeySet, as described in this document πΈ
it's expected that most Kerberos implementations will use a special-purpose interface for setting and changing principal passwords and keys π οΈ
if a server supports an enctype for a principal, that enctype must be present in at least one key for the principal in question β for any given enctype, a KeySet MUST NOT contain more than one key with that enctype π ββοΈ
the security of Kerberos 5 depends absolutely on the confidentiality and integrity of the key objects stored in the KDC π¨ implementations of this standard MUST facilitate, to the extent possible, an administrator's ability to place more restrictive access controls on KeySets than on other principal data, and to arrange for more secure backup for KeySets π this is not a drill, bestie π
4.2.1. KeySet: Attributes π·οΈ
4.2.1.1. kvno π’
the key version number π it's a single-valued attribute holding a non-negative integer π this number goes up by one each time a key in the KeySet is changed π
4.2.2. KeySet: Associations π
each KeySet MUST be associated with a set of one or more Keys ποΈ
4.3. Key π
implementations of this model MUST NOT force keys to be represented π ββοΈ so a schema that REQUIRED a key to be present wouldn't meet this constraint π
4.3.1. Key: Attributes π§Ύ
4.3.1.1. keyEncryptionType π
the enctype SHOULD be represented as an enumeration of the enctypes the KDC supports, using the string name ("encryption type") of the enctype from the IANA registry of Kerberos Encryption Type Numbers π one example is "aes128-cts-hmac-sha1-96" π
4.3.1.2. keyValue π§
the binary representation of the key data πΎ this MUST be a single-valued octet string π«§
4.3.1.3. keySaltValue π§
the binary representation of the key salt π§β¨ this MUST be a single-valued octet string πΈ
4.3.1.4. keyStringToKeyParameter πͺ
this MUST be a single-valued octet string representing an opaque parameter associated with the enctype π the parameter is specified using the string-to-key method defined in Section 3 of [RFC3961] π
4.3.1.5. keyNotUsedBefore β³
the key MUST NOT be used before this date π ββοΈ the syntax of this attribute MUST be semantically equivalent to the standard ISO date format ([RFC3339]) π and it MUST be single-valued π
4.3.1.6. keyNotUsedAfter π
the key MUST NOT be used after this date π ββοΈ the syntax MUST be semantically equivalent to the standard ISO date format ([RFC3339]) π and it MUST be single-valued π
4.3.1.7. keyIsDisabled π«
this is a boolean attribute that SHOULD be set to FALSE by default π· if it's TRUE, the key MUST NOT be used π
ββοΈ keyIsDisabled attributed is used to temporarily disable a key π§
4.3.2. Key: Associations π
None
4.3.3. Key: Remarks π
the security of the keys is an absolute requirement for operating Kerberos 5 π if keys are implemented, adequate protection from unauthorized modification and disclosure MUST be available, and is REQUIRED of the implementation π no cap, this part is serious π
4.4. Policy π
implementations SHOULD implement policies, but MAY allow them to be OPTIONAL π think of a policy as a "typed hole", meaning an opaque binary value paired with an identifier of the type of data inside that binary value π³οΈβ¨ both attributes (type and value) must be present π
4.4.1. Policy: Attributes π§Ύ
4.4.1.1. policyIdentifier π
the policyIdentifier MUST be globally unique π possible types of identifiers include:
implementations of this specification are expected to assign globally unique identifiers to the list of standard policies below, following best practices for identifier management for the schema language being used π§ β¨
4.4.1.2. policyIsCritical π¨
this boolean attribute indicates that the KDC MUST be able to correctly interpret and apply the policy for the principal to be used π§ no skipping this one, babe π
4.4.1.3. policyContent π¦
this optional single opaque binary value stores a representation of the policy π in general, a policy can't be fully expressed using attribute-value pairs π the policyContent is OPTIONAL in the sense that an implementation MAY use it to store an opaque value for policy types that aren't directly representable in that implementation π«§
4.4.1.4. policyUse π§
this optional single enumerated string value describes the use of the policy πΊοΈ implementations SHOULD provide this attribute, and MUST (if the attribute is implemented) describe the enumerated set of possible values π the goal is to give an initial context-based filter π
4.4.2. Mandatory-to-Implement Policy π
all implementations that represent policy objects MUST be able to represent the policies listed in this section π implementations don't have to use the same underlying data representation for the policyContent binary value, but they SHOULD use the same OIDs as the policyIdentifier π in general, expressing policy might need a Turing-complete language π€― this specification doesn't try to model a policy-expression language, so don't worry about that π
4.4.2.1. Password Quality Policy π
password quality policy controls the requirements the KDC places on new passwords πͺ
4.4.2.2. Password Management Policy π
password management policy controls how passwords are changed π
4.4.2.3. Keying Policy ποΈ
a keying policy specifies the association of enctypes with new principals π§© for example, when a principal is created, one of the applicable keying policies is used to decide which set of keys gets associated with that principal π
4.4.2.4. Ticket Flag Policy π«
a ticket flag policy specifies the ticket flags allowed for tickets issued for a principal π³οΈβπ
5. Implementation Scenarios π
there are several ways to implement an administrative service for Kerberos 5 based on this information model π§ here are a few of them β¨
5.1. LDAP Backend to KDC ποΈ
given an LDAP schema implementation of this information model, you could build an administrative service by backending the KDC to a directory server where principals and keys are stored π using the security mechanisms available on the directory, server keys are protected from access by anyone apart from the KDC π administration of principals, policy, and other non-key data happens through the directory server, while keys are modified using the set/change password protocol [PASSWORD] π
5.2. LDAP Frontend to KDC πͺ
another way to give the KDC a directory interface is to implement an LDAP frontend to the KDC that exposes all non-key objects as entries and attributes π§Ύ like the example above, all keys are modified using the set/change password protocol [PASSWORD] π in this scenario, the implementation would typically not use a traditional LDAP implementation, but would treat LDAP as a protocol for accessing data in the native KDC database π§ β¨
5.3. SOAP π«§
given an XML schema implementation of this information model, you could build a SOAP interface to the KDC π this situation shows off the value of creating an abstract information model that can be mapped to multiple schema representations π
5.4. NETCONF π°οΈ
given a YAML (YAML Ain't Markup Language) implementation of this information model, you could create a NETCONF-based interface to the KDC π§ that would let you manage the KDC from standard network management applications π
6. Security Considerations β¨
okay bestie, this section is SERIOUS but also kind of iconic π The model in this doc describes an abstract information model for Kerberos 5, and Kerberos 5 totally depends on the keys stored in the KDC π So keys MUST NOT be sent in the clear over the network π ββοΈ and they're meant to be treated as write-only attributes. They SHALL only be modified through the administrative interface, and only by the change-password protocol [PASSWORD] π
Exposing a KDC's object model usually means objects can be modified, deleted, or both π And not every principal is equal, babe π Deleting krbtgt/EXAMPLE.COM@EXAMPLE.COM effectively disables the EXAMPLE.COM realm π So access control is literally paramount to the security of any implementation π«Ά
This document does not mandate access control π That just means access control is outside the scope of this standard information model. It may not be reachable through any protocol based on this model. And if access control objects get exposed through an extension to this model, the mere presence of access control can itself be an attack point, because it gives away info about principals with elevated rights π¬ main character villain energy, not the vibe π¦
7. Acknowledgments πΈ
The author wants to thank Love Hoernquist-Aestrand and Sam Hartman for their important contributions to this document π«Άπ
8. References π
8.1. Normative References π
[RFC1964]Linn, J., "The Kerberos Version 5 GSS-API Mechanism", RFC 1964, June 1996. π§[RFC2119]Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. π[RFC3339]Klyne, G., Ed. and C. Newman, "Date and Time on the Internet: Timestamps", RFC 3339, July 2002. β[RFC3961]Raeburn, K., "Encryption and Checksum Specifications for Kerberos 5", RFC 3961, February 2005. π[RFC3986]Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005. π[RFC4120]Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The Kerberos Network Authentication Service (V5)", RFC 4120, July 2005. π¦[RFC4122]Leach, P., Mealling, M., and R. Salz, "A Universally Unique IDentifier (UUID) URN Namespace", RFC 4122, July 2005. π[RFC4517]Legg, S., "Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules", RFC 4517, June 2006. π
8.2. Informative References π
[PASSWORD]Williams, N., "Kerberos Set/Change Key/Password Protocol Version 2", Work in Progress, November 2008. π[RFC4510]Zeilenga, K., "Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map", RFC 4510, June 2006. πΊοΈ
Author's Address π§
Leif Johansson Swedish University Network Thulegatan 11 Stockholm Sweden
EMail: leifj@sunet.se URI: http://www.sunet.se
That's the whole thing, bestie!! πβ¨ You made it through all of RFC 6880 π«Ά Iconic behaviour, no cap π
π¦ where this page comes from
- ietf: rfc6880 2013-03
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms