Skip to main content

1.5. Extending Kerberos without Breaking Interoperability

Overview​

As the deployed base of Kerberos implementations grows, extending Kerberos becomes more important. This section provides guidelines to enable future implementations to maintain interoperability.

Extension Mechanism​

Kerberos provides a general mechanism for protocol extensibility:

  • Protocol messages contain typed holes
  • Sub-messages contain an octet-string with an integer defining interpretation
  • Integer types are registered centrally
  • Can be used for vendor extensions and IETF standardizations

Definition: In this document, "extension" refers to defining a new type to insert into an existing typed hole, not adding new fields to ASN.1 types (unless explicitly stated).

1.5.1. Compatibility with RFC 1510​

Limitations​

Existing Kerberos message formats cannot readily be extended by adding fields to ASN.1 types:

  • Sending additional fields often results in entire message being discarded
  • No error indication provided

Requirements for Implementations​

All new or modified implementations that receive an unknown message extension:

  • SHOULD: Preserve the encoding of the extension
  • SHOULD: Ignore its presence
  • MUST NOT: Decline a request simply because an extension is present

Exception: Authorization Data​

If an unknown authorization data element type is received by a server (other than ticket-granting service):

  • Either in an AP-REQ
  • Or in a ticket contained in an AP-REQ
  • Then authentication MUST fail

Rationale: Authorization data restricts ticket use. If service cannot determine whether restriction applies, security weakness may result.

Best Practice: Optional authorization elements SHOULD be enclosed in AD-IF-RELEVANT element.

Ticket-Granting Service Behavior​

The TGS:

  • MUST ignore but propagate to derivative tickets any unknown authorization data types
  • Exception: If data types are embedded in MANDATORY-FOR-KDC element, request will be rejected

1.5.2. Sending Extensible Messages​

Core Principle​

Care must be taken to ensure old implementations can understand messages sent to them, even if they don't understand an extension being used.

Rule: Unless sender knows an extension is supported, the extension cannot change the semantics of the core message or previously defined extensions.

Example Scenario​

An extension including key information necessary to decrypt encrypted part of KDC-REP:

  • Can only be used when recipient is known to support the extension
  • Client could indicate support via padata element in AS-REQ sequence
  • KDC should only use extension if padata element is present

Best Practice: If policy requires the extension, return an error indicating extension is required rather than using it when recipient may not support it. This makes debugging easier.

Reference​

For complete technical details, refer to the original RFC 4120 Section 1.5.