Re: [kitten] New Version Notification for draft-kaduk-kitten-gss-loop-01.txt (fwd)

Jeffrey Hutzelman <jhutz@cmu.edu> Thu, 21 November 2013 16:10 UTC

Return-Path: <jhutz@cmu.edu>
X-Original-To: kitten@ietfa.amsl.com
Delivered-To: kitten@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 03E5D1ADFD9 for <kitten@ietfa.amsl.com>; Thu, 21 Nov 2013 08:10:00 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.725
X-Spam-Level:
X-Spam-Status: No, score=-4.725 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.525] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hcE7KObtjFoT for <kitten@ietfa.amsl.com>; Thu, 21 Nov 2013 08:09:58 -0800 (PST)
Received: from smtp01.srv.cs.cmu.edu (SMTP01.SRV.CS.CMU.EDU [128.2.217.196]) by ietfa.amsl.com (Postfix) with ESMTP id 622331ADFB6 for <kitten@ietf.org>; Thu, 21 Nov 2013 08:09:58 -0800 (PST)
Received: from [192.168.202.142] (pool-108-39-146-104.pitbpa.fios.verizon.net [108.39.146.104]) (authenticated bits=0) by smtp01.srv.cs.cmu.edu (8.13.6/8.13.6) with ESMTP id rALG9kdO005278 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 21 Nov 2013 11:09:48 -0500 (EST)
Message-ID: <1385050186.6315.15.camel@destiny.pc.cs.cmu.edu>
From: Jeffrey Hutzelman <jhutz@cmu.edu>
To: Nico Williams <nico@cryptonector.com>
Date: Thu, 21 Nov 2013 11:09:46 -0500
In-Reply-To: <7346_1385010106_rAL51j7j007404_20131121050138.GB3655@localhost>
References: <20131120235129.7E4E71AACA@ld9781.wdf.sap.corp> <alpine.GSO.1.10.1311201921370.23560@multics.mit.edu> <7346_1385010106_rAL51j7j007404_20131121050138.GB3655@localhost>
Content-Type: text/plain; charset="UTF-8"
X-Mailer: Evolution 3.8.4-0ubuntu1
Mime-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Scanned-By: mimedefang-cmuscs on 128.2.217.196
Cc: kitten@ietf.org, jhutz@cmu.edu
Subject: Re: [kitten] New Version Notification for draft-kaduk-kitten-gss-loop-01.txt (fwd)
X-BeenThere: kitten@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Common Authentication Technologies - Next Generation <kitten.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/kitten>, <mailto:kitten-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/kitten/>
List-Post: <mailto:kitten@ietf.org>
List-Help: <mailto:kitten-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/kitten>, <mailto:kitten-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 21 Nov 2013 16:10:00 -0000

On Wed, 2013-11-20 at 23:01 -0600, Nico Williams wrote:
> On Wed, Nov 20, 2013 at 07:40:28PM -0500, Benjamin Kaduk wrote:
> > On Thu, 21 Nov 2013, Martin Rex wrote:
> > >It is up to the mechanism implementation at which point during the
> > >handshake the src_name output parameter from gss_accept_sec_context()
> > >is populated.  The application caller MUST provide the exact same
> > >parameter as src_name to *ALL* iteration calls of gss_accept_sec_context()
> > 
> > Having recently completed a re-read of RFC 2743 and RFC 2744 (*),
> > I'm sad to say that I do not believe there is a normative reference
> > to support the MUST, there.  I really wish there was, but RFC 2743
> > only calls out the acceptor_cred_handle as being fixed between
> > iterations.
> 
> Well, no other interpretation is sensible but the one that Martin gave.
> Anything else surely would have been mentioned, and, at any rate, would
> not be sensible.
> 
> Why would the name of the initiator *as output to the application* vary
> as the security context token exchange progresses?

Perhaps there's some stackable thing during which the notion of
initiator name is refined as control passes from one mech to another?


That said, since we are writing advice to application implementors here,
and not a mechanism, the question is not the wide range of what
applications _might_ be allowed to do, but rather what we tell them they
_should_ do.

For initiators, the answer is relatively simple: of course you should
allocate everything up front, pass the same arguments on every call, and
not look at the outputs until context establishment is complete.  Of
course, there's the exception of prot_ready, which is AFAIK the only
output whose semantics are explicitly defined even when the context is
incomplete.

For acceptors, things get a bit dicier, because you have acceptors like
RXGK_GSSNegotiate, which get called once per round trip and want to be
completely stateless in between.  Fortunately for us, actually achieving
that would require the ability to export partially-established contexts,
which is already not well-defined.  Therefore, we can advise that
implementations have little choice but to retain some state, and thus
might as well follow the same conservative approach: allocate everything
up front, and don't look at anything other than prot_ready until the
end.



> It is torturing the language to say that gss_release_buffer() outputs a
> token.  It does not.  It modifies a buffer structure to mark it as
> "empty", but that's it.

Indeed.  At the abstract level, the buffer is not an output.  In the
specific case of the C bindings in RFC2744, the gss_buffer_t is
modified, but that's not the same thing as the buffer being an output;
it's just an artifact of the language bindings.


-- Jeff