Return-Path: <hkario@redhat.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1])
 by ietfa.amsl.com (Postfix) with ESMTP id D36F81273B1;
 Tue, 20 Mar 2018 12:42:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level: 
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001,
 T_RP_MATCHES_RCVD=-0.01, T_SPF_HELO_PERMERROR=0.01]
 autolearn=ham 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 zy5lmJB_7ZvY; Tue, 20 Mar 2018 12:42:25 -0700 (PDT)
Received: from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73])
 (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by ietfa.amsl.com (Postfix) with ESMTPS id 464951241F5;
 Tue, 20 Mar 2018 12:42:25 -0700 (PDT)
Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com
 [10.11.54.6])
 (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mx1.redhat.com (Postfix) with ESMTPS id 660F57705E;
 Tue, 20 Mar 2018 19:42:24 +0000 (UTC)
Received: from pintsize.usersys.redhat.com (unknown [10.43.21.223])
 by smtp.corp.redhat.com (Postfix) with ESMTP id 8B221215CDA7;
 Tue, 20 Mar 2018 19:42:23 +0000 (UTC)
From: Hubert Kario <hkario@redhat.com>
To: tls@ietf.org
Cc: Eric Rescorla <ekr@rtfm.com>, Nikos Mavrogiannopoulos <nmav@redhat.com>,
 IESG <iesg@ietf.org>
Date: Tue, 20 Mar 2018 20:42:22 +0100
Message-ID: <3744627.MaMIWlZzZe@pintsize.usersys.redhat.com>
In-Reply-To: <CABcZeBPThERW6NnOKkTZ7gxPpq+7Xno+7nEkLr612kt_7FcHEw@mail.gmail.com>
References: <6112806.hxzZ6NivhB@pintsize.usersys.redhat.com>
 <1521466432.30491.16.camel@redhat.com>
 <CABcZeBPThERW6NnOKkTZ7gxPpq+7Xno+7nEkLr612kt_7FcHEw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart3655408.AsYLRrpTdm";
 micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16
 (mx1.redhat.com [10.11.55.1]); Tue, 20 Mar 2018 19:42:24 +0000 (UTC)
X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); 
 Tue, 20 Mar 2018 19:42:24 +0000 (UTC) for IP:'10.11.54.6'
 DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com'
 HELO:'smtp.corp.redhat.com' FROM:'hkario@redhat.com' RCPT:''
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/E5Sqmluqm2ru39ePf7hqTBN_x9E>
Subject: Re: [TLS] draft-ietf-tls-tls13-26 is vulnerable to externally set
 PSK identity enumeration
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.22
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: <https://mailarchive.ietf.org/arch/browse/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: Tue, 20 Mar 2018 19:42:28 -0000

--nextPart3655408.AsYLRrpTdm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="UTF-8"

On Monday, 19 March 2018 14:38:05 CET Eric Rescorla wrote:
> On Mon, Mar 19, 2018 at 1:33 PM, Nikos Mavrogiannopoulos <nmav@redhat.com>
>=20
> wrote:
> > On Fri, 2018-03-16 at 14:45 -0500, Benjamin Kaduk wrote:
> > > On Fri, Mar 16, 2018 at 09:11:32AM -0400, Christian Huitema wrote:
> > > > On 3/15/2018 5:51 PM, Benjamin Kaduk wrote:
> > > > > On Thu, Mar 15, 2018 at 12:25:38PM +0100, Hubert Kario wrote:
> > > > > ...
> > > > >=20
> > > > > > we do not have a reliable mechanism of differentiating between
> > > > > > external and
> > > > > > resumption PSKs while parsing Client Hello
> > > > >=20
> > > > > Well, a valid external PSK (identity) the server will of course
> > > > > recognize, and we have a SHOULD-level requirement that the
> > > > > obfuscated_ticket_age is zero for external PSKs.  I haven't
> > > > > gotten
> > > > > to think through whether there is still potential for information
> > > > > leakage about external PSK identities, but it seems like there
> > > > > would
> > > > > not be, provided that the server prefers resumption to external-
> > > > > PSK
> > > > > full handshakes.
> > > >=20
> > > > I am concerned with the privacy issues linked to these "external
> > > > PSK
> > > > identities". If a system is set so that clients use static PSK
> > > > identities, then the identity is an identifier and the client's
> > > > movements and connections can be tracked. I don't think privacy is
> > > > improved if we make it easy to differentiate external identities
> > > > from
> > > > resumption tickets.
> > >=20
> > > Oh, of course, the privacy considerations of the current external
> > > PSK scheme are terrible!  This follows naturally from external PSKs
> > > having not really been a first-class citizen while we were designing
> > > things; we stuffed resumption PSKs together with external PSKs for
> > > the convenience of having them use the same binder construct and
> > > only needing to have one extension at the end of the ClientHello.
> > > Resumption flows get single-use tickets for privacy preservation,
> > > and external PSKs get infinite use and a gigantic correlation
> > > channel.
> >=20
> > I agree.
> >=20
> > > > If you want to use PSK with some level of privacy, you might adopt
> > > > a
> > > > different setup. For example, servers could provision the clients
> > > > with a
> > > > set of single-use external PSK identities. But then, that looks a
> > > > lot
> > > > like resumption. Or, clients could generate single-use external PSK
> > > > identities by encrypting their long term identity and a nonce with
> > > > the
> > > > public key of the server, a design which of course has its own set
> > > > of
> > > > issues.
> > >=20
> > > But, as you note, this is something of an open problem for how to do
> > > well, and this document is already approved by the IESG.  (It's also
> > > not entirely clear that the TLS WG would be the best place to design
> > > this sort of scheme, though of course it could choose to do so.)
> > >=20
> > > So to me the open question is whether we consider enumeration of
> > > external PSK identifiers to be something we can address reasonably
> > > at this stage of the document's lifecycle at all.  (I also note that
> > > the presence of a CVE number for a similar issue does not
> > > necessarily mean anything -- CVE assignments can occur for
> > > situations with no actual security impact and/or against the wishes
> > > of the software authors.)  I don't think anyone has proposed a
> > > minimal change that would close the enumeration channel, and given
> > > that external PSKs already have bad privacy properties, it seems
> > > like we may just have to accept this state of affairs for this
> > > document.
> >=20
> > That's a good general remark, but not really the case for the
> > vulnerabilities that Hubert pointed out.
> >=20
> > > Hubert also says:
> > >=20
> > > % so there's no reliable way to say that, yes, this identity is or is
> > > not a
> > > % resumption ticket, if I can't decrypt it
> > >=20
> > > Mostly.  External PSKs are established out of band, and that
> > > provisioning process *could* include knowledge that the
> > > obfuscated_ticket_age would always be zero when those PSKs are in
> > > use, and that would be reliable for those specific parties.
> >=20
> > I believe that this can happen in an interoperable way if the protocol
> > mandates it (which is not the case now). These specific parties may use
> > software from different vendors which may use different conventions if
> > the protocol is not clear enough.
> >=20
> > > It's probably also worth considering the two cases for server
> > > behavior when presented with a PSK id that is neither a known
> > > external PSK nor a known resumption ticket -- the server could
> > > either treat it as an unknown external PSK id or as a resumption
> > > ticket that fails to decrypt.  The latter case fails because the
> > > attacker can try candidate external identities and the server falls
> > > back to a full handshake unless the PSK ID is good.  (Well, maybe
> > > the server rejects PSK IDs that are shorter than a ticket would be.)
> > > The first case is not really usable since it would lead to spurious
> > > triggering of the proposed "at most one external PSK" check.
> > >=20
> > > So, in addition to the "we provision external PSKs only when we know
> > > that obfuscated_ticket_age will be zero", deployments could also
> > > agree that external PSK ids are shorter than a given length and
> > > resumption PSKs are larger, which would again provide a reliable
> > > differentiator between resumption and external.
> >=20
> > That cannot easily happen. I can have multiple servers answering to the
> > same hostname each using a different implementation. Any conventions
> > used in one implementation would not apply to another.
> >=20
> > > % I'd really prefer we exhaust other possibilities before sacrificing
> > > support
> > > % for multiple external PSK. With TLS 1.2 we had ticket_hint to guide
> > > PSK
> > > % selection, now we're left with just server IP or hostname.
> > >=20
> > > I think that "do nothing and accept external PSK enumeration as a
> > > risk" is more likely than sacrificing support for multiple external
> > > PSKs, personally.
> >=20
> > The problem is that you personally are not affected by that risk and I
> > guess that makes it easy for you to accept it. TLS1.2 with PSK did
> > explicitly prevent enumeration (by asking implementations to proceed to
> > handshake even with unknown usernames, and making up a key), meaning
> > that this is a risk that the designers of PSK (external) intentionally
> > ruled out. Going that path, it would be a step back in PSK security for
> > TLS1.3.
>=20
> Nikos,
>=20
> Just as a clarification, I believe it's possible for a PSK-only
> implementation to
> avoid this attack by behaving uniformly for "unknown ID" and "invalid
> binder"

supporting both external PSK authentication and certificate based=20
authentication for a single IoT gateway would be quite expected, I'd say

so just because PSK-only implementations are not vulnerable, I don't think =
we=20
can expect all servers that deploy external PSKs will also disable certific=
ate=20
based authentication (not to mention that it's rather unlikely that users w=
ill=20
expect that adding certificate will suddenly make their server vulnerable)

=2D-=20
Regards,
Hubert Kario
Senior Quality Engineer, QE BaseOS Security team
Web: www.cz.redhat.com
Red Hat Czech s.r.o., Purky=C5=88ova 115, 612 00  Brno, Czech Republic
--nextPart3655408.AsYLRrpTdm
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEYeeuxEU+3unL/K+dkqjRuAHS9fUFAlqxZB4ACgkQkqjRuAHS
9fXZjg//TRKxdxaUG2D4m6jKwyU5tJnLwccofp8nH2EY5c136Eq2pwlz9zMaGyId
61/FWFgAfyF2xkohZO0ASQ1zBc5hR6yRx+32LsUB70e2nPTSgSFSv0vmRYxX8RSr
0LQDGliktZSPbGCDGbC0WVK8yGAaiYJ/TgAvSljZef9tw+j+XZtwV5f3YARBhlHs
hi/oM+S2kVil4BgLTgr3L3jm3x+emx6uYJDkio9rY0tLIGIVgWUrKE+AJ32DW9EI
r2e8ps32+8CgsWnA/kW1femEgbiDMMtgc4AA8PFST22mxzcLW4ulM52rtc9eJBtr
q+1dPx3HOh8FUuVJ8aI5x9IS4t6OfM7aNbZf936FSTK+0T9BFn0zlyyIHTFoPyzg
dS0VZb9qAhjdMtHWd46TiCIElIQij28PfL/Jb18J5KFOzroAtkryuvsyxXENjFte
EIZdNtIuDUKdNqnkYxjt7TiAJtIt6x8yyJaHOv35my8um2yBF9EWOTo04EVCsIK7
PCt9wQgPDTv6w5rANHBUxzMtbQmpAWpwoEfTKdBPHsjuXPwQ6no6BPohyfdthPN8
HZRpK3Rb9Zeeoy+wLIvQlb8N5oyTj/SjSRSp58j/fuKEc4rNwKBSHLqO2uFH/lW3
4cFVrN1W7FRb62c2Tiu29vvJ2hZAaNYs47QgPSXFwkWbtU3H9XM=
=AGsX
-----END PGP SIGNATURE-----

--nextPart3655408.AsYLRrpTdm--



