RFC 8129 PROPOSED STANDARD KERBEROS · AUTHENTICATION · SECURITY

Kerberos Auth Indicator: Authentication Indicator in Kerberos Tickets

A Kerberos ticket field that tells services how strongly the client was authenticated.

On rfc-editor.org ↗
PUBLISHED
March 2017
AUTHORS
A. Jain, N. Kinder, N. McCallum
STREAM
IETF
BUILDS ON
RFC 4120 — Kerberos V5
AD-TYPE NUMBER
97
ASN.1 TYPE
SEQUENCE OF UTF8String
ENCODING
DER
CONTAINER
AD-CAMMAC
IANA ACTIONS
None
DOI
10.17487/RFC8129

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                           A. Jain
Request for Comments: 8129                                  Georgia Tech
Updates: 4120                                                  N. Kinder
Category: Standards Track                                    N. McCallum
ISSN: 2070-1721                                            Red Hat, Inc.
                                                              March 2017


              Authentication Indicator in Kerberos Tickets

Abstract

   This document updates RFC 4120, as it specifies an extension in the
   Kerberos protocol.  It defines a new authorization data type,
   AD-AUTHENTICATION-INDICATOR.  The purpose of introducing this data
   type is to include an indicator of the strength of a client's
   authentication in service tickets so that application services can
   use it as an input into policy decisions.

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 7841.

   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/rfc8129.

Copyright Notice

   Copyright (c) 2017 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.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Document Conventions  . . . . . . . . . . . . . . . . . . . .   2
   3.  AD Type Specification . . . . . . . . . . . . . . . . . . . .   2
   4.  Assigned Numbers  . . . . . . . . . . . . . . . . . . . . . .   3
   5.  Security Considerations . . . . . . . . . . . . . . . . . . .   3
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   4
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   4
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .   4
     7.2.  Informative References  . . . . . . . . . . . . . . . . .   5
   Appendix A.  ASN.1 Module . . . . . . . . . . . . . . . . . . . .   6
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .   6
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   6

1.  Introduction

   Kerberos [RFC4120] allows secure interaction among users and services
   over a network.  It supports a variety of authentication mechanisms
   using its pre-authentication framework [RFC6113].  The Kerberos
   authentication service has been architected to support password-based
   authentication as well as multi-factor authentication using one-time
   password devices, public-key cryptography, and other
   pre-authentication schemes.  Implementations that offer
   pre-authentication mechanisms supporting significantly different
   strengths of client authentication may choose to keep track of the
   strength of the authentication that was used, for use as an input
   into policy decisions.

   This document specifies a new authorization data type to convey
   authentication strength information to application services.
   Elements of this type appear within an AD-CAMMAC (Authorization Data
   type Container Authenticated by Multiple Message Authentication
   Codes) [RFC7751] container.

2.  Document Conventions

   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 RFC 2119 [RFC2119].

3.  AD Type Specification

   The Key Distribution Center (KDC) MAY include authorization data of
   ad-type 97, wrapped in AD-CAMMAC, in initial credentials.  The KDC
   MAY copy it from a ticket-granting ticket into service tickets.

   The corresponding ad-data field contains the DER encoding [X.690] of
   the following ASN.1 [X.680] type:

   AD-AUTHENTICATION-INDICATOR ::= SEQUENCE OF UTF8String

   Each UTF8String value is a short string that indicates that a
   particular set of requirements was met during the initial
   authentication.  These strings are intended to be compared against
   known values.  They are not intended to store structured data.  Each
   string MUST be either:

   o  A URI that references a Level of Assurance Profile [RFC6711], or

   o  A site-defined string, which MUST NOT contain a colon, whose
      meaning is determined by the realm administrator.

   Authorization data elements of type AD-AUTHENTICATION-INDICATOR MUST
   be included in an AD-CAMMAC container so that their contents can be
   verified as originating from the KDC.  Elements of type
   AD-AUTHENTICATION-INDICATOR MAY safely be ignored by applications and
   KDCs that do not implement this element.

4.  Assigned Numbers

   RFC 4120 [RFC4120] is updated in the following way:

   o  The ad-type number 97 is assigned for AD-AUTHENTICATION-INDICATOR,
      updating the table in Section 7.5.4 of RFC 4120 [RFC4120].

   o  The table in Section 5.2.6 of RFC 4120 [RFC4120] is updated to map
      the ad-type 97 to "DER encoding of AD-AUTHENTICATION-INDICATOR".

5.  Security Considerations

   Elements of type AD-AUTHENTICATION-INDICATOR are wrapped in AD-CAMMAC
   containers.  AD-CAMMAC supersedes AD-KDC-ISSUED and allows both
   application services and the KDC to verify the authenticity of the
   contained authorization data.

   KDC implementations MUST use AD-CAMMAC verifiers as described in the
   security considerations of RFC 7751 [RFC7751] to ensure that
   AD-AUTHENTICATION-INDICATOR elements are not modified by an attacker.
   Application servers MUST validate the AD-CAMMAC container before
   making authorization decisions based on AD-AUTHENTICATION-INDICATOR
   elements.  Application servers MUST NOT make authorization decisions
   based on AD-AUTHENTICATION-INDICATOR elements that appear outside of
   AD-CAMMAC containers.

   Using multiple strings in AD-AUTHENTICATION-INDICATOR may lead to
   ambiguity when a service tries to make a decision based on the
   AD-AUTHENTICATION-INDICATOR values.  This ambiguity can be avoided if
   indicator values are always used as a positive indication of certain
   requirements being met during the initial authentication.  For
   example, if a "without-password" indicator is inserted whenever
   authentication occurs without a password, a service might assume this
   is an indication that a higher-strength client authentication
   occurred.  However, this indicator might also be inserted when no
   authentication occurred at all (such as anonymous PKINIT).

   Application service evaluation of site-defined indicators MUST
   consider the realm of original authentication in order to avoid
   cross-realm indicator collisions.  Failure to enforce this property
   can result in invalid authorization decisions.

6.  IANA Considerations

   This document does not require any IANA actions.

7.  References

7.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC4120]  Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The
              Kerberos Network Authentication Service (V5)", RFC 4120,
              DOI 10.17487/RFC4120, July 2005,
              <http://www.rfc-editor.org/info/rfc4120>.

   [RFC6113]  Hartman, S. and L. Zhu, "A Generalized Framework for
              Kerberos Pre-Authentication", RFC 6113,
              DOI 10.17487/RFC6113, April 2011,
              <http://www.rfc-editor.org/info/rfc6113>.

   [RFC7751]  Sorce, S. and T. Yu, "Kerberos Authorization Data
              Container Authenticated by Multiple Message Authentication
              Codes (MACs)", RFC 7751, DOI 10.17487/RFC7751, March 2016,
              <http://www.rfc-editor.org/info/rfc7751>.

   [X.680]    ITU-T, "Information technology -- Abstract Syntax Notation
              One (ASN.1): Specification of basic notation", ITU-T
              Recommendation X.680, ISO/IEC International Standard
              8824-1:2008, November 2008.

   [X.690]    ITU-T, "Information technology -- ASN.1 encoding rules:
              Specification of Basic Encoding Rules (BER), Canonical
              Encoding Rules (CER) and Distinguished Encoding Rules
              (DER)", ITU-T Recommendation X.690, ISO/IEC International
              Standard 8825-1:2008, November 2008.

7.2.  Informative References

   [RFC6711]  Johansson, L., "An IANA Registry for Level of Assurance
              (LoA) Profiles", RFC 6711, DOI 10.17487/RFC6711, August
              2012, <http://www.rfc-editor.org/info/rfc6711>.

Appendix A.  ASN.1 Module

   KerberosV5AuthenticationIndicators {
           iso(1) identified-organization(3) dod(6) internet(1)
           security(5) kerberosV5(2) modules(4)
           authentication-indicators(9)
   } DEFINITIONS EXPLICIT TAGS ::= BEGIN

   AD-AUTHENTICATION-INDICATOR ::= SEQUENCE OF UTF8String

   END

Acknowledgements

   Dmitri Pal (Red Hat)
   Simo Sorce (Red Hat)
   Greg Hudson (MIT)

Authors' Addresses

   Anupam Jain
   Georgia Tech
   225 North Ave NW
   Atlanta, GA  30332
   United States of America

   Email: ajain323@gatech.edu


   Nathan Kinder
   Red Hat, Inc.
   444 Castro St.
   Suite 500
   Mountain View, CA  94041
   United States of America

   Email: nkinder@redhat.com


   Nathaniel McCallum
   Red Hat, Inc.
   100 East Davie Street
   Raleigh, NC  27601
   United States of America

   Email: npmccallum@redhat.com

AI ELI5

On this page
PROBLEMKerberos supports weak and strong ways to authenticate, such as passwords, one-time password devices and public-key cryptography. Application services had no standard way to learn which strength was used.
MECHANISMThe Key Distribution Center (KDC) can add an authorization data element of ad-type 97, AD-AUTHENTICATION-INDICATOR, inside an AD-CAMMAC container. It holds a list of strings, each naming requirements that were met at initial authentication.
WHY IT MATTERSServices can use the indicators in policy decisions, provided they validate the AD-CAMMAC container first. The RFC updates RFC 4120 to assign the ad-type number.

§1Why Tickets Need an Authentication Indicator

Kerberos (RFC 4120) lets users and services interact securely over a network. Through its pre-authentication framework (RFC 6113) it supports password-based authentication, multi-factor authentication with one-time password devices, public-key cryptography and other schemes.

Those schemes can offer very different strengths of client authentication. An implementation may keep track of which strength was used and feed it into policy decisions. This document specifies a new authorization data type that conveys that information to application services. Its elements appear inside an AD-CAMMAC container (RFC 7751).

There are easy ways and hard ways to prove who you are. This gives the ticket a small label saying which way you used.

§2Where the Indicator Fits in a Ticket

The indicator is produced by the KDC, the party that checks the client at initial authentication, and it is read by application services. It travels as authorization data in a ticket: the KDC MAY include it in initial credentials and MAY copy it from a ticket-granting ticket into service tickets, so a service ticket can report how the client first proved its identity.

The element is wrapped in an AD-CAMMAC container, so the contents can be verified as originating from the KDC. Because KDCs and applications that do not implement the element MAY safely ignore it, adding it does not break existing deployments that never look at it.

The security office stamps the label when you first walk in, and the sticker stays on your badge as you move between rooms.

§3The AD-AUTHENTICATION-INDICATOR Type

The KDC MAY include authorization data of ad-type 97, wrapped in AD-CAMMAC, in initial credentials. It MAY copy the element from a ticket-granting ticket into service tickets. The ad-data field holds the DER encoding of this ASN.1 type:

AD-AUTHENTICATION-INDICATOR ::= SEQUENCE OF UTF8String

Each string is a short value showing that a particular set of requirements was met during the initial authentication. Strings are meant to be compared against known values, not to store structured data. Each one MUST be either:

  • a URI that references a Level of Assurance Profile (RFC 6711), or
  • a site-defined string whose meaning is set by the realm administrator, which MUST NOT contain a colon.

The elements MUST be included in an AD-CAMMAC container so their contents can be verified as coming from the KDC. Applications and KDCs that do not implement the element MAY safely ignore it.

The label is a short list of words, like a sticker that says "showed ID" or "used a key card". Only the building's own security office is allowed to put the sticker on.

THE ASN.1 TYPE (RFC 8129, APPENDIX A)
AD-AUTHENTICATION-INDICATOR
AD-AUTHENTICATION-INDICATOR ::= SEQUENCE OF UTF8String

§4Assigned Numbers

This RFC updates RFC 4120 in two ways. It assigns ad-type number 97 to AD-AUTHENTICATION-INDICATOR in the table in Section 7.5.4 of that RFC. It also updates the table in Section 5.2.6 to map ad-type 97 to "DER encoding of AD-AUTHENTICATION-INDICATOR". The IANA Considerations section says the document needs no IANA actions.

The number 97 is now officially reserved for this label in the Kerberos rulebook.

§5Security Considerations

Because the elements sit inside AD-CAMMAC, which supersedes AD-KDC-ISSUED, both application services and the KDC can verify them. KDC implementations MUST use AD-CAMMAC verifiers as described in RFC 7751 so an attacker cannot modify the indicators. Application servers MUST validate the container before making authorization decisions, and MUST NOT base decisions on indicators that appear outside an AD-CAMMAC container.

Multiple strings can make a decision ambiguous. The RFC advises always using indicators as a positive sign that requirements were met. Its example is a "without-password" indicator: a service might read it as stronger authentication, but it could also be inserted when no authentication occurred, such as anonymous PKINIT.

Services that evaluate site-defined indicators MUST consider the realm of original authentication, to avoid cross-realm collisions. Failing to do so can lead to invalid authorization decisions.

A label is only trustworthy if it is sealed by the security office, so guards must check the seal. A guard also has to know which building a sticker came from, because two buildings might use the same words differently.

§6References