Re: [TLS] In support of encrypting SNI

mrex@sap.com (Martin Rex) Fri, 16 May 2014 04:38 UTC

Return-Path: <mrex@sap.com>
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 94B2D1A0112 for <tls@ietfa.amsl.com>; Thu, 15 May 2014 21:38:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.552
X-Spam-Level:
X-Spam-Status: No, score=-6.552 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_HI=-5, 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 oVI9g0caoLD2 for <tls@ietfa.amsl.com>; Thu, 15 May 2014 21:38:14 -0700 (PDT)
Received: from smtpde01.sap-ag.de (smtpde01.sap-ag.de [155.56.68.170]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 57F801A010C for <tls@ietf.org>; Thu, 15 May 2014 21:38:14 -0700 (PDT)
Received: from mail05.wdf.sap.corp by smtpde01.sap-ag.de (26) with ESMTP id s4G4c1gD028317 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 16 May 2014 06:38:01 +0200 (MEST)
In-Reply-To: <53749388.80009@cs.tcd.ie>
To: Stephen Farrell <stephen.farrell@cs.tcd.ie>
Date: Fri, 16 May 2014 06:38:01 +0200
X-Mailer: ELM [version 2.4ME+ PL125 (25)]
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="US-ASCII"
Message-Id: <20140516043801.C2FCF1AD06@ld9781.wdf.sap.corp>
From: mrex@sap.com
X-SAP: out
Archived-At: http://mailarchive.ietf.org/arch/msg/tls/2WeVbSDvKFn4EXZlK07LNXqfsqU
Cc: tls@ietf.org
Subject: Re: [TLS] In support of encrypting SNI
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: mrex@sap.com
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, 16 May 2014 04:38:16 -0000

Stephen Farrell wrote:
> 
> Say if the client sent "hash-algId,H(tolower(SNI)||stuff)"
> or similar rather than sending just "SNI" (where "stuff"
> is maybe something to distinguish http vs imap perhaps).

The underlying idea is in principle correct:
if the client does not want to disclose the server's hostname, then the
client plain and simple MUST NOT send that hostname in TLS extension SNI.

It is conceivable that the client could send something else instead,
that the server could use for dispatching the TLS session to the
correct virtual host (independent of whether that is physicial or
logical routing of the TLS session).


> 
> And of course if we had a structure like "f-algId,f(SNI)"
> then other algs (e.g. encrypt with public key from DNS)
> could be added later if we can't use 'em now, so even
> adding this minimal bit of "protection" might provide
> the right hooks for later, better work.

While something like publishing an RSA public key in DNS and
using an encryption transform with random padding (PKCS#1 BT02 or OAEP)
could provide the functionality, this would also significantly
increase the server's workload (make TLSv1.3 session resumes as
expensive as TLSv1.2 static RSA full handshakes) and make the
key management (the rollover) a magnitude more difficult from
what it is now (not counting the accompanying code complexity).


If the whole SNI-hiding scheme would depend on the necessary key being
available in the DNS, then those servers that have only a single
server credential or that need high performance could avoid the
entire bloat, and that would be the most important aspect of this.


Personally, I consider pretty much all of the ideas that have been
floated so far, to be magnitudes of complexity beyond what I could
risk shipping to our customers from the usability viewpoint.
TLS key management is already the number one support issue today,
and the first customers started suffering from server load when
moving from RSA-1024 to RSA-2048 (even for static RSA key exchanges)
when there were problems with TLS session caching on TLS clients.


For our current TLS implementation, I can update&replace the server
credential (key,cert and cert chain) as well as trust anchors for
the verification of client certs in "full flight" (i.e. zero downtime),
but for multiple server keys distributed through different protocols
(DNS OOB plus TLS inband), I can not even conceive a robust / zero
downtime key management and key rollover.



Actually, I'm much more worried about the services on the internet
today that still do not use TLS at all (many discussion forums,
online shops and places like ebay), and I have exactly
ZERO problem doing online banking over TLS with static-RSA and RC4-128
or TLSv1.0 and CBC.


And I'm somewhat worried that making TLS more complex, administration
more difficult, troubleshooting harder and performance impact worse
is going to further deter adoption of TLS by the large unwashed masses
of today's HTTP-in-the-clear usage scenarios, similar to how feature bloat,
complexity, and poor usability still deters deployment of IPv6 today.


-Martin