Re: [TLS] Representing IP addresses in SNI -- proposed draft

Erik Nygren <erik+ietf@nygren.org> Thu, 28 July 2022 23:14 UTC

Return-Path: <nygren@gmail.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 AD043C14792E for <tls@ietfa.amsl.com>; Thu, 28 Jul 2022 16:14:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.43
X-Spam-Level:
X-Spam-Status: No, score=-6.43 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.248, FREEMAIL_FROM=0.001, FUZZY_CPILL=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.248, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id S5KsE0SMA8wN for <tls@ietfa.amsl.com>; Thu, 28 Jul 2022 16:14:15 -0700 (PDT)
Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D3097C14CF1D for <tls@ietf.org>; Thu, 28 Jul 2022 16:14:15 -0700 (PDT)
Received: by mail-pf1-f170.google.com with SMTP id c3so3150454pfb.13 for <tls@ietf.org>; Thu, 28 Jul 2022 16:14:15 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=MXzF9Vu/t3X32T1eaAv+Mne7AnpifbtNeRk7c2yR4aI=; b=cfZttt4I+rfPQbo4Ap3vUKObvg27eVsZb/TcA7jeZMJNECOHhHvIeS0DYGmORezXRO 02Ygs3F3UA16yobNDgONhuFCmWTQmi16D7wtXCmZihbNt+qgfC1IDdSBbovriaIyJpEV de6ANgyZKI/6/CE4f0BGVhVwUFKDKOdDX7Rr/K6vmEMgEgHozi/gQ49G+hT86KexukXX 6FDVY6yKqvg+lvqVMX2phoCWVwWnuqBqAMTzQFDycKfASRfNbVIpx/uZb1s9hQcECjDv khD1kPc3vurCS8kiMhIsXm0SogvzPM17rn69PVpN8xon5VltT1YrI8HgeGF3vsViMLe8 fniQ==
X-Gm-Message-State: AJIora9YdlPnPbFschm+26Ri07i6CjVBt79C6hbvN2lCznE/waW1XeGf 17fpDdr8pB464tAYlqRq/RcYVRKJV1r5GnZoy9c=
X-Google-Smtp-Source: AGRyM1sL5WYCGEhjQpNW6QgM+4xi3KaeuUDQ3vRBwtxaJA66kr746DK5aVzfddOmr+cfQTz6Kmal/OJixx3E9KRBVhs=
X-Received: by 2002:a05:6a00:244a:b0:52b:e9a8:cb14 with SMTP id d10-20020a056a00244a00b0052be9a8cb14mr796589pfj.32.1659050055178; Thu, 28 Jul 2022 16:14:15 -0700 (PDT)
MIME-Version: 1.0
References: <165894600746.5156.16661196948798932257@ietfa.amsl.com> <CAKC-DJgG9f1fkZO7aAV18wYyobHxPL9LW48Htj9Ut1Uqu=78Sg@mail.gmail.com> <22b537c2-9c28-407c-8916-a5cc3dcf0be7@www.fastmail.com> <CAF8qwaCMNSBgiypfzJ8Vi+8M6pxohE_HvzsHMHYBnN9wuc1B8Q@mail.gmail.com> <CAKC-DJie6ioV0Rb+10=nTEYm0WGdKmGZ_FK_DZ2zApSObXK-gg@mail.gmail.com> <DM8PR14MB52378F8AA1E304E40D7CD95783969@DM8PR14MB5237.namprd14.prod.outlook.com>
In-Reply-To: <DM8PR14MB52378F8AA1E304E40D7CD95783969@DM8PR14MB5237.namprd14.prod.outlook.com>
From: Erik Nygren <erik+ietf@nygren.org>
Date: Thu, 28 Jul 2022 19:14:04 -0400
Message-ID: <CAKC-DJiqDwT+Z36Nm4QK9A_ZxH9J-Vv68Cr+4-zVEH3d9Mkq7w@mail.gmail.com>
To: Tim Hollebeek <tim.hollebeek@digicert.com>
Cc: David Benjamin <davidben@chromium.org>, "TLS@ietf.org" <tls@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000341dc505e4e5b111"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/YfpHyOT0_Dh6NHMJj5T41d6GaMs>
Subject: Re: [TLS] Representing IP addresses in SNI -- proposed draft
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.39
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: Thu, 28 Jul 2022 23:14:19 -0000

The use-case that may increase IP certificates is this from ADD's DDR:

    https://datatracker.ietf.org/doc/html/draft-ietf-add-ddr-08#section-4.2

At a high-level, the client talks insecurely to their configured local DNS
resolver with IP address "A"
and queries for "_dns.resolver.arpa."
That returns a SVCB record that points to another DNS resolver that may
have hostname dot.example.com
with IP address "B".
As part of the "Verified Discovery" logic, the client connects to
dot.example.com (IP address "B")
but then has to verify that the presented TLS certificate contains IP
address "A".

If they share an IP address this is straight-forward (and a "normal" IP
address cert).
But if A and B are different IPs then "dot.example.com" in this case may
need
a separate IP address "B" (and hostname) for each IP address "A" that might
be in-use
(with perhaps some efficiencies possible through SAN-packing).

    Erik


On Thu, Jul 28, 2022 at 3:04 PM Tim Hollebeek <tim.hollebeek@digicert.com>
wrote:

> I’m worried about the fact that this means a certificate that was issued
> for and intended to be used by a particular IP address is now potentially
> usable on any arbitrary IP address via this behavior.  Though I haven’t
> thought it all the through yet, it seems to me to be likely that there are
> use cases where this has at least mild unexpected security consequences.
> Bonus points if you find a way this makes it easier to collect traffic
> intended for that IP from a different IP.
>
>
>
> On .in-addr.arpa certificates, I’ve been trying to find out why there are
> web servers running on those domains since I was at my previous employer
> over five years ago, and have been periodically asking about them:
>
>
>
>
> https://www.mail-archive.com/dev-security-policy@lists.mozilla.org/msg11410.html
>
>
>
> If anyone knows why they exist, I’d love to know.
>
>
>
> Also, if IP certificates are getting more common again, I’d love to hear
> about those use cases as they’re not on my radar at this time.  When I
> wrote the ballot for validation of IP addresses, it was a royal pain and
> took a few years because no one was actually interested in them.  My
> impression was that they were slowly going away with time, but I haven’t
> looked at the numbers recently.
>
>
>
> -Tim
>
>
>
> *From:* TLS <tls-bounces@ietf.org> *On Behalf Of * Erik Nygren
> *Sent:* Wednesday, July 27, 2022 4:59 PM
> *To:* David Benjamin <davidben@chromium.org>
> *Cc:* TLS@ietf.org
> *Subject:* Re: [TLS] Representing IP addresses in SNI -- proposed draft
>
>
>
> Both of these are very good concerns about the compatibility risk.
>
> I think David's alternative of having a new extension (eg, server_name_ip)
>
> might address a bunch of the issues and be cleaner than any of the other
> hacks.
>
> It would have a higher implementation overhead, but also might be more
> likely to be deployable.
>
>
>
> I checked search.censys.io and there appear to be around 150M certificates
>
> with IP addresses in them that it is aware of, and that is pretty much a
> guarantee
>
> that some of them will break with sending something new in an existing SNI
> extension...
>
>
>
>     Erik
>
>
>
>
>
> On Wed, Jul 27, 2022 at 4:16 PM David Benjamin <davidben@chromium.org>
> wrote:
>
> I agree this is quite a compatibility risk. In addition to messing with
> SNI lookup, there are servers that try to correlate TLS SNI and HTTP Host.
> Indeed, when we accidentally sent IP literals in SNI, we broke a server
> that tried to do that but got very confused by the colons in an IPv6
> literal. That server would likely also be confused by this draft, less by
> syntax and more by SNI/Host mismatch. I would be surprised if this option
> were viable.
>
>
>
> Another option, which doesn't require redefining existing fields, is to
> simply allocate a new extension. Though I agree with Martin that one would
> expect the server to know its own IP. If you implicitly interpret a missing
> server_name extension as "I want the IP cert for this connection's IP",
> it's already unambiguous. Granted, there may be edge cases because missing
> server_name can also mean "I want the default cert" and perhaps your
> "default" cert and IP cert are different.
>
>
>
> On Wed, Jul 27, 2022 at 12:17 PM Martin Thomson <mt@lowentropy.net> wrote:
>
> Hi Erik,
>
> As far as it goes, this might work.  However, I'm not sure about the
> effect of this on compatibility.  I'm concerned that maybe this would end
> up causing some servers to choke.  Servers that receive SNI can sometimes
> use that SNI value to lookup the correct certificate.  Your design could
> have those servers searching for a certificate that doesn't exist.
>
> Anything along these lines would need to be tested for compatibility -
> extensively - before it could even be trialed.
>
> (I never saw the DDR as having deployment problems along these lines.  It
> isn't THAT hard to know your own IP address for that purpose.)
>
> On Wed, Jul 27, 2022, at 14:38, Erik Nygren wrote:
> > Following discussions in ADD around the DDR draft (as well as in UTA
> > around Martin Thomson's PR to add IP address SANs to 6125-bis),
> > I wrote up a draft on how IP addresses might be represented in SNI:
> >
> >       https://datatracker.ietf.org/doc/draft-nygren-tls-ip-in-sni/
> >
> > There are at least three different ways we could do it, but this draft
> > proposes what seems to be the least bad while also talking about the
> > other alternatives.  (I suspect we'd want to move the alternatives
> > to an appendix or remove entirely from a final version.)
> >
> > Is this interesting to the working group?
> > While IP address SANs have a bunch of corner cases and gaps,
> > they do seem to be picking up new uses.
> >
> > What motivated me to realize we need to solve this is that
> > draft-ietf-add-ddr uses IP SANs in a new way.  Rather than the
> > client connecting to an IP address and expecting to see a SAN
> > (where returning a cert associated with the IP address containing
> > a SAN that the client connected to is straight-forward),
> > DDR has clients connecting to a different IP and then
> > expects to find an original IP also in the SAN list.
> > This means that for an ISP with a large number of IPs
> > (or using a services who operates DoH service on-behalf
> > of many entities), you'd need to quickly/wastefully burn through IPv4
> > addresses to enable a unique cert per original IP.
> >
> >     Erik
> >
> >
> > ---------- Forwarded message ---------
> > From: <internet-drafts@ietf.org>
> > Date: Wed, Jul 27, 2022 at 2:20 PM
> > Subject: New Version Notification for draft-nygren-tls-ip-in-sni-00.txt
> > To: Erik Nygren <erik+ietf@nygren.org <mailto:erik%2Bietf@nygren.org>>,
> > Rich Salz <rsalz@akamai.com>
> >
> >
> >
> > A new version of I-D, draft-nygren-tls-ip-in-sni-00.txt
> > has been successfully submitted by Erik Nygren and posted to the
> > IETF repository.
> >
> > Name:           draft-nygren-tls-ip-in-sni
> > Revision:       00
> > Title:          Representing IP addresses in TLS Server Name Indication
> > (SNI)
> > Document date:  2022-07-27
> > Group:          Individual Submission
> > Pages:          7
> > URL:
> > https://www.ietf.org/archive/id/draft-nygren-tls-ip-in-sni-00.txt
> > Status:
> > https://datatracker.ietf.org/doc/draft-nygren-tls-ip-in-sni/
> > Htmlized:
> > https://datatracker.ietf.org/doc/html/draft-nygren-tls-ip-in-sni
> >
> >
> > Abstract:
> >    This specification provides a mechanism for clients to send IP
> >    addresses in a TLS Server Name Indication (SNI) extension as part of
> >    TLS handshakes, allowing servers to return a certificate containing
> >    that subjectAltName.  This is done by converting the IP address to a
> >    special-use domain name.
> >
> >
> >
> >
> > The IETF Secretariat
> >
> >
> > _______________________________________________
> > TLS mailing list
> > TLS@ietf.org
> > https://www.ietf.org/mailman/listinfo/tls
>
> _______________________________________________
> TLS mailing list
> TLS@ietf.org
> https://www.ietf.org/mailman/listinfo/tls
>
>