Re: 9.2.2 Cipher fallback and FF<->Jetty interop problem

Greg Wilkins <gregw@intalio.com> Thu, 18 September 2014 23:37 UTC

Return-Path: <ietf-http-wg-request@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A491D1A05E5 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 18 Sep 2014 16:37:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.931
X-Spam-Level:
X-Spam-Status: No, score=-7.931 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-1.652, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 LuifGVdRF8yW for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 18 Sep 2014 16:37:03 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B2C851A889F for <httpbisa-archive-bis2Juki@lists.ietf.org>; Thu, 18 Sep 2014 16:37:02 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1XUlCX-0005VG-Vx for ietf-http-wg-dist@listhub.w3.org; Thu, 18 Sep 2014 23:33:26 +0000
Resent-Date: Thu, 18 Sep 2014 23:33:25 +0000
Resent-Message-Id: <E1XUlCX-0005VG-Vx@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <gregw@intalio.com>) id 1XUlBy-0005To-Pf for ietf-http-wg@listhub.w3.org; Thu, 18 Sep 2014 23:32:50 +0000
Received: from mail-wi0-f169.google.com ([209.85.212.169]) by maggie.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <gregw@intalio.com>) id 1XUlBx-00021a-8d for ietf-http-wg@w3.org; Thu, 18 Sep 2014 23:32:50 +0000
Received: by mail-wi0-f169.google.com with SMTP id hi2so245981wib.0 for <ietf-http-wg@w3.org>; Thu, 18 Sep 2014 16:32:22 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=m5cpv4bBMydI3n+DzzNoy41JZy5PvCJf9QPRUpGw6IE=; b=R5o1OZ5FzKOrfL3uV1Ax366m8smnJQsmJip1v3Hg0vGYywpq9l9W0BkTR6VL9kmPKs MsgLeQout6yZpizF+a7WFOePR48w6PApKRDKzLvPOc1KiLI+zyAH2x1/6mVPXyqF8Vxy 0D9QiziM+TocI70y8fbCo617AD8FPsrR4kpnyACcSNsYkgjBue26eh+zfCeulj5L/Xtd Ku2SXo1cbiKUYfG8n33kfkE216VMMGn/LW28i80Sa0yZhu0wjaIm96WGdYemRsQwxQQ5 u3SYej9rm7ENS5a4hqSGKOFFLDz3HGjjSFBVR8/onZ9MdbLA+xUQQdd+O2XPi5HoeyqO 1+9g==
X-Gm-Message-State: ALoCoQnFb8zfngVjRbQFrhdD7+MiMXQCAOmQwxXdSYFCqYnk7bSIG6SwthY6zYcaKK/2j5kHMeK8
MIME-Version: 1.0
X-Received: by 10.180.91.103 with SMTP id cd7mr7260671wib.67.1411083142422; Thu, 18 Sep 2014 16:32:22 -0700 (PDT)
Received: by 10.194.169.98 with HTTP; Thu, 18 Sep 2014 16:32:22 -0700 (PDT)
In-Reply-To: <CAOdDvNrdrBNi0kZDorR+8K-5-sPFipVr=U0kx5r56oPX_LhJSA@mail.gmail.com>
References: <CAH_y2NF+sP9BmYuD4QbeHpwC_uj67itzaAFCnRVC6f--KDYOgg@mail.gmail.com> <CAOdDvNopynmwvwWLXvuC0q7skunFXcfRoVHe9s7BKcoCwaBgWQ@mail.gmail.com> <CAH_y2NGXz7e3ejqy_rD=39=yYp3+cS1Dm6c3yFEYZg6tsUp5VQ@mail.gmail.com> <CABkgnnWAdm1TLP2XCKNU-6RPACLfooQV73R7Gpoemv+9PNULCA@mail.gmail.com> <CAH_y2NFLjok-NRJtOw1vmSy68sf393iSOgA4K599q0BSBqbNgA@mail.gmail.com> <CABkgnnU-CMtv8KvYU9n+QoPBOBshtQv3RfLy2qw=qVNb2O-qGg@mail.gmail.com> <CAH_y2NHrbH5Objwhq9E89QexhQtND4uOdy8q7OEckTCU17WqKg@mail.gmail.com> <CAH_y2NErRd4rxinSzEH3-uTjdWVkZu9o6sSKSf47LxfPFTRONw@mail.gmail.com> <20140917073241.GA7665@LK-Perkele-VII> <CAFewVt4pxE+9NpzYuzMKGmEdrDXzk50mC99ZbrM6M-uEoKXrHA@mail.gmail.com> <CAH_y2NGYcDvPcxDvaTRBP3p4Pnb7gw39WUDY3bNVnOGQjBgciQ@mail.gmail.com> <CAFewVt7+UAJYfKAR6DRZi_mqdzSaYw6L-pT1qg=UyOaP1ojhTw@mail.gmail.com> <CAH_y2NEhAEaPiUgi_vX6Oimw+Y-k3WrnL0gJZKPxQ8KZVuFVfw@mail.gmail.com> <CABkgnnU6C+TzJzdeQZhwXucuPUrPh1yyp1cpRd9jSePMjAnONQ@mail.gmail.com> <CAH_y2NEHZbWLof=ZWEa2UdjBw1Bf+kQCHzPkrhcSU80WaDibeA@mail.gmail.com> <CAOdDvNrdrBNi0kZDorR+8K-5-sPFipVr=U0kx5r56oPX_LhJSA@mail.gmail.com>
Date: Fri, 19 Sep 2014 09:32:22 +1000
Message-ID: <CAH_y2NH=skUXk0QwCs4uVqWE=iOLhi5K+kvARDUQ7uMeogrw9A@mail.gmail.com>
From: Greg Wilkins <gregw@intalio.com>
To: Patrick McManus <pmcmanus@mozilla.com>
Cc: HTTP Working Group <ietf-http-wg@w3.org>
Content-Type: multipart/alternative; boundary="f46d043be27e73f9ad05035f6519"
Received-SPF: permerror client-ip=209.85.212.169; envelope-from=gregw@intalio.com; helo=mail-wi0-f169.google.com
X-W3C-Hub-Spam-Status: No, score=-3.8
X-W3C-Hub-Spam-Report: AWL=-3.086, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7
X-W3C-Scan-Sig: maggie.w3.org 1XUlBx-00021a-8d 56143601fe2358287c3f6024b23ae7fa
X-Original-To: ietf-http-wg@w3.org
Subject: Re: 9.2.2 Cipher fallback and FF<->Jetty interop problem
Archived-At: <http://www.w3.org/mid/CAH_y2NH=skUXk0QwCs4uVqWE=iOLhi5K+kvARDUQ7uMeogrw9A@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/27129
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

On 19 September 2014 00:03, Patrick McManus <pmcmanus@mozilla.com> wrote:

> This thread is suffering a bit from wall-of-text syndrome for me. Is this
> the main point below?
>

Sorry - my bad.   I understand that verbose repetition is not an adequate
response to perceived insufficient consideration of a concern.  Yet my
concern remains and it is a very significant one.    I believe that
deployment of 9.2.2  will hurt h2 adoption, hinder future good cipher
maintenance and will result in widespread future connection failures.



> The scenario as I understand it is:...
> I would say that's an implementation bug in the client.
>

I would agree with you if 9.2.2 was written in precise language so that any
two implementations could be reasonable expected to arrive at the same
result now or into the future.  Currently I can find no definitive list of
acceptable AEAD modes. Wikipeadia lists : CCM
<http://en.wikipedia.org/wiki/CCM_mode>, GCM
<http://en.wikipedia.org/wiki/GCM_mode>, CWC
<http://en.wikipedia.org/wiki/CWC_mode>, EAX
<http://en.wikipedia.org/wiki/EAX_mode>, IAPM
<http://en.wikipedia.org/wiki/IAPM_mode>, and OCB
<http://en.wikipedia.org/wiki/OCB_mode>, but I don't think wikipeadia is a
sutiable reference for such things.    But even if such a list was
obtainable and even if we discount the possibility of AEAD being superseded
in the life of h2,   it is not clear if a h2 implementation is should
enforce this list with some form of name matching, or should it delegate
the decision to it's TLS layer via some isAE() API (and there is no
guarantee that such API will exist, specially for offloaded TLS).

But even if we call differing implementations of 9.2.2 a bug, it is a bug
that is very likely to occur and very likely to be repeated whenever
ciphers evolve. It a bug that has bad consequences.


> I read this as you've had some interop problems because of buggy pioneer
> implementations and evolving draft requirements -
>

I understand that the problem at this stage is both expected and due to
jetty not yet implementing 9.2.2.  However, I raised this example as it
shows the consequence of differing interpretations of 9.2.2 is
communication failure rather than falling back to h1 or weaker ciphers.

If we make communication failure a likely consequence of differing/updating
security policies, then we are introducing significant disincentives for
good cipher maintenance in the future.

The reason for my wall of words is that unless somebody can point out the
flaw in my argument, the introduction of a new AEAD mode or the superseding
of AEAD itself is going to result in widespread communication failures
and/or fallback to h1

There are multiple possible solutions to address this concern in full or
part:

   - drop 9.2.2
   - rewrite 9.2.2 in more precise language (no 'such as')
   - have an IANA registry of 9.2.2 appropriate keys and a requirement to
   keep current
   - enhance ALPN that that is communicates acceptable ciphers for each
   protocol choice
   - have a fallback requirement so that connections are retried
   - require clients that offer h2 to only offer h2 acceptable ciphers
   - move 9.2.2 requirements to a document that applies to h1 and h2
   - show the flaw in my logic/scenarios

I prefer dropping 9.2.2 but would be happy to discuss other alternatives.
Instead I've mostly just been given programming advise as to how to make my
server pick the right cipher/protocol today so that the underlying issue of
differing implementations of 9.2.2 can be ignored.


-- 
Greg Wilkins <gregw@intalio.com>
http://eclipse.org/jetty HTTP, SPDY, Websocket server and client that scales
http://www.webtide.com  advice and support for jetty and cometd.