Re: [TLS] I-D Action: draft-ietf-tls-prohibiting-rc4-01.txt

Daniel Kahn Gillmor <dkg@fifthhorseman.net> Fri, 24 October 2014 16:50 UTC

Return-Path: <dkg@fifthhorseman.net>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4EAF21A8728 for <tls@ietfa.amsl.com>; Fri, 24 Oct 2014 09:50:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9] 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 ma9CqFJ7h1UB for <tls@ietfa.amsl.com>; Fri, 24 Oct 2014 09:50:38 -0700 (PDT)
Received: from che.mayfirst.org (che.mayfirst.org [209.234.253.108]) by ietfa.amsl.com (Postfix) with ESMTP id 15CB11A0177 for <tls@ietf.org>; Fri, 24 Oct 2014 09:50:34 -0700 (PDT)
Received: from [10.70.10.51] (unknown [38.109.115.130]) by che.mayfirst.org (Postfix) with ESMTPSA id 796ADF984 for <tls@ietf.org>; Fri, 24 Oct 2014 12:50:30 -0400 (EDT)
Message-ID: <544A834A.504@fifthhorseman.net>
Date: Fri, 24 Oct 2014 12:50:18 -0400
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 Icedove/32.0
MIME-Version: 1.0
To: tls@ietf.org
References: <CAO7N=i3gC=+qcgHU=aMKtRyT7tZV5fm=9gJii-=yOpcNECOEvA@mail.gmail.com> <20141022175238.GF19158@mournblade.imrryr.org> <544837FD.202@cs.tcd.ie> <2A0EFB9C05D0164E98F19BB0AF3708C71D3AF651E4@USMBX1.msg.corp.akamai.com> <5449A667.9040105@cs.tcd.ie> <20141024133728.GI19158@mournblade.imrryr.org> <544A5BB3.4000506@fifthhorseman.net> <20141024141215.GL19158@mournblade.imrryr.org> <544A680F.4080307@fifthhorseman.net> <20141024155407.GO19158@mournblade.imrryr.org>
In-Reply-To: <20141024155407.GO19158@mournblade.imrryr.org>
Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="hwOibkXoPlsmq1MTG0c1m8eEMbw14NlSp"
Archived-At: http://mailarchive.ietf.org/arch/msg/tls/i_5bgQ5Nn4FlnBiPbkgkouKamq0
Subject: Re: [TLS] I-D Action: draft-ietf-tls-prohibiting-rc4-01.txt
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tls/>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 24 Oct 2014 16:50:40 -0000

Hi Victor--

On 10/24/2014 11:54 AM, Viktor Dukhovni wrote:
> I am not familiar with any TLS policy pinning capabilities in Exim,
> Postfix, Sendmail or Qmail.

I didn't say "pinning", but "keeping state", which may or may not
include pinning.  postfix's sending MTA at least keeps track of whether
a given destination is considered "unavailable", see for example the
counts tracked and applied by
default_destination_concurrency_failed_cohort_limit.

> Unless this WG goes out of its way to break opportunistic TLS, it
> is working just fine today. :-)  None of the MTAs listed above have
> multi-stage TLS fallback.  TLS either works out of the box or is
> not used (cleartext fallback or transmission failure).

To be clear: if the remote peer appears to offer STARTTLS in EHLO, and
the local system invokes it but the TLS handshake fails/is aborted, then
the local system tries again without doing STARTTLS even though it is
offered by the peer.  is this right?  or does a TLS handshake failure
count as a complete transmission failure?  if it's a transmission
failure comparable to a TCP RST, and the message is re-queued for later,
what is tried on the future reconnection?  even if it just directly
retries in the clear, this is a "fallback dance" of a sort.

>> I also understand that suggesting this behavior without a patch can be
>> frustrating to MTA developers -- i'm sorry that i don't have time to
>> produce such a patch for Postfix now.
> 
> No problem, we would not accept the patch anyway.  Code complexity
> leads to bugs.

Yes, it would be simpler to just require TLS, but we're already past
that point if we're prioritizing deliverability over security while
trying to provide some security anyway.

>> If we take the fallback approaches described above, and each fallback
>> incurs a small delay, to avoid the peer reputation rejection scenarios,
>> then mail being delivered to RC4-only peers would be minorly delayed
>> upon first delivery, and mail being delivered to cleartext-only peers
>> would be doubly delayed for first delivery.
> 
> Cleartext fallback is much simpler, and the problem is non-existent.
> Simply allowing RC4 avoids the need for all the complex code you
> suggest.

As does simply not allowing RC4.  If we're taking measures to
accommodate broken/out-of-date/poorly-implemented peers, it's worth
thinking about how to scope those accommodations to have minimal
negative effect on better-implemented and more-capable peers, as well as
on how to work around specific forms of misconfiguration that happen to
be prevalent.

>>> Browser analogies and strategies work poorly or not at all when
>>> misapplied to SMTP.
>>
>> I wrote the entire original message thinking specifically about SMTP, fwiw.
> 
> And your approach is essentially a transplant of browser behaviour.
> "This is not your browser's TLS".

It is actually not browser behavior.  Browsers today appear to fall back
based on the TLS version (see the FALLBACK_SCSV discussion here), but
not on ciphersuite choices or other features.  Popular browsers are in
the process of working up the courage to not to fall back to SSLv3
anymore, fwiw.  These are different modes of fallback operation than
we've been discussing, and they are distinct (and have different goals
and behaviors) from any sort of OS logic (they refuse to fall back to
cleartext, among other things).

TLS as a protocol is specified such that correct peers should never need
to do any kind of fallback dance, even if their implementations support
different versions.  Browsers layer in a fallback dance on top of TLS
(which sometimes makes bugs like POODLE exploitable) because they (like
MTAs) also value connectivity at least as much as security.

But a browser fallback dance and an MTA fallback dance are different,
and have subtly different features.

Other TLS applications (like Submission or IMAPS) have no fallback dance
at all, because of the nature of the pre-established relationship
between communication partners).

Perhaps the argument is that the MTA fallback dance, since it can be
forced ultimately to cleartext by a sufficiently motivated active
attacker anyway, should be *simpler* than the browser fallback dance,
and shouldn't make as many accommodations or require as much state and
complexity to implement.  I'm not sure i buy it, but if that's the
argument, it's worth making it explicitly.

Regards,

	--dkg