RADIUS Extensions for Encrypted DNS
Mohamed Boucadair
Orange
Rennes
35000
France
mohamed.boucadair@orange.com
Tirumaleswar Reddy
Nokia
India
kondtir@gmail.com
opsawg
redirection
subscriber policies
differentiated service
DNS
DoH
DoT
DoQ
QUIC
Encryption
Service delivery
Service provisioning
service activation
policies
connectivity
This document specifies new Remote Authentication Dial-In User Service (RADIUS) attributes that carry an authentication domain name, a list of IP addresses, and a set of service parameters of encrypted DNS resolvers.

Introduction
In the context of broadband services, Internet Service Providers (ISPs) usually provide DNS resolvers to their customers. To that aim, ISPs deploy dedicated mechanisms to advertise a list of DNS Recursive DNS server(s) to their customers (e.g., DHCP [RFC2132] [RFC8415], IPv6 Router Advertisement [RFC4861]). The information used to populate DHCP messages and/or IPv6 Router Advertisements relies upon specific Remote Authentication Dial-In User Service (RADIUS) [RFC2865] attributes, such as the DNS-Server-IPv6-Address Attribute specified in [RFC6911].
With the advent of Encrypted DNS (e.g., DNS-over-HTTPS (DoH) [RFC8484], DNS-over-TLS (DoT) [RFC7858], or DNS-over-QUIC (DoQ) [RFC9250]), additional means are required to provision hosts with network-designated Encrypted DNS. To fill that void, [I-D.ietf-add-dnr] leverages existing protocols such as DHCP and IPv6 Router Advertisement to provide hosts with the required information to connect to an encrypted DNS resolver. However, there are no RADIUS attributes that can be used to populate the discovery messages discussed in [I-D.ietf-add-dnr].
This document specifies two new RADIUS attributes: IPv6-Encrypted-DNS (Section 3.1) and IPv4-Encrypted-DNS (Section 3.2) Attributes. These two attributes are specified in order to accommodate both IPv4 and IPv6 deployment contexts while taking into account the constraints in Section 3.4 of [RFC6158].
Typical deployment scenarios are similar to those described, for instance, in Section 2 of [RFC6911]. Some of these deployments may rely upon the mechanisms defined in [RFC4014] or [RFC7037], which allows a Network Access Server (NAS) to pass attributes obtained from a RADIUS server to a DHCP server. For illustration purposes, Figure 1 shows an example where a Customer Premises Equipment (CPE) is provided with an encrypted DNS resolver. This example assumes that the NAS embeds both RADIUS client and DHCPv6 server capabilities.

An Example of RADIUS IPv6 Encrypted DNS Exchange
+-------------+           +-------------+             +-------+
|     CPE     |           |     NAS     |             |  AAA  |
|DHCPv6 client|           |DHCPv6 server|             |Server |
+------+------+           +------+------+             +---+---+
       |                         |                        |
       o-----DHCPv6 Solicit----->|                        |
       |                         o----Access-Request ---->|
       |                         |                        |
       |                         |<----Access-Accept------o
       |                         |  IPv6-Encrypted-DNS    |
       |<--DHCPv6 Advertisement--o                        |
       |     (OPTION_V6_DNR)     |                        |
       |                         |                        |
       o-----DHCPv6 Request----->|                        |
       |                         |                        |
       |<------DHCPv6 Reply------o                        |
       |     (OPTION_V6_DNR)     |                        |
       |                         |                        |

                DHCPv6                     RADIUS
Upon receipt of the DHCPv6 Solicit message from a CPE, the NAS sends a RADIUS Access-Request message to the Authentication, Authorization, and Accounting (AAA) server. Once the AAA server receives the request, it replies with an Access-Accept message (possibly after having sent a RADIUS Access-Challenge message and assuming the CPE is entitled to connect to the network) that carries a list of parameters to be used for this session, and which include the Encrypted DNS information. The content of the IPv6-Encrypted-DNS Attribute is then used by the NAS to complete the DHCPv6 procedure that the CPE initiated to retrieve information about the encrypted DNS service to use. The procedure defined in [I-D.ietf-add-dnr] is thus followed between the DHCPv6 client and the DHCPv6 server. The same procedure is followed between the DHCPv6 client on endpoints serviced by the CPE and the DHCPv6 server on CPE.
Upon change of the any Encrypted DNS-related information (e.g., ADN, IPv6 address), the RADIUS server sends a RADIUS CoA message [RFC5176] that carries the RADIUS IPv6-Encrypted-DNS Attributed to the NAS. Once that message is accepted by the NAS, it replies with a RADIUS CoA ACK message. The NAS replaces the old encrypted DNS resolver information with the new one and sends a DHCPv6 Reconfigure message to cause the DHCPv6 client to initiate a Renew/Reply message exchange with the DHCPv6 server.
Figure 2 shows another example where a CPE is provided with an encrypted DNS resolver, but the CPE uses DHCPv4 to retrieve its encrypted DNS resolver.

An Example of RADIUS IPv4 Encrypted DNS Exchange
+-------------+           +-------------+             +-------+
|     CPE     |           |     NAS     |             |  AAA  |
|DHCPv4 client|           |DHCPv4 server|             |Server |
+------+------+           +------+------+             +---+---+
       |                         |                        |
       o------DHCPDISCOVER------>|                        |
       |                         o----Access-Request ---->|
       |                         |                        |
       |                         |<----Access-Accept------o
       |                         |  IPv4-Encrypted-DNS    |
       |<-----DHCPOFFER----------o                        |
       |     (OPTION_V4_DNR)     |                        |
       |                         |                        |
       o-----DHCPREQUEST-------->|                        |
       |     (OPTION_V4_DNR)     |                        |
       |                         |                        |
       |<-------DHCPACK----------o                        |
       |     (OPTION_V4_DNR)     |                        |
       |                         |                        |

               DHCPv4                      RADIUS
Other deployment scenarios can be envisaged, such as returning customized service parameters (e.g., different DoH URI templates) as a function of the service/policies/preferences that are set by a network administrator. How an administrator indicates its service/policies/preferences to an AAA server is out of scope.
This document adheres to [RFC8044] for defining the new attributes.

Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
This document makes use of the terms defined in [RFC8499]. The following additional terms are used:
DHCP: refers to both DHCPv4 [RFC2132] and DHCPv6 [RFC8415].
Encrypted DNS: refers to a scheme where DNS exchanges are transported over an encrypted channel. Examples of encrypted DNS are DoT, DoH, and DoQ.
*-Encrypted-DNS: refers to IPv6-Encrypted-DNS and IPv4-Encrypted-DNS Attributes.
Encrypted-DNS-*: refers to any of the following attributes: Encrypted-DNS-ADN, Encrypted-DNS-IPv6-Address, Encrypted-DNS-IPv4-Address, Encrypted-DNS-SvcParams, and Encrypted-DNS-SvcPriority.

Encrypted DNS RADIUS Attributes
Both IPv6-Encrypted-DNS and IPv4-Encrypted-DNS have the same format shown in Figure 3. The description of the fields is provided in Sections 3.1 and 3.2.
These attributes and their embedded TLVs (Section 3.3) are defined with globally unique names. The definition of the attributes follows the guidelines in Section 2.7.1 of [RFC6929].

Format of IPv6-Encrypted-DNS and IPv4-Encrypted-DNS Attributes
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Type     |     Length    | Extended-Type |    Value ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The value fields of *-Encrypted-DNS and Encrypted-DNS-* Attributes are encoded in clear and not encrypted as, for example, Tunnel-Password Attribute [RFC2868].

IPv6-Encrypted-DNS Attribute
This attribute is of type "tlv" as defined in Section 2.3 of [RFC6929].
The IPv6-Encrypted-DNS Attribute includes the authentication domain name, a list of IPv6 addresses, and a set of service parameters of an encrypted DNS resolver (Section 3.1.9 of [I-D.ietf-add-dnr]).
Because multiple IPv6-Encrypted-DNS Attributes may be provisioned to a requesting host, multiple instances of the IPv6-Encrypted-DNS attribute MAY be included; each instance of the attribute carries a distinct encrypted DNS resolver. These TLVs SHOULD be processed following their service priority (i.e., smaller service priority indicates a higher preference).
The IPv6-Encrypted-DNS Attribute MAY appear in a RADIUS Access-Accept packet. It MAY also appear in a RADIUS Access-Request packet as a hint to the RADIUS server to indicate a preference. However, the server is not required to honor such a preference.
The IPv6-Encrypted-DNS Attribute MAY appear in a RADIUS CoA-Request packet.
The IPv6-Encrypted-DNS Attribute MAY appear in a RADIUS Accounting-Request packet.
The IPv6-Encrypted-DNS Attribute MUST NOT appear in any other RADIUS packet.
The IPv6-Encrypted-DNS Attribute is structured as follows:
Type
241
Length
This field indicates the total length, in octets, of all fields of this attribute, including the Type, Length, Extended-Type, and the entire length of the embedded TLVs.
Extended-Type
TBA1 (see Section 6.1).
Value
This field contains a set of TLVs as follows:
  Encrypted-DNS-ADN TLV: The IPv6-Encrypted-DNS Attribute MUST include exactly one instance of Encrypted-DNS-ADN TLV (Section 3.3.1).
  Encrypted-DNS-IPv6-Address TLV: The IPv6-Encrypted-DNS Attribute SHOULD include one or multiple instances of Encrypted-DNS-IPv6-Address TLV (Section 3.3.2). If multiple instances are included, they are ordered in the preference for use. In contexts where putting additional complexity on requesting hosts is acceptable, returning an ADN only (that is, no Encrypted-DNS-IPv6-Address TLV is returned) can be considered.
  Encrypted-DNS-SvcParams TLV: The IPv6-Encrypted-DNS Attribute SHOULD include one instance of Encrypted-DNS-SvcParams TLV (Section 3.3.4).
  Encrypted-DNS-SvcPriority TLV: The IPv6-Encrypted-DNS Attribute SHOULD include one instance of Encrypted-DNS-SvcPriority TLV (Section 3.3.5).
The IPv6-Encrypted-DNS Attribute is associated with the following identifier: 241.TBA1.

IPv4-Encrypted-DNS Attribute
This attribute is of type "tlv" as defined in Section 2.3 of [RFC6929].
The IPv4-Encrypted-DNS Attribute includes the authentication domain name, a list of IPv4 addresses, and a set of service parameters of an encrypted DNS resolver (Section 3.1.9 of [I-D.ietf-add-dnr]).
Because multiple IPv4-Encrypted-DNS attributes may be provisioned to a requesting host, multiple instances of the IPv4-Encrypted-DNS attribute MAY be included; each instance of the attribute carries a distinct encrypted DNS resolver. These TLVs SHOULD be processed following their service priority (i.e., smaller service priority indicates a higher preference).
The IPv4-Encrypted-DNS Attribute MAY appear in a RADIUS Access-Accept packet. It MAY also appear in a RADIUS Access-Request packet as a hint to the RADIUS server to indicate a preference. However, the server is not required to honor such a preference.
The IPv4-Encrypted-DNS Attribute MAY appear in a RADIUS CoA-Request packet.
The IPv4-Encrypted-DNS Attribute MAY appear in a RADIUS Accounting-Request packet.
The IPv4-Encrypted-DNS Attribute MUST NOT appear in any other RADIUS packet.
The IPv4-Encrypted-DNS Attribute is structured as follows:
Type
241
Length
This field indicates the total length, in octets, of all fields of this attribute, including the Type, Length, Extended-Type, and the entire length of the embedded TLVs.
Extended-Type
TBA2 (see Section 6.1).
Value
This field contains a set of TLVs as follows:
  Encrypted-DNS-ADN TLV: The IPv4-Encrypted-DNS Attribute MUST include exactly one instance of Encrypted-DNS-ADN TLV (Section 3.3.1).
  Encrypted-DNS-IPv4-Address TLV: The IPv4-Encrypted-DNS Attribute SHOULD include one or multiple instances of Encrypted-DNS-IPv4-Address TLV (Section 3.3.3). In contexts where putting additional complexity on requesting hosts is acceptable, returning an ADN only (that is, no Encrypted-DNS-IPv4-Address TLV is returned) can be considered.
  Encrypted-DNS-SvcParams TLV: The IPv4-Encrypted-DNS Attribute SHOULD include one instance of Encrypted-DNS-SvcParams TLV (Section 3.3.4).
  Encrypted-DNS-SvcPriority TLV: The IPv4-Encrypted-DNS Attribute SHOULD include one instance of Encrypted-DNS-SvcPriority TLV (Section 3.3.5).
The IPv4-Encrypted-DNS Attribute is associated with the following identifier: 241.TBA2.

RADIUS TLVs for Encrypted DNS
The TLVs defined in the following subsections use the format defined in [RFC6929].
These TLVs have the same name and number when encapsulated in any of the parent attributes defined in Sections 3.1 and 3.2.
The encoding of the "Value" field of these TLVs follows the recommendation of [RFC6158].

Encrypted-DNS-ADN TLV
TLV-Type
TBA3 (see Section 6.2).
TLV-Length
Length of included ADN + 2 octets.
Data Type
The Encrypted-DNS-ADN TLV is of type text (Section 3.4 of [RFC8044]).
TLV-Value
This field includes a fully qualified domain name of the encrypted DNS resolver. This field is formatted as specified in Section 10 of [RFC8415].
This TLV is identified as 241.TBA1.TBA3 when included in the IPv6-Encrypted-DNS Attribute (Section 3.1) and as 241.TBA2.TBA3 when included in the IPv4-Encrypted-DNS Attribute (Section 3.2).

Encrypted-DNS-IPv6-Address TLV
TLV-Type
TBA4 (see Section 6.2).
TLV-Length
18
Data Type
The Encrypted-DNS-IPv6-Address TLV is of type ip6addr (Section 3.9 of [RFC8044]).
TLV-Value
This field includes an IPv6 address (128 bits) of the encrypted DNS resolver.
The Encrypted-DNS-IPv6-Address attribute MUST NOT include multicast and host loopback addresses [RFC6890].
This TLV is identified as 241.TBA1.TBA4 as part of the IPv6-Encrypted-DNS Attribute (Section 3.1).

Encrypted-DNS-IPv4-Address TLV
TLV-Type
TBA5 (see Section 6.2).
TLV-Length
6
Data Type
The Encrypted-DNS-IPv4-Address TLV is of type ip4addr (Section 3.8 of [RFC8044]).
TLV-Value
This field includes an IPv4 address (32 bits) of the encrypted DNS resolver.
The Encrypted-DNS-IPv4-Address attribute MUST NOT include multicast and host loopback addresses.
This TLV is identified as 241.TBA1.TBA5 as part of the IPv4-Encrypted-DNS Attribute (Section 3.2).

Encrypted-DNS-SvcParams TLV
TLV-Type
TBA6 (see Section 6.2).
TLV-Length
Length of included service parameters + 2 octets.
Data Type
The Encrypted-DNS-SvcParams TLV is of type string (Section 3.5 of [RFC8044]).
TLV-Value
Specifies a set of service parameters that are encoded following the rules in Section 2.1 of [I-D.ietf-dnsop-svcb-https]. Section 3.1.5 of [I-D.ietf-add-dnr] lists a set of service parameters that are recommended to be supported by implementations.
The service parameters MUST include at least "alpn" SvcParam (Section 4.1 of [I-D.ietf-add-svcb-dns]). The service parameters MUST NOT include "ipv4hint" or "ipv6hint" SvcParams as they are superseded by the included IP addresses.
This TLV is identified as 241.TBA1.TBA6 when included in the IPv6-Encrypted-DNS Attribute (Section 3.1) and as 241.TBA2.TBA6 when included in the IPv4-Encrypted-DNS Attribute (Section 3.2).

Encrypted-DNS-SvcPriority TLV
TLV-Type
TBA7 (see Section 6.2).
TLV-Length
Six octets.
Data Type
The Encrypted-DNS-SvcPriority TLV is of type integer (Section 3.1 of [RFC8044]).
TLV-Value
Specifies the priority (unsigned16) of this *-Encrypted-DNS instance compared to other instances, right justified, and the unused bits in this field MUST be set to zero. The value is interpreted following the rules specified in Section 2.4.1 of [I-D.ietf-dnsop-svcb-https].
This TLV is identified as 241.TBA1.TBA7 when included in the IPv6-Encrypted-DNS Attribute (Section 3.1) and as 241.TBA2.TBA7 when included in the IPv4-Encrypted-DNS Attribute (Section 3.2).

Security Considerations
RADIUS-related security considerations are discussed in [RFC2865].
This document targets deployments where a trusted relationship is in place between the RADIUS client and server with communication optionally secured by IPsec or Transport Layer Security (TLS) [RFC6614].
Security considerations (including traffic theft) are discussed in Section 7 of [I-D.ietf-add-dnr].

Table of Attributes
The following table provides a guide as what type of RADIUS packets that may contain these attributes, and in what quantity.
Access- Access- Access-  Challenge Acct. # Attribute
Request Accept  Reject             Request
 0+      0+      0        0         0+      TBA1 IPv6-Encrypted-DNS
 0+      0+      0        0         0+      TBA2 IPv4-Encrypted-DNS

CoA-Request CoA-ACK CoA-NACK #   Attribute
  0+          0       0      TBA1 IPv6-Encrypted-DNS
  0+          0       0      TBA1 IPv4-Encrypted-DNS

The following table defines the meaning of the above table entries:
   0  This attribute MUST NOT be present in packet.
   0+ Zero or more instances of this attribute MAY be present in packet.

IANA Considerations

New RADIUS Attributes
IANA is requested to assign two new RADIUS attribute types from the IANA registry "Radius Attribute Types" located at http://www.iana.org/assignments/radius-types:
IPv6-Encrypted-DNS (241.TBA1)
IPv4-Encrypted-DNS (241.TBA2)
   Type      Description          Data Type   Reference
   --------  ------------------   ---------   -------------
   241.TBA1  IPv6-Encrypted-DNS   tlv         This-Document
   241.TBA2  IPv4-Encrypted-DNS   tlv         This-Document

New RADIUS TLVs
IANA is requested to create a new registry called "RADIUS Encrypted DNS TLVs". The registry is initially populated as follows:
Value    Description                  Data Type    Reference
-----    -------------------------    ---------    -------------
  0      Reserved
  1      Encrypted-DNS-ADN            text         Section 3.3.1
  2      Encrypted-DNS-IPv6-Address   ipv6addr     Section 3.3.2
  3      Encrypted-DNS-IPv4-Address   ipv4addr     Section 3.3.3
  4      Encrypted-DNS-SvcParams      string       Section 3.3.4
  5      Encrypted-DNS-SvcPriority    integer      Section 3.3.5
  6-255  Unassigned

Acknowledgements
Thanks to Christian Jacquenet, Neil Cook, and Alan Dekok for the review and suggestions.
Thanks to Ben Schwartz for the comments.

Normative References

Informative References
[RFC2132]
[RFC8415]
[RFC4861]
[RFC2865]
[RFC6911]
[RFC8484]
[RFC7858]
[RFC9250]
[I-D.ietf-add-dnr]
[RFC6158]
[RFC4014]
[RFC7037]
[RFC5176]
[RFC8044]
[RFC2119]
[RFC8174]
[RFC8499]
[RFC6929]
[RFC2868]
[RFC6890]
[I-D.ietf-dnsop-svcb-https]
[I-D.ietf-add-svcb-dns]
[RFC6614]