Structure of the GSS Negotiation Loop

The information below is for an old version of the document
Document Type Active Internet-Draft (kitten WG)
Last updated 2014-12-24 (latest revision 2014-12-08)
Stream IETF
Intended RFC status Informational
Formats plain text pdf html bibtex
Additional URLs
- Mailing list discussion
Stream WG state WG Consensus: Waiting for Write-Up
Document shepherd Matthew Miller
Shepherd write-up Show (last changed 2014-12-24)
IESG IESG state I-D Exists
Consensus Boilerplate Unknown
Telechat date
Responsible AD (None)
Send notices to "Matthew Miller" <>
Network Working Group                                           B. Kaduk
Internet-Draft                                                       MIT
Intended status: Informational                          December 8, 2014
Expires: June 11, 2015

                 Structure of the GSS Negotiation Loop


   This document specifies the generic structure of the negotiation loop
   to establish a GSS security context between initiator and acceptor.
   The control flow of the loop is indicated for both parties, including
   error conditions, and indications are given for where application-
   specific behavior must be specified.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on June 11, 2015.

Copyright Notice

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

Kaduk                     Expires June 11, 2015                 [Page 1]
Internet-Draft    Structure of the GSS Negotiation Loop    December 2014

1.  Introduction

   The Generic Security Service Application Program Interface version 2
   [RFC2743] provides a generic interface for security services, in the
   form of an abstraction layer over the underlying security mechanisms
   that an application may use.  A GSS initiator and acceptor exchange
   messages, called tokens, until a security context is established.
   Such a security context allows for each party to authenticate the
   other, the passing of confidential and/or integrity-protected
   messages between the initiator and acceptor, the generation of
   identical pseudo-random bit strings by both participants [RFC4401],
   and more.

   During context establishment, security context tokens are exchanged
   synchronously, one at a time; the initiator sends the first context
   token.  The number of tokens which must be exchanged between
   initiator and acceptor in order to establish the security context is
   dependent on the underlying mechanism as well as the desired
   properties of the security context, and is in general not known to
   the application.  Accordingly, the application's control flow must
   include a loop within which GSS security context tokens are
   exchanged, which terminates upon successful establishment of a
   security context or an error condition.  The GSS-API, together with
   its security mechanisms, specifies the format and encoding of the
   context tokens themselves, but the application protocol must specify
   the necessary framing for the application to determine what octet
   strings constitute GSS security context tokens and pass them into the
   GSS-API implementation as appropriate.

   The GSS-API C bindings [RFC2744] provide some example code for such a
   negotiation loop, but this code does not specify the application's
   behavior on unexpected or error conditions.  As such, individual
   application protocol specifications have had to specify the structure
   of their GSS negotiation loops, including error handling, on a per-
   protocol basis.  [RFC4462], [RFC3645], [RFC5801], [RFC4752],
   [RFC2203] This represents a substantial duplication of effort, and
   the various specifications go into different levels of detail and
   describe different possible error conditions.  It is therefore
   preferable to have the structure of the GSS negotiation loop,
   including error conditions and token passing, described in a single
   specification, which can then be referred to from other documents in
   lieu of repeating the structure of the loop each time.  This document
   will perform that role.

   The necessary requirements for correctly performing a GSS negotiation
   loop are essentially all included in [RFC2743], but they are
   scattered in many different places.  This document brings all the
Show full document text