Re: [kitten] New s2k and exposing the strength (iteration count) part of s2kparams

Nico Williams <nico@cryptonector.com> Mon, 02 December 2013 22:02 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 66DFD1ADF95 for <kitten@ietfa.amsl.com>; Mon, 2 Dec 2013 14:02:09 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001] 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 TP5O03Z95G0v for <kitten@ietfa.amsl.com>; Mon, 2 Dec 2013 14:02:07 -0800 (PST)
Received: from homiemail-a72.g.dreamhost.com (caiajhbdcbef.dreamhost.com [208.97.132.145]) by ietfa.amsl.com (Postfix) with ESMTP id 16BC01ADF79 for <kitten@ietf.org>; Mon, 2 Dec 2013 14:02:07 -0800 (PST)
Received: from homiemail-a72.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a72.g.dreamhost.com (Postfix) with ESMTP id CA60D6B0059; Mon, 2 Dec 2013 14:02:04 -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=loufnOUeC33iCQ ++KISf//wMfZU=; b=cXJAwJmWhrTMXuHy9/0u36MNHnu7eEKhrWoaR7tTyZHKFm A6xEPLiVwj5dMIR/cM2VQmglbQbYzZxew0luI5TGXd7oxAEkCOZTEyjVyps9xMyy Tzmf4OHaVnFKT8WNVvH6IP1CPepbIjbXUhUyro6zrURKOgC9jnN3TyEIgaSAQ=
Received: from localhost (108-207-244-174.lightspeed.austtx.sbcglobal.net [108.207.244.174]) (Authenticated sender: nico@cryptonector.com) by homiemail-a72.g.dreamhost.com (Postfix) with ESMTPA id 6AB326B0078; Mon, 2 Dec 2013 14:02:04 -0800 (PST)
Date: Mon, 02 Dec 2013 16:02:03 -0600
From: Nico Williams <nico@cryptonector.com>
To: Jeffrey Hutzelman <jhutz@cmu.edu>
Message-ID: <20131202220159.GX21240@localhost>
References: <32722_1386018295_rB2L4rvE023770_CAK3OfOgeJW9XoaNYKytKQqeTzjgCE4xNnhhhCyhBzZZ=kJ+o4w@mail.gmail.com> <1386020332.9407.118.camel@minbar.fac.cs.cmu.edu>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <1386020332.9407.118.camel@minbar.fac.cs.cmu.edu>
User-Agent: Mutt/1.5.21 (2010-09-15)
Cc: kitten@ietf.org
Subject: Re: [kitten] New s2k and exposing the strength (iteration count) part of s2kparams
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, 02 Dec 2013 22:02:09 -0000

On Mon, Dec 02, 2013 at 04:38:52PM -0500, Jeffrey Hutzelman wrote:
> On Mon, 2013-12-02 at 15:04 -0600, Nico Williams wrote:
> > 2)  [...]
> 
> Oh, look; you've just made my point for me. :-)

Maybe I should start writing backwards :)  (Hey look, I'm responding
backwards!)

> > 1) Expose the iteration count of the otherwise-opaque s2k params, and
> > standardize it, renaming it a strength indication and leaving its
> > interpretation as mechanism-specific.  I.e., from now on all new
> > enctypes with s2kparams will have theirs start with a four-octet,
> > network byte order unsigned measure of strength.

I conflated two things, actually: on-the-wire representation, and
logical representation.  Let me clarify my proposal in light of that:

 - every new enctype shall have a 32-bit unsigned integer strength
   measure

 - I don't care how that's represented on the wire (but I think it'd be
   convenient to stick to my original proposal above)

> I don't think that's necessary.  The s2k parameters aren't really
> opaque; they're enctype-specific and pseudo-opaque at the Kerberos
> protocol layer, in the same way that PA-DATA and authorization data are.

They are most definitely opaque (OCTET STRING) because they are enctype-
specific and layers above the enctype musn't interpret them, which means
that...

...in practice what has happened is that this opaqueness has been an
impediment to exposing these parameters in any interfaces (CLIs, GUIs,
BUIs, APIs) other than configuration, and changing the default therefore
results in non-interoperability (e.g., can't use ktutil to add password-
derived keys to a keytab -- I know, that's almost a useful authorization
feature, except it's neither).

Yes, we could preserve opaqueness of s2kparams at all layers above the
enctype and yet manage to add suitable interfaces.  But we've had a
decade and we haven't.  I think that's evidence that the original
approach hasn't worked well.  We should either hardcode the s2kparams or
provide at least one knob that all can share.

> IMHO it works better that way, because it means we can carry such things
> end-to-end without all of the intermediate pieces having to understand
> them.  This has brought us extensibility that otherwise would have been
> impossible, and even some that we previously thought _was_ impossible
> (e.g. ticket extensions using a magic enctype).

In theory I agree, in practice I don't.

> It might be useful for Kerberos libraries, admin tools, and KDC
> implementations to include interfaces for managing s2k parameters.

It most definitely would be.  It hasn't happened.  We've had a decade.
Perhaps if we make such interfaces a requirement implementors will get
to it?  I doubt it...  There's no Internet standard-compliance police.

> However, I don't think doing so requires that we mandate that future
> enctypes use a particular format for s2k parameters, or use a single
> linear "strength" parameter.  Future S2K algorithms may have arbitrary
> numbers of parameters, and while it may be possible and even desirable
> to compute a single "strength indication" from those parameters, the
> operation is not likely to be reversible, which means that s2k params
> will need to encode the actual individual parameters.

I understand this quite well.  I don't think that argument will cause
implementors to finally add the missing interfaces.  Therefore I'd
rather settle for a much-more-likely-to-succeed compromise.  A single
synthetic strength measure is *clearly* problematic (you and I, and
others on this list too, have commiserated over SASL's SSF many a time,
so you know I agree), but for s2kparams it's much more workable and less
dangerous than for mechanisms that involve negotiations (which is half
the source of SSF's problems).

Nico
--