diff options
Diffstat (limited to 'doc/rfc/rfc9464.txt')
-rw-r--r-- | doc/rfc/rfc9464.txt | 804 |
1 files changed, 804 insertions, 0 deletions
diff --git a/doc/rfc/rfc9464.txt b/doc/rfc/rfc9464.txt new file mode 100644 index 0000000..381898e --- /dev/null +++ b/doc/rfc/rfc9464.txt @@ -0,0 +1,804 @@ + + + + +Internet Engineering Task Force (IETF) M. Boucadair +Request for Comments: 9464 Orange +Category: Standards Track T. Reddy.K +ISSN: 2070-1721 Nokia + D. Wing + Cloud Software Group + V. Smyslov + ELVIS-PLUS + November 2023 + + + Internet Key Exchange Protocol Version 2 (IKEv2) Configuration for + Encrypted DNS + +Abstract + + This document specifies new Internet Key Exchange Protocol Version 2 + (IKEv2) Configuration Payload Attribute Types to assign DNS resolvers + that support encrypted DNS protocols, such as DNS over HTTPS (DoH), + DNS over TLS (DoT), and DNS over QUIC (DoQ). + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc9464. + +Copyright Notice + + Copyright (c) 2023 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. + +Table of Contents + + 1. Introduction + 2. Terminology + 3. IKEv2 Configuration Payload Attribute Types for Encrypted DNS + 3.1. ENCDNS_IP* Configuration Payload Attributes + 3.2. ENCDNS_DIGEST_INFO Configuration Payload Attribute + 4. IKEv2 Protocol Exchange + 5. Subject Public Key Info (SPKI) Hash + 6. Security Considerations + 7. Privacy Considerations + 8. IANA Considerations + 9. References + 9.1. Normative References + 9.2. Informative References + Appendix A. Configuration Payload Examples + A.1. Configuration of Encrypted IPv6 DNS Resolvers without + Suggested Values + A.2. Configuration of Encrypted IPv6 DNS Resolvers with + Suggested Values + A.3. Split DNS + Acknowledgments + Authors' Addresses + +1. Introduction + + This document specifies a mechanism for assigning encrypted DNS + configurations to an Internet Key Exchange Protocol Version 2 (IKEv2) + initiator [RFC7296]. Specifically, it assigns one or more + Authentication Domain Names (ADNs) of DNS resolvers that support + encrypted DNS protocols. The specific protocols supported are + described using the Service Parameters format defined in [RFC9460]; + supported protocols include DNS over HTTPS (DoH) [RFC8484], DNS over + TLS (DoT) [RFC7858], and DNS over QUIC (DoQ) [RFC9250]. + + This document introduces three new IKEv2 Configuration Payload + Attribute Types (Section 3) to add support for encrypted DNS + resolvers. The ENCDNS_IP4 and ENCDNS_IP6 attribute types + (Section 3.1) are used to provision ADNs, a list of IP addresses, and + a set of service parameters. The ENCDNS_DIGEST_INFO attribute + (Section 3.2) additionally allows a specific resolver certificate to + be indicated by the IKEv2 responder. + + The encrypted DNS resolver hosted by a Virtual Private Network (VPN) + provider can get a domain-validated certificate from a public + Certificate Authority (CA). The VPN client does not need to be + provisioned with the root certificate of a private CA to authenticate + the certificate of the encrypted DNS resolvers. The encrypted DNS + resolver can run on private IP addresses, and its access can be + restricted to clients connected to the VPN. + + For many years, typical designs have often assumed that the DNS + resolver was usually located inside the protected domain, but they + don't consider implementations where the DNS resolver could be + located outside of it. With encrypted DNS, implementing the latter + scenario becomes plausible. Note that existing VPN client + implementations might not expect the discovered DNS resolver IP + addresses to be outside of the covered IP address ranges of the VPN + tunnel. + +2. 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 uses the terms defined in [RFC8499]. + + Also, this document uses the terms defined in [RFC7296]. In + particular, readers should be familiar with the terms "initiator" and + "responder" as used in that document. + + This document makes use of the following terms: + + Do53: Refers to unencrypted DNS. + + Encrypted DNS: Refers to a scheme where DNS messages are sent over + an encrypted channel. Examples of encrypted DNS are DoT, DoH, and + DoQ. + + ENCDNS_IP*: Refers to any of the IKEv2 Configuration Payload + Attribute Types defined in Section 3.1. + +3. IKEv2 Configuration Payload Attribute Types for Encrypted DNS + +3.1. ENCDNS_IP* Configuration Payload Attributes + + The ENCDNS_IP* IKEv2 Configuration Payload Attribute Types, + ENCDNS_IP4 and ENCDNS_IP6, are used to configure an initiator with + encrypted DNS resolvers. Both attribute types share the format shown + in Figure 1. The information included in these attributes adheres to + the recommendation in Section 3.1.9 of [RFC9463]. + + 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 + +-+-----------------------------+-------------------------------+ + |R| Attribute Type | Length | + +-+-----------------------------+---------------+---------------+ + | Service Priority | Num Addresses | ADN Length | + +-------------------------------+---------------+---------------+ + ~ IP Address(es) ~ + +---------------------------------------------------------------+ + ~ Authentication Domain Name ~ + +---------------------------------------------------------------+ + ~ Service Parameters (SvcParams) ~ + +---------------------------------------------------------------+ + + Figure 1: Format of ENCDNS_IP4 and ENCDNS_IP6 Configuration + Attributes + + The description of the fields shown in Figure 1 is as follows: + + R (Reserved, 1 bit): This bit MUST be set to zero and MUST be + ignored on receipt (see Section 3.15.1 of [RFC7296] for details). + + Attribute Type (15 bits): Identifier for the Configuration Attribute + Type. This is set to 27 for ENCDNS_IP4 or 28 for ENCDNS_IP6, as + registered in Section 8. + + Length (2 octets, unsigned integer): Length of the enclosed data in + octets. In particular, this field is set to: + + * 0, if the Configuration payload has type (1) CFG_REQUEST and no + specific DNS resolver is requested or (2) CFG_ACK. If the + "Length" field is set to 0, then the subsequent fields shown in + Figure 1 are not present. + + * (4 + 'Length of the ADN' + N * 4 + 'Length of SvcParams') for + ENCDNS_IP4 attributes if the Configuration payload has type + CFG_REQUEST, CFG_REPLY, or CFG_SET, with N being the number of + included IPv4 addresses ("Num Addresses"). + + * (4 + 'Length of the ADN' + N * 16 + 'Length of SvcParams') for + ENCDNS_IP6 attributes if the Configuration payload has type + CFG_REQUEST, CFG_REPLY, or CFG_SET, with N being the number of + included IPv6 addresses ("Num Addresses"). + + Service Priority (2 octets): The priority of this attribute compared + to other ENCDNS_IP* instances. This 16-bit unsigned integer is + interpreted following the rules specified in Section 2.4.1 of + [RFC9460]. As AliasMode (Section 2.4.2 of [RFC9460]) is not + supported, this field MUST NOT be set to 0. Note that AliasMode + is not supported because such a mode will trigger additional Do53 + queries while the data can be supplied directly in the IKE + response. + + Num Addresses (1 octet): Indicates the number of enclosed IPv4 (for + ENCDNS_IP4) or IPv6 (for ENCDNS_IP6) addresses. This value MUST + NOT be set to 0 if the Configuration payload has type CFG_REPLY or + CFG_SET. This may be set to 0 in CFG_REQUEST to indicate that no + IP address is encoded in the attribute. + + ADN Length (1 octet): Indicates the length of the "Authentication + Domain Name" field in octets. When set to 0, this means that no + ADN is enclosed in the attribute. + + IP Address(es) (variable): Includes one or more IP addresses that + can be used to reach the encrypted DNS resolver identified by the + ADN. For ENCDNS_IP4, this field contains one or more 4-octet IPv4 + addresses, and for ENCDNS_IP6, this field contains one or more + 16-octet IPv6 addresses. + + Authentication Domain Name (variable): A fully qualified domain name + of the encrypted DNS resolver, in DNS presentation format and + using an Internationalized Domain Names for Applications (IDNA) + A-label [RFC5890]. The name MUST NOT contain any terminators + (e.g., NULL, CR). + + An example of a valid ADN for a DoH server is "doh1.example.com". + + Service Parameters (SvcParams) (variable): Specifies a set of + service parameters that are encoded following the same rules for + encoding SvcParams using the wire format specified in Section 2.2 + of [RFC9460]. Section 3.1.5 of [RFC9463] lists a set of service + parameters that are recommended to be supported by + implementations. + + The service parameters MUST NOT include "ipv4hint" or "ipv6hint" + SvcParams, as they are superseded by the included IP addresses. + + If no "port" service parameter is included, this indicates that + default port numbers should be used. As a reminder, the default + port number is 853 for DoT (Section 6 of [RFC7858]), 443 for DoH + (Section 8.1 of [RFC8484]), and 853 for DoQ (Section 8 of + [RFC9250]). + + The service parameters apply to all IP addresses in the ENCDNS_IP* + Configuration Payload Attribute. + +3.2. ENCDNS_DIGEST_INFO Configuration Payload Attribute + + The ENCDNS_DIGEST_INFO Configuration Payload Attribute (Figure 2) + allows IKEv2 responders to specify a certificate digest that + initiators can use when validating TLS connections to encrypted + resolvers. This attribute can also be sent by the initiator to + request specific hash algorithms for such digests. + + 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 + +-+-----------------------------+-------------------------------+ + |R| Attribute Type | Length | + +-+-------------+---------------+-------------------------------+ + | Num Hash Algs | ADN Length | | + +---------------+---------------+ + + ~ Authentication Domain Name ~ + +---------------------------------------------------------------+ + ~ List of Hash Algorithm Identifiers ~ + +---------------------------------------------------------------+ + ~ Certificate Digest ~ + +---------------------------------------------------------------+ + + Figure 2: ENCDNS_DIGEST_INFO Attribute Format + + Some of the fields shown in Figure 2 can be omitted, as further + detailed below. + + The format of the ENCDNS_DIGEST_INFO attribute if the Configuration + payload has type CFG_REQUEST is shown in Figure 3. + + 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 + +-+-----------------------------+-------------------------------+ + |R| Attribute Type | Length | + +-+-------------+---------------+-------------------------------+ + | Num Hash Algs | ADN Length | | + +---------------+---------------+ + + ~ List of Hash Algorithm Identifiers ~ + +---------------------------------------------------------------+ + + Figure 3: ENCDNS_DIGEST_INFO Attribute Format in CFG_REQUEST + + The description of the fields shown in Figure 3 is as follows: + + R (Reserved, 1 bit): This bit MUST be set to zero and MUST be + ignored on receipt (see Section 3.15.1 of [RFC7296] for details). + + Attribute Type (15 bits): Identifier for the Configuration Attribute + Type. This is set to 29; see Section 8. + + Length (2 octets, unsigned integer): Length of the enclosed data in + octets. This field MUST be set to "2 + (2 * 'number of included + hash algorithm identifiers')". + + Num Hash Algs (1 octet): Indicates the number of identifiers + included in the "List of Hash Algorithm Identifiers" field. This + field MUST be set to "(Length - 2)/2". + + ADN Length (1 octet): MUST be set to 0. + + List of Hash Algorithm Identifiers (variable): Specifies a list of + 16-bit hash algorithm identifiers that are supported by the + encrypted DNS client. This list may be controlled by a local + policy. + + The values of this field are identifiers taken from "IKEv2 Hash + Algorithms" on IANA's "Internet Key Exchange Version 2 (IKEv2) + Parameters" registry [IANA-IKE-HASH]. + + There is no padding between the hash algorithm identifiers. + + Note that SHA2-256 is mandatory to implement (see Section 5). + + The format of the ENCDNS_DIGEST_INFO attribute if the Configuration + payload has type CFG_REPLY or CFG_SET is shown in Figure 4. + + 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 + +-+-----------------------------+-------------------------------+ + |R| Attribute Type | Length | + +-+-------------+---------------+-------------------------------+ + | Num Hash Algs | ADN Length | | + +---------------+---------------+ + + ~ Authentication Domain Name ~ + +-------------------------------+-------------------------------+ + | Hash Algorithm Identifier | ~ + +-------------------------------+ + + ~ Certificate Digest ~ + +---------------------------------------------------------------+ + + Figure 4: ENCDNS_DIGEST_INFO Attribute Format in CFG_REPLY or CFG_SET + + The description of the fields shown in Figure 4 is as follows: + + R (Reserved, 1 bit): This bit MUST be set to zero and MUST be + ignored on receipt (see Section 3.15.1 of [RFC7296] for details). + + Attribute Type (15 bits): Identifier for the Configuration Attribute + Type. This is set to 29; see Section 8. + + Length (2 octets, unsigned integer): Length of the data in octets. + + Num Hash Algs (1 octet): MUST be set to 1. + + ADN Length (1 octet): Indicates the length of the "Authentication + Domain Name" field in octets. When set to 0, this means that the + digest applies on the ADN conveyed in the ENCDNS_IP* Configuration + Payload Attribute. + + Authentication Domain Name (variable): A fully qualified domain name + of the encrypted DNS resolver following the syntax defined in + [RFC5890]. The name MUST NOT contain any terminators (e.g., NULL, + CR). A name is included only when multiple ADNs are included in + the ENCDNS_IP* Configuration Payload Attribute. + + Hash Algorithm Identifier (2 octets): Specifies the 16-bit hash + algorithm identifier selected by the DNS resolver to generate the + digest of its certificate. + + Certificate Digest (variable): Includes the Subject Public Key Info + (SPKI) hash (Section 5) of the encrypted DNS resolver certificate + using the algorithm identified in the "Hash Algorithm Identifier" + field. The length of this field is "Length - 4 - 'ADN Length'". + + The ENCDNS_DIGEST_INFO attribute may be present in the Configuration + payload of CFG_ACK. In such a case, the ENCDNS_DIGEST_INFO MUST be + returned with zero-length data. + + As discussed in Section 3.15.1 of [RFC7296], there are no defined + uses for the CFG_SET/CFG_ACK exchange. The use of the + ENCDNS_DIGEST_INFO attribute for these messages is provided for + completeness. + +4. IKEv2 Protocol Exchange + + This section describes how the attributes defined in Section 3 are + used to configure an IKEv2 initiator with one or more encrypted DNS + resolvers. As a reminder, badly formatted attributes or unacceptable + fields are handled as per Section 2.21 of [RFC7296]. + + Initiators first indicate support for encrypted DNS by including + ENCDNS_IP* attributes in their CFG_REQUEST payloads. Responders + supply encrypted DNS configuration by including ENCDNS_IP* attributes + in their CFG_REPLY payloads. Concretely: + + * If the initiator supports encrypted DNS, it includes either or + both of the ENCDNS_IP4 and ENCDNS_IP6 attributes in its + CFG_REQUEST. If the initiator does not want to request specific + DNS resolvers, it sets the "Length" field to 0 for the attribute. + For a given attribute type, the initiator MAY send either an empty + attribute or a list of distinct suggested resolvers. The + initiator MAY also include the ENCDNS_DIGEST_INFO attribute with a + list of hash algorithms that are supported by the encrypted DNS + client. + + * If the request includes multiple bitwise identical attributes, + only the first occurrence is processed, and the rest SHOULD be + ignored by the responder. The responder MAY discard the full + request if the count of repeated attributes exceeds an + (implementation-specific) threshold. + + * For each ENCDNS_IP* attribute from the CFG_REQUEST, if the + responder supports the corresponding address family, and absent + any policy restrictions, the responder sends back one or more + ENCDNS_IP* attributes in the CFG_REPLY with an appropriate list of + IP addresses, service parameters, and an ADN. The list of IP + addresses MUST include at least one IP address. The service + parameters SHOULD include at least the "alpn" service parameter. + The "alpn" service parameter may not be required in contexts such + as a variant of DNS over the Constrained Application Protocol + (CoAP) where the messages are encrypted using Object Security for + Constrained RESTful Environments (OSCORE) [RFC8613]. + + * The responder MAY ignore suggested values from the initiator (if + any). Multiple instances of the same ENCDNS_IP* attribute MAY be + returned if distinct ADNs or service parameters need to be + assigned to the initiator. In such instances, the different + attributes can have matching or distinct IP addresses. These + instances MUST be presented to a local DNS client following their + service priority (i.e., a smaller service priority value indicates + a higher preference). + + * In addition, the responder MAY return the ENCDNS_DIGEST_INFO + attribute to convey a digest of the certificate of the encrypted + DNS and the identifier of the hash algorithm that is used to + generate the digest. + + * If the CFG_REQUEST includes an ENCDNS_IP* attribute but the + CFG_REPLY does not include an ENCDNS_IP* attribute matching the + requested address family, this is an indication that the requested + address family is not supported by the responder or the responder + is not configured to provide corresponding resolver addresses. + + * If the initiator receives both ENCDNS_IP* and INTERNAL_IP6_DNS (or + INTERNAL_IP4_DNS) attributes, it is RECOMMENDED that the initiator + use the encrypted DNS resolvers. + + The DNS client establishes an encrypted DNS session (e.g., DoT, DoH, + or DoQ) with the address or addresses conveyed in ENCDNS_IP* and uses + the mechanisms discussed in Section 8 of [RFC8310] to authenticate + the DNS resolver certificate using the ADN conveyed in ENCDNS_IP*. + + If the CFG_REPLY includes an ENCDNS_DIGEST_INFO attribute, the client + has to create an SPKI hash (Section 5) of the DNS resolver + certificate received in the TLS handshake using the negotiated hash + algorithm in the ENCDNS_DIGEST_INFO attribute. If the computed + digest for an ADN matches the digest sent in the ENCDNS_DIGEST_INFO + attribute, the encrypted DNS resolver certificate is successfully + validated. If so, the client continues with the TLS connection as + normal. Otherwise, the client MUST treat the resolver certificate + validation failure as a non-recoverable error. This approach is + similar to certificate usage PKIX-EE(1) with selector SPKI(1) as + defined in [RFC7671], but without PKIX validation. + + If the IPsec connection is a split-tunnel configuration and the + initiator negotiated INTERNAL_DNS_DOMAIN as per [RFC8598], the DNS + client resolves the internal names using ENCDNS_IP* DNS resolvers. + + Note: [RFC8598] requires that the INTERNAL_IP6_DNS (or + INTERNAL_IP4_DNS) attribute be present when INTERNAL_DNS_DOMAIN is + included. This specification relaxes that constraint in the + presence of ENCDNS_IP* attributes. That is, if ENCDNS_IP* + attributes are supplied, responders are allowed to include + INTERNAL_DNS_DOMAIN even in the absence of INTERNAL_IP6_DNS (or + INTERNAL_IP4_DNS) attributes. + +5. Subject Public Key Info (SPKI) Hash + + The SPKI hash of the encrypted DNS resolver certificate is the output + of a cryptographic hash algorithm whose input is the DER-encoded + ASN.1 representation of the SPKI. + + Implementations MUST support SHA2-256 [RFC6234]. + +6. Security Considerations + + This document adheres to the security considerations defined in + [RFC7296]. In particular, this document does not alter the trust + that the initiator has placed on the DNS configuration provided by a + responder. + + Networks are susceptible to internal attacks as discussed in + Section 3.2 of [INT-THREAT-MOD]. Hosting encrypted DNS resolvers + even in the case of split-VPN configuration can minimize the attack + vector (e.g., a compromised network device cannot monitor/modify DNS + traffic). This specification describes a mechanism for restricting + access to the DNS messages to only the parties that need to know. + + If the IKEv2 responder has used the NULL Authentication method + [RFC7619] to authenticate itself, the initiator MUST NOT use returned + ENCDNS_IP* resolvers configuration unless the initiator is + preconfigured, e.g., in the operating system or the application. + + This specification does not extend the scope of accepting DNSSEC + trust anchors beyond the usage guidelines defined in Section 6 of + [RFC8598]. + +7. Privacy Considerations + + As discussed in [RFC9076], the use of encrypted DNS does not reduce + the data available in the DNS resolver. For example, the reader may + refer to Section 8 of [RFC8484] or Section 7 of [RFC9250] for a + discussion on specific privacy considerations for encrypted DNS. + +8. IANA Considerations + + IANA has assigned the following new IKEv2 Configuration Payload + Attribute Types in the "IKEv2 Configuration Payload Attribute Types" + namespace available at [IANA-IKE-CFG]. + + +=======+====================+=============+===========+===========+ + | Value | Attribute Type | Multivalued | Length | Reference | + +=======+====================+=============+===========+===========+ + | 27 | ENCDNS_IP4 | YES | 0 or more | RFC 9464 | + +-------+--------------------+-------------+-----------+-----------+ + | 28 | ENCDNS_IP6 | YES | 0 or more | RFC 9464 | + +-------+--------------------+-------------+-----------+-----------+ + | 29 | ENCDNS_DIGEST_INFO | YES | 0 or more | RFC 9464 | + +-------+--------------------+-------------+-----------+-----------+ + + Table 1 + +9. References + +9.1. Normative References + + [IANA-IKE-HASH] + IANA, "IKEv2 Hash Algorithms", + <https://www.iana.org/assignments/ikev2-parameters/>. + + [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>. + + [RFC5890] Klensin, J., "Internationalized Domain Names for + Applications (IDNA): Definitions and Document Framework", + RFC 5890, DOI 10.17487/RFC5890, August 2010, + <https://www.rfc-editor.org/info/rfc5890>. + + [RFC6234] Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms + (SHA and SHA-based HMAC and HKDF)", RFC 6234, + DOI 10.17487/RFC6234, May 2011, + <https://www.rfc-editor.org/info/rfc6234>. + + [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. + Kivinen, "Internet Key Exchange Protocol Version 2 + (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October + 2014, <https://www.rfc-editor.org/info/rfc7296>. + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC + 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, + May 2017, <https://www.rfc-editor.org/info/rfc8174>. + + [RFC8310] Dickinson, S., Gillmor, D., and T. Reddy, "Usage Profiles + for DNS over TLS and DNS over DTLS", RFC 8310, + DOI 10.17487/RFC8310, March 2018, + <https://www.rfc-editor.org/info/rfc8310>. + + [RFC8598] Pauly, T. and P. Wouters, "Split DNS Configuration for the + Internet Key Exchange Protocol Version 2 (IKEv2)", + RFC 8598, DOI 10.17487/RFC8598, May 2019, + <https://www.rfc-editor.org/info/rfc8598>. + + [RFC9460] Schwartz, B., Bishop, M., and E. Nygren, "Service Binding + and Parameter Specification via the DNS (SVCB and HTTPS + Resource Records)", RFC 9460, DOI 10.17487/RFC9460, + November 2023, <https://www.rfc-editor.org/info/rfc9460>. + +9.2. Informative References + + [IANA-IKE-CFG] + IANA, "IKEv2 Configuration Payload Attribute Types", + <https://www.iana.org/assignments/ikev2-parameters/>. + + [INT-THREAT-MOD] + Arkko, J. and S. Farrell, "Challenges and Changes in the + Internet Threat Model", Work in Progress, Internet-Draft, + draft-arkko-farrell-arch-model-t-04, 13 July 2020, + <https://datatracker.ietf.org/doc/html/draft-arkko- + farrell-arch-model-t-04>. + + [RFC7619] Smyslov, V. and P. Wouters, "The NULL Authentication + Method in the Internet Key Exchange Protocol Version 2 + (IKEv2)", RFC 7619, DOI 10.17487/RFC7619, August 2015, + <https://www.rfc-editor.org/info/rfc7619>. + + [RFC7671] Dukhovni, V. and W. Hardaker, "The DNS-Based + Authentication of Named Entities (DANE) Protocol: Updates + and Operational Guidance", RFC 7671, DOI 10.17487/RFC7671, + October 2015, <https://www.rfc-editor.org/info/rfc7671>. + + [RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D., + and P. Hoffman, "Specification for DNS over Transport + Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May + 2016, <https://www.rfc-editor.org/info/rfc7858>. + + [RFC8484] Hoffman, P. and P. McManus, "DNS Queries over HTTPS + (DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018, + <https://www.rfc-editor.org/info/rfc8484>. + + [RFC8499] Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS + Terminology", BCP 219, RFC 8499, DOI 10.17487/RFC8499, + January 2019, <https://www.rfc-editor.org/info/rfc8499>. + + [RFC8613] Selander, G., Mattsson, J., Palombini, F., and L. Seitz, + "Object Security for Constrained RESTful Environments + (OSCORE)", RFC 8613, DOI 10.17487/RFC8613, July 2019, + <https://www.rfc-editor.org/info/rfc8613>. + + [RFC9076] Wicinski, T., Ed., "DNS Privacy Considerations", RFC 9076, + DOI 10.17487/RFC9076, July 2021, + <https://www.rfc-editor.org/info/rfc9076>. + + [RFC9250] Huitema, C., Dickinson, S., and A. Mankin, "DNS over + Dedicated QUIC Connections", RFC 9250, + DOI 10.17487/RFC9250, May 2022, + <https://www.rfc-editor.org/info/rfc9250>. + + [RFC9463] Boucadair, M., Ed., Reddy.K, T., Ed., Wing, D., Cook, N., + and T. Jensen, "DHCP and Router Advertisement Options for + the Discovery of Network-designated Resolvers (DNR)", + RFC 9463, DOI 10.17487/RFC9463, November 2023, + <https://www.rfc-editor.org/info/rfc9463>. + +Appendix A. Configuration Payload Examples + +A.1. Configuration of Encrypted IPv6 DNS Resolvers without Suggested + Values + + Figure 5 depicts an example of a CFG_REQUEST to request the + configuration of IPv6 DNS resolvers without providing any suggested + values. In this example, the initiator uses the ENCDNS_DIGEST_INFO + attribute to indicate that the encrypted DNS client supports SHA2-256 + (2), SHA2-384 (3), and SHA2-512 (4) hash algorithms for certificate + digests. The label of these algorithms is taken from + [IANA-IKE-HASH]. The use of INTERNAL_IP6_ADDRESS is explained in + [RFC7296] and thus is not reiterated here. + + CP(CFG_REQUEST) = + INTERNAL_IP6_ADDRESS() + INTERNAL_IP6_DNS() + ENCDNS_IP6() + ENCDNS_DIGEST_INFO(0, (SHA2-256, SHA2-384, SHA2-512)) + + Figure 5: Example of a CFG_REQUEST + + Figure 6 depicts an example of a CFG_REPLY that can be sent by a + responder as a response to the above CFG_REQUEST. This response + indicates the following information to identify the encrypted DNS + resolver: + + * Its service priority, which is 1. + + * Its single (1) IPv6 address (2001:db8:99:88:77:66:55:44). + + * Its ADN (doh.example.com). This ADN has a length of 15. + + * Its supported HTTP version (h2). + + * The relative form of the URI Template (/dns-query{?dns}). + + * The SPKI hash of the resolver's certificate using SHA2-256 + (8b6e7a5971cc6bb0b4db5a71...). + + CP(CFG_REPLY) = + INTERNAL_IP6_ADDRESS(2001:db8:0:1:2:3:4:5/64) + ENCDNS_IP6(1, 1, 15, + (2001:db8:99:88:77:66:55:44), + "doh.example.com", + (alpn=h2 dohpath=/dns-query{?dns})) + ENCDNS_DIGEST_INFO(0, SHA2-256, + 8b6e7a5971cc6bb0b4db5a71...) + + Figure 6: Example of a CFG_REPLY + + In the example depicted in Figure 6, no ADN is included in the + ENCDNS_DIGEST_INFO attribute because only one ADN is provided in the + ENCDNS_IP6 attribute. Identifying the encrypted resolver associated + with the supplied digest is therefore unambiguous. + +A.2. Configuration of Encrypted IPv6 DNS Resolvers with Suggested + Values + + An initiator may provide suggested values in the CFG_REQUEST when + requesting an encrypted DNS resolver. For example, the initiator + may: + + * Indicate a preferred resolver that is identified by an IPv6 + address (see Figure 7). + + CP(CFG_REQUEST) = + INTERNAL_IP6_ADDRESS() + INTERNAL_IP6_DNS() + ENCDNS_IP6(1, 1, 0, + (2001:db8:99:88:77:66:55:44)) + + Figure 7: Example of a CFG_REQUEST with a Preferred Resolver + Identified by Its IP Address + + * Indicate a preferred resolver that is identified by an ADN (see + Figure 8). + + CP(CFG_REQUEST) = + INTERNAL_IP6_ADDRESS() + INTERNAL_IP6_DNS() + ENCDNS_IP6(1, 0, 15, "doh.example.com") + + Figure 8: Example of a CFG_REQUEST with a Preferred Resolver + Identified by Its ADN + + * Indicate a preferred transport protocol (DoT, in the example + depicted in Figure 9). + + CP(CFG_REQUEST) = + INTERNAL_IP6_ADDRESS() + INTERNAL_IP6_DNS() + ENCDNS_IP6(1, 0, 0, (alpn=dot)) + + Figure 9: Example of a CFG_REQUEST with a Preferred Transport + Protocol + + * or any combination thereof. + +A.3. Split DNS + + An initiator may also indicate that it supports Split DNS by + including the INTERNAL_DNS_DOMAIN attribute in a CFG_REQUEST as shown + in Figure 10. In this example, the initiator does not indicate any + preference for the requested encrypted DNS server, nor does it + indicate which DNS queries will be forwarded through the IPsec + tunnel. + + CP(CFG_REQUEST) = + INTERNAL_IP6_ADDRESS() + INTERNAL_IP6_DNS() + ENCDNS_IP6() + INTERNAL_DNS_DOMAIN() + + Figure 10: Example of a CFG_REQUEST with Support for Split DNS + + Figure 11 shows an example of the responder's reply. Absent any + prohibited local policy, the initiator uses the encrypted DNS server + (doh.example.com) for any subsequent DNS queries for "example.com" + and its subdomains. + + CP(CFG_REPLY) = + INTERNAL_IP6_ADDRESS(2001:db8:0:1:2:3:4:5/64) + ENCDNS_IP6(1, 1, 15, + (2001:db8:99:88:77:66:55:44), + "doh.example.com", + (alpn=h2 dohpath=/dns-query{?dns})) + INTERNAL_DNS_DOMAIN(example.com) + + Figure 11: Example of a CFG_REPLY with INTERNAL_DNS_DOMAIN + +Acknowledgments + + Many thanks to Yoav Nir, Christian Jacquenet, Paul Wouters, and Tommy + Pauly for their reviews and comments. + + Yoav and Paul suggested the use of one single attribute carrying both + the name and an IP address instead of depending on the existing + INTERNAL_IP6_DNS and INTERNAL_IP4_DNS attributes. + + Thanks to Tero Kivinen for the Shepherd review and Roman Danyliw for + the AD review. + + Thanks to Stewart Bryant for the gen-art review, Dhruv Dhody for the + ops-dir review, and Patrick Mevzek for the dns-dir review. + + Thanks to Paul Wouters, Zaheduzzaman Sarker, Éric Vyncke, and Robert + Wilton for their comments during the IESG review. + +Authors' Addresses + + Mohamed Boucadair + Orange + 35000 Rennes + France + Email: mohamed.boucadair@orange.com + + + Tirumaleswar Reddy.K + Nokia + India + Email: kondtir@gmail.com + + + Dan Wing + Cloud Software Group Holdings, Inc. + United States of America + Email: dwing-ietf@fuggles.com + + + Valery Smyslov + ELVIS-PLUS + Russian Federation + Email: svan@elvis.ru |