Re: [kitten] Review of draft-ietf-kitten-channel-bound-flag-04

Sam Hartman <hartmans-ietf@mit.edu> Thu, 28 February 2019 16:03 UTC

Return-Path: <hartmans-ietf@mit.edu>
X-Original-To: kitten@ietfa.amsl.com
Delivered-To: kitten@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A0732130F03 for <kitten@ietfa.amsl.com>; Thu, 28 Feb 2019 08:03:35 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.253
X-Spam-Level:
X-Spam-Status: No, score=-0.253 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RDNS_DYNAMIC=0.982, SPF_SOFTFAIL=0.665] autolearn=no autolearn_force=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 E4x6Qs5ZhM-6 for <kitten@ietfa.amsl.com>; Thu, 28 Feb 2019 08:03:33 -0800 (PST)
Received: from mail.suchdamage.org (ec2-52-9-186-167.us-west-1.compute.amazonaws.com [52.9.186.167]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7648B130EF1 for <kitten@ietf.org>; Thu, 28 Feb 2019 08:03:33 -0800 (PST)
Received: from localhost (localhost [127.0.0.1]) by mail.suchdamage.org (Postfix) with ESMTP id E2C882D128; Thu, 28 Feb 2019 11:03:32 -0500 (EST)
Received: from mail.suchdamage.org ([127.0.0.1]) by localhost (mail.suchdamage.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KubfkHJMJs6G; Thu, 28 Feb 2019 11:03:32 -0500 (EST)
Received: from carter-zimmerman.suchdamage.org (c-24-91-242-186.hsd1.ma.comcast.net [24.91.242.186]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "laptop", Issuer "laptop" (not verified)) (Authenticated sender: hartmans-laptop) by mail.suchdamage.org (Postfix) with ESMTPSA; Thu, 28 Feb 2019 11:03:32 -0500 (EST)
Received: by carter-zimmerman.suchdamage.org (Postfix, from userid 8042) id 9B0EEC0DD1; Thu, 28 Feb 2019 11:03:30 -0500 (EST)
From: Sam Hartman <hartmans-ietf@mit.edu>
To: Greg Hudson <ghudson@mit.edu>
Cc: Sam Hartman <hartmans@mit.edu>, Sam Hartman <hartmans-ietf@mit.edu>, kitten@ietf.org
References: <tslbm38vl8h.fsf@suchdamage.org> <tslva1gu67z.fsf@suchdamage.org> <65c84426-b909-244a-5721-3883141082d2@mit.edu>
Date: Thu, 28 Feb 2019 11:03:30 -0500
In-Reply-To: <65c84426-b909-244a-5721-3883141082d2@mit.edu> (Greg Hudson's message of "Wed, 27 Feb 2019 12:25:36 -0500")
Message-ID: <tsly35zoq7h.fsf@suchdamage.org>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/kitten/CJqkRABlpDxw6g-NRNPXu9YBja4>
Subject: Re: [kitten] Review of draft-ietf-kitten-channel-bound-flag-04
X-BeenThere: kitten@ietf.org
X-Mailman-Version: 2.1.29
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: <https://mailarchive.ietf.org/arch/browse/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, 28 Feb 2019 16:03:36 -0000

>>>>> "Greg" == Greg Hudson <ghudson@mit.edu> writes:

    Greg> On 2/18/19 4:39 PM, Sam Hartman wrote:
    >> However, I think that the decision as to what to do should be
    >> based on analysis of applications where one side uses channel
    >> bindings and the other does not.  Since I'm not actually aware of
    >> any significant applications that do that, I'll hold off until my
    >> previous question on that issue is answered before forming my
    >> opinion on the correct behavior.

    Greg> I think the practical motivation for this draft is a desire to
    Greg> add channel bindings to application protocols which do not
    Greg> currently use them.  I believe HTTP Negotiate is commonly
    Greg> given as a candidate.  So, while I am not sure there are any
    Greg> applications in this category today, there is a desire to (at
    Greg> least temporarily) create some in the future.

HTTP negotiate seems like it will be an interesting design thought
exercise.

While working on Moonshot we spent some time trying to figure out how we
would approach channel binding for HTTP negotiate.

It seemed like deployment considerations made it kind of tricky.

Do I use unique or endpoint channel bindings?  That depends on several
factors:

* To use unique channel bindings I need to produce the GSS-API token on
  the client after the TLS connection is established.  That assumes a
  certain model for how the HTTP and TLS libraries interact.

* To use unique channel bindings on the server, I need access to  the
  appropriate hashes; that assumes my HTTP library and my TLS library
  make that available to whoever is producing the GSS token.  (In many
  but not all cases that will be part of the HTTP library)

OK, so just use endpoint channel bindings and be done with it.

Does the server actually know its endpoint channel binding?  If it's
behind a reverse proxy, that may depend a lot on the configuration.  TLS
may terminate at the reverse proxy.  The connection behind the reverse
proxy may be unencrypted, or it may be encrypted using a different
certificate.

We don't want to break things that work today.  Yes, channel bindings
would make that situation more secure, but HTTP negotiate has value
without channel bindings, demonstrated by the people who use it today.

Also, we've already found bugs in channel bindings (even for TLS).  So,
we probably want some sort of transition strategy.

So, it seems like you're almost always going to want some application
layer something to figure out whether channel bindings are supported on
both ends and whether to use them.  (And probably if they get used a
lot, which channel binding to use).
That's frustrating because it makes channel bindings not so simple.

Some thoughts:

The Moonshot behavior (null acceptor bindings ignores any initiator
  CB) makes it easier for people to withdraw from the channel binding
  process when  local configuration does not support channel binding.
If it weren't for there being multiple types of channel binding and a
  need to think about transitions, I'd argue that makes the Moonshot
  behavior clearly supperior especially if there are not currently
  applications that don't know whether they are doing CB.

Given that we probably should care about those issues, I'm not at all
sure I know what the right behavior should be for applications that do
not support this flag.

I'm still definitely in favor of the flag.  The more I look at this, I
don't think this is fixing a flaw in GSS-API, and I especially am not
seeing the security flaw.
I think it's adding a new capability with some tricky interoperability
and deployment considerations.