Internet DRAFT - draft-nygren-tls-ip-in-sni

draft-nygren-tls-ip-in-sni







TLS Working Group                                              E. Nygren
Internet-Draft                                                   R. Salz
Intended status: Standards Track                     Akamai Technologies
Expires: 28 January 2023                                    27 July 2022


     Representing IP addresses in TLS Server Name Indication (SNI)
                     draft-nygren-tls-ip-in-sni-00

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.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 28 January 2023.

Copyright Notice

   Copyright (c) 2022 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.




Nygren & Salz            Expires 28 January 2023                [Page 1]

Internet-Draft                  IP in SNI                      July 2022


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Notational Conventions  . . . . . . . . . . . . . . . . . . .   3
   3.  Indicating IP Addresses in SNI  . . . . . . . . . . . . . . .   3
   4.  Rejected Alternatives . . . . . . . . . . . . . . . . . . . .   3
     4.1.  Alternative: New NameType . . . . . . . . . . . . . . . .   4
     4.2.  Alternative: Shove an IP into Hostname  . . . . . . . . .   4
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   4
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .   5
   7.  Privacy Considerations  . . . . . . . . . . . . . . . . . . .   5
   8.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . .   6
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   6
     9.1.  Normative References  . . . . . . . . . . . . . . . . . .   6
     9.2.  Informative References  . . . . . . . . . . . . . . . . .   6
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   7

1.  Introduction

   TLS [RFC8446] clients often need to send a Server Name Indication
   (SNI) extension [RFC6066], Section 3 as part of their ClientHello
   message.  This helps servers select a certificate to return that
   includes a subjectAltName which includes the SNI value.  Without SNI,
   multi-tenant services need need as many IP addresses as server
   certificates, which is not generally a problem with IPv6, but is
   complicated by, as well as contributes to, address scarcity in IPv4.

   Certificate subjectAltName (SAN) [RFC5280], Section 4.2.1.6 values
   can encode IP addresses (with a defined form for "iPAddress" that
   encodes both IPv4 and IPv6 addresses as a sequence of octets).
   However, the ServerName structure for SNI only defines "host_name" as
   a "name_type" and encoding the hostname in Hostname, and it does not
   specify a way to encode IP addresses.

   The lack of support for IP addresses in SNI values is less
   problematic in the case where a client is connecting to the IP
   address that it expects to see in the certificate.  However, some
   specifications such as [I-D.draft-ietf-add-ddr] have clients require
   that a particular IP address is present in the SNI while connecting
   to a different IP address.

   This specification does NOT change any behaviors for how clients to
   validate certificates.








Nygren & Salz            Expires 28 January 2023                [Page 2]

Internet-Draft                  IP in SNI                      July 2022


2.  Notational Conventions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

3.  Indicating IP Addresses in SNI

   TLS clients connecting to a server and expecting to find a given IP
   address in a certificate subjectAltName MUST encode the iPAddress
   they expect to find in the certificate into the SNI HostName field.
   This encoding is done by converting the IP address into its reverse
   DNS address, as also done in [RFC8738].

   _Note that this encoding only applies to how IP addresses are
   represented in SNI and does *NOT* change how IP addresses are
   represented in certificate SANs._

   Clients encode IPv6 "ip6.arpa" [RFC3596] names, using a reverse
   mapping of the IP address as the HostName field.  For example, if the
   IP address being validated is 2001:db8::1, the SNI HostName field
   whould contain "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d
   .0.1.0.0.2.ip6.arpa".

   Clients encode IPv4 addresses as "in-addr.arpa" [RFC1034] names,
   using a reverse mapping of the address octets.  For example, if the
   IPv4 address being validated is 192.0.2.7, the SNI HostName field
   would contain "7.2.0.192.in-addr.arpa".

   Servers receiving a SNI HostName field with one of these ".arpa"
   names implement this specification by returning a certificate with a
   subjectAltName containing the corresponding IP address as an
   iPAddress, when such a certificate is available.  Servers MUST ignore
   malformed ip6.arpa and in-addr.arpa SNI values, such as those which
   do not contain 34 or 6 labels, respectively.  In the corner-case
   where a server has both a certificate with an iPAddress SAN matching
   the supplied SNI as well as a dNSName SAN that matches the .arpa SNI
   string, the server SHOULD return the former (the cert corresponding
   to the iPAddress SAN).

   Note that there is no way to represent IP address prefixes in
   certificates subjectAltNames.

4.  Rejected Alternatives

   (Note to editor: this section is to be removed moved to an appendix
   or removed prior to publication.)




Nygren & Salz            Expires 28 January 2023                [Page 3]

Internet-Draft                  IP in SNI                      July 2022


   Two other approaches have been considered but rejected.

4.1.  Alternative: New NameType

   One approach would be to introduce ip_address as a new name_type (or
   perhaps one for each of IPv6 and IPv4).  For example, something like:

     struct {
         NameType name_type;
         select (name_type) {
             case host_name: HostName;
             case ip_address: IPAddress;
         } name;
     } ServerName;
     enum {
         host_name(0), ip_address(1), (255)
     } NameType;
     opaque HostName<1..2^16-1>;
     opaque IPAddress<1..2^8-1>;

   While the cleanest approach, discussions with TLS library
   implementation maintainers indicate that this would be disruptive and
   have wide-reaching impact to long-stable APIs.  It is likely that
   this extension point ossified long ago, and that middle-boxes and
   other software would also have problems here, as the SNI value is
   visible in-the-clear and some devices are known to inspect it.

4.2.  Alternative: Shove an IP into Hostname

   Serializing an IP address into a string and shoving it into the
   HostName value (eg, just putting in "192.0.2.7" or "2001:db8::1")
   might work, but those are not valid host names.  Just because they
   can be serialized on the wire doesn't mean they won't result in
   unforseen breakage when abused in this manner.

5.  IANA Considerations

   No IANA registry changes are needed with this approach?

   (TODO: Do we need to update anything to indicate this special use of
   in-addr.arpa and ip6.arpa?)

   (The first other alternative might need a new registry if we decided
   to take that approach.)







Nygren & Salz            Expires 28 January 2023                [Page 4]

Internet-Draft                  IP in SNI                      July 2022


6.  Security Considerations

   Overloading the in-addr.arpa and ip6.arpa names has potential for
   confusion if there are implementations that have odd behaviors here,
   or which try and use certificates with dNSName subjectAltNames
   containing those as hostnames.

   As an example, some middleboxes (such as security appliances) may use
   the SNI value as a hostname to resolve and direct connections towards
   and this may have odd results when it is a .arpa address.

   CAB Forum is considering updating their guidance to clarify that the
   issuance of certificates on those names is prohibited
   [cabforum.servercert.153].

   General issues may exist with using IP addresses in certificate
   subjectAltNames, but a detailed analysis of this is outside the scope
   of this specification.  Beyond not supporting IP addresses in SNI
   fields, there may be issues in other areas:

   *  The lifespan of IP addresses may be highly variable.  While the
      ownership of some IP addresses (such as well-known DNS public
      resolvers) may be quite static, many service providers issue IP
      addresses with very short lifetimes.  Clients may rotate their
      IPv6 privacy addresses [RFC8981] every few hours, as a very
      widespread example.

   *  There is no way to use CAA records [RFC8659] to constrain
      certificates on IP addresses.  While it may be wortth considering
      supporting CAA records within the in-addr.arpa and ip6.arpa name
      spaces to allow network operators to constrain certificate
      issuance on IP addresses under their control, that is outside of
      the scope of this specification.

   Note that certificate Name Constraints [RFC5280], Section 4.2.1.10 do
   support IP addresses, but it is unclear how widely this is
   implemented by client validators.  Private certificate authorities
   may wish to consider using Name Constraints to only allow issuance of
   IP address certificates to organizational IP space.

7.  Privacy Considerations

   The SNI extension is sent in cleartext on the network, and thus
   visible to a passive observer.  Using [I-D.draft-ietf-tls-esni]
   Encrypted Client Hello to protect the SNI may help.






Nygren & Salz            Expires 28 January 2023                [Page 5]

Internet-Draft                  IP in SNI                      July 2022


   Similar issues that exist with hostname based SNI values (with being
   able to perform tracking and correlation) may exist with IP addresses
   in SNI as well.

   There may also be protocol-specific risks when desired IP addresses
   are sent in-the-clear as SNI.

   Note that in many cases, observers will also be able to see the IP
   address as the destination endpoint of connections.

8.  Acknowledgments

   Thank you to Kyle Rose, Jon Reed, Ben Kaduk, and others who provided
   valuable input towards this draft.

9.  References

9.1.  Normative References

   [RFC1034]  Mockapetris, P., "Domain names - concepts and facilities",
              STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
              <https://www.rfc-editor.org/info/rfc1034>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC3596]  Thomson, S., Huitema, C., Ksinant, V., and M. Souissi,
              "DNS Extensions to Support IP Version 6", STD 88,
              RFC 3596, DOI 10.17487/RFC3596, October 2003,
              <https://www.rfc-editor.org/info/rfc3596>.

   [RFC6066]  Eastlake 3rd, D., "Transport Layer Security (TLS)
              Extensions: Extension Definitions", RFC 6066,
              DOI 10.17487/RFC6066, January 2011,
              <https://www.rfc-editor.org/info/rfc6066>.

   [RFC8446]  Rescorla, E., "The Transport Layer Security (TLS) Protocol
              Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
              <https://www.rfc-editor.org/info/rfc8446>.

9.2.  Informative References

   [cabforum.servercert.153]
              "Clarify validation requirements for .arpa #153", n.d.,
              <https://github.com/cabforum/servercert/issues/153>.




Nygren & Salz            Expires 28 January 2023                [Page 6]

Internet-Draft                  IP in SNI                      July 2022


   [I-D.draft-ietf-add-ddr]
              Pauly, T., Kinnear, E., Wood, C. A., McManus, P., and T.
              Jensen, "Discovery of Designated Resolvers", Work in
              Progress, Internet-Draft, draft-ietf-add-ddr-08, 5 July
              2022, <https://www.ietf.org/archive/id/draft-ietf-add-ddr-
              08.txt>.

   [I-D.draft-ietf-tls-esni]
              Rescorla, E., Oku, K., Sullivan, N., and C. A. Wood, "TLS
              Encrypted Client Hello", Work in Progress, Internet-Draft,
              draft-ietf-tls-esni-14, 13 February 2022,
              <https://www.ietf.org/archive/id/draft-ietf-tls-esni-
              14.txt>.

   [RFC5280]  Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
              Housley, R., and W. Polk, "Internet X.509 Public Key
              Infrastructure Certificate and Certificate Revocation List
              (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008,
              <https://www.rfc-editor.org/info/rfc5280>.

   [RFC8659]  Hallam-Baker, P., Stradling, R., and J. Hoffman-Andrews,
              "DNS Certification Authority Authorization (CAA) Resource
              Record", RFC 8659, DOI 10.17487/RFC8659, November 2019,
              <https://www.rfc-editor.org/info/rfc8659>.

   [RFC8738]  Shoemaker, R.B., "Automated Certificate Management
              Environment (ACME) IP Identifier Validation Extension",
              RFC 8738, DOI 10.17487/RFC8738, February 2020,
              <https://www.rfc-editor.org/info/rfc8738>.

   [RFC8981]  Gont, F., Krishnan, S., Narten, T., and R. Draves,
              "Temporary Address Extensions for Stateless Address
              Autoconfiguration in IPv6", RFC 8981,
              DOI 10.17487/RFC8981, February 2021,
              <https://www.rfc-editor.org/info/rfc8981>.

Authors' Addresses

   Erik Nygren
   Akamai Technologies
   Email: erik+ietf@nygren.org
   URI:   http://erik.nygren.org/


   Rich Salz
   Akamai Technologies
   Email: rsalz@akamai.com




Nygren & Salz            Expires 28 January 2023                [Page 7]