Re: [kitten] RFC2743 errata 4251

Nico Williams <nico@cryptonector.com> Mon, 15 December 2014 17:50 UTC

Return-Path: <nico@cryptonector.com>
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 979661A86EB for <kitten@ietfa.amsl.com>; Mon, 15 Dec 2014 09:50:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.666
X-Spam-Level:
X-Spam-Status: No, score=-1.666 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, IP_NOT_FRIENDLY=0.334, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=no
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 vLH3C0elcOaI for <kitten@ietfa.amsl.com>; Mon, 15 Dec 2014 09:50:39 -0800 (PST)
Received: from homiemail-a35.g.dreamhost.com (sub4.mail.dreamhost.com [69.163.253.135]) by ietfa.amsl.com (Postfix) with ESMTP id B5A271A86E9 for <kitten@ietf.org>; Mon, 15 Dec 2014 09:50:39 -0800 (PST)
Received: from homiemail-a35.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a35.g.dreamhost.com (Postfix) with ESMTP id 7F36654073; Mon, 15 Dec 2014 09:50:39 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=cryptonector.com; h=date :from:to:cc:subject:message-id:references:mime-version :content-type:in-reply-to; s=cryptonector.com; bh=BS1+SSShIEGY9r Kbaru73msJElg=; b=iGllqY4HvhKemKvIFQ1Q7jrO2fiYnltkQ3brd7WCjXSH9g k8ISPmYPIGAvmOmH1eFdHTZnWDaO+akjT5x/rrR4N5VPTm9ndOgpTA0cVwKM0W5v N8CVTo7r0MBO5wW/U3bjIny7HGJWmL2twqtYRIpUA52snGMxfRYBanfxcdYY0=
Received: from localhost (108-207-244-174.lightspeed.austtx.sbcglobal.net [108.207.244.174]) (Authenticated sender: nico@cryptonector.com) by homiemail-a35.g.dreamhost.com (Postfix) with ESMTPA id DF3805406F; Mon, 15 Dec 2014 09:50:38 -0800 (PST)
Date: Mon, 15 Dec 2014 11:50:38 -0600
From: Nico Williams <nico@cryptonector.com>
To: Greg Hudson <ghudson@mit.edu>
Message-ID: <20141215175033.GF3241@localhost>
References: <20141108014820.3278A1AFAB@ld9781.wdf.sap.corp> <20141110162504.GA3412@localhost> <alpine.GSO.1.10.1411241330400.19231@multics.mit.edu> <20141124185114.GM3200@localhost> <alpine.GSO.1.10.1412091618550.23489@multics.mit.edu> <20141209215519.GI12979@localhost> <alpine.GSO.1.10.1412091856160.23489@multics.mit.edu> <20141210002441.GP12979@localhost> <alpine.GSO.1.10.1412101349030.23489@multics.mit.edu> <548F185E.70701@mit.edu>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <548F185E.70701@mit.edu>
User-Agent: Mutt/1.5.21 (2010-09-15)
Archived-At: http://mailarchive.ietf.org/arch/msg/kitten/Ixw8wp9upfXlC-VeIELTg6Jy8cw
Cc: kitten@ietf.org
Subject: Re: [kitten] RFC2743 errata 4251
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: Mon, 15 Dec 2014 17:50:40 -0000

On Mon, Dec 15, 2014 at 12:20:30PM -0500, Greg Hudson wrote:
> On 12/10/2014 01:57 PM, Benjamin Kaduk wrote:
> >      Though future GSS-API extensions may add new uses of asynchronous
> >      security context tokens and ways to process them, applications
> >      using the GSS-API version 2, update 1, should generally call
> >      GSS_Delete_sec_context() after calling GSS_Process_context_token(),
> >      when the latter returns GSS_S_COMPLETE or GSS_S_FAILURE.
> 
> I don't like the wording of this part.  Encouraging applications to
> assume that context tokens destroy the context essentially closes the
> door to specifying context tokens which don't.
> 
> (To be clear: saying that applications must eventually call
> GSS_Delete_sec_context() is fine; saying that they should do so
> immediately after a GSS_S_COMPLETE from GSS_Process_context_token() is
> not fine.)

GSS-APIv2u1 callers can still call GSS_Unwrap(), GSS_VerifyMIC(), and
GSS_Pseudo_random()[*], and even GSS_Wrap() and GSS_GetMIC() before
calling GSS_Delete_sec_context(), however, as it is today processing an
async context token does mean that the other peer cannot continue.
Therefore the caller of GSS_Process_context_token(), while they can
continue to process per-msg tokens from the peer, has to get around to
calling GSS_Delete_sec_context().  Sure, exiting, crashing, hanging
around doing nothing -- these are also options, but not really desirable
ones.  In v2u1, the peer has indicated that it can't continue, so
calling GSS_Wrap() and GSS_GetMIC() does the app no good[**].

Thus the word "generally".  It's a bit of a weasel word that captures
all of the above possibilities.

Thus also the very specific reference to a GSS-API version (v2u1): it's
quite true that a GSS-APIv2u1 application could not properly handle a v3
extension that uses async context tokens.  What could a v2u1 application
possibly do to properly handle such an extension?  How could it interpret
the major/minor status codes (other than GSS_S_DEFECTIVE_TOKEN) from
GSS_Process_context_token() to determine whether the app should
continue?  If it can't, then how could it decide whether to keep going
instead of getting around to calling GSS_Delete_sec_context()?

I don't see how a GSS-APIv2u1 application could make that determination.

A GSS-APIv2u1 app just has to end up calling GSS_Delete_sec_context()
when GSS_Process_context_token() returns either GSS_S_COMPLETE or
GSS_S_FAILURE -- and "soon" after, too.

[*]  Hmmm, should we consider GSS_Pseudo_random() to be part of a v2u2?

[**] A vwu1 peer could have done GSS_Export_sec_context(), then imported
     it twice and then called GSS_Delete_sec_context() on one of them,
     producing a context deletion token, and sent it, while then
     continuing to use the second imported version.  This would be
     rather tortured behavior!  No app does this.

Nico
--