Internet-Draft | The GNS SBOX Record Type | December 2023 |
Nadler & Schanzenbach | Expires 16 June 2024 | [Page] |
This document provides an extension to the GNU Name System (GNS) technical specification [RFC9498]. GNS is a decentralized and censorship-resistant domain name resolution protocol that provides a privacy-enhancing alternative to the Domain Name System (DNS) protocols.¶
This document defines the normative wire format of an additional resource record and a modified resolution processes for use by implementers.¶
This specification was developed outside the IETF and does not have IETF consensus. It is published here to inform readers about the function of GNS, guide future GNS implementations, and ensure interoperability among implementations (for example, pre-existing GNUnet implementations).¶
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 16 June 2024.¶
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.¶
This specification describes additions to the GNU Name System (GNS) [RFC9498], a censorship-resistant, privacy-preserving, and decentralized domain name resolution protocol. GNS cryptographically secures the binding of names to arbitrary tokens, enabling it to double in some respects as an alternative to some of today's public key infrastructures.¶
This LSD document is an extension to the GNS technical specification [RFC9498]. It is intended to be read in conjunction with the GNS technical specification.¶
A new record type is defined to extend the GNS to support a wider range of underscore labels. The new record type is called SBOX and is intended to handle all variations of underscore labels the BOX record type is not able to.¶
This document defines the normative wire format of the SBOX resource record and resolution processes for use by implementers.¶
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.¶
The terminology defined in [RFC9498] also applies to this document.¶
This document includes the following additional terms:¶
This section defines an additional auxiliary GNS record type. Any implementation SHOULD be able to process the specified record types according to Section 4.1.¶
GNS lookups are expected to return all of the required useful information in one record set. This avoids unnecessary additional lookups and cryptographically ties together information that belongs together, making it impossible for an adversarial storage entity to provide partial answers that might omit information critical for security.¶
This general strategy is incompatible with the special labels used by DNS for SRV and TLSA records. Thus, GNS defines the BOX record format to box up SRV and TLSA records and include them in the record set of the label they are associated with.¶
This way of handling and storing restricts the allowed and processable underscore prefixes to the format of "_SERVICE._PROTOCOL" as well as only services registered in the corresponding IANA registry. A new SBOX record is proposed to enable the use of labels such as "c93f1e400f26708f98cb19d936620da35eec8f72e57f9eec01c1afd6._smimecert" and other variations of underscore prefixes for SMIMEA/URI/SRV, and other records. The SBOX record is supposed to handle all variations of underscore prefixes. The idea is to store the string representation of the underscore prefix instead of the service and protocol numbers. A SBOX record boxes the record's type and data as well as the underscore prefix, and adds them to the record set of the associated label. For example, a URI record for "_scheme._trust.example.gns.alt" will be stored as an SBOX record in the record set of "example.gns.alt" with the underscore prefix "_schema._trust" and record type URI and the URI records data.¶
For reference, see also [RFC8552].¶
A SBOX DATA entry is illustrated in Figure 1.¶
Records saved as BOX records can also be saved as SBOX records. Thus, upon encountering underscore labels processable by BOX records, the resolver must store the labels as their protocol and service numbers, as well as the underscore prefix. This way, the resolver should be able to return all boxed records later, whether they are SBOX or BOX records. More on this in Section 4. BOX records are more efficient for boxing resource records due to their smaller wire format. Therefore, SBOX records are not a replacement for BOX records.¶
The first step in processing the records remains the same as described in [RFC9498] Section 7.¶
The next step depends on the context of the name being resolved. Case 3, as defined in [RFC9498] Section 7.3, is modified here. All other cases and further processing steps remain the same.¶
When a BOX record is received, a GNS resolver must unbox it if the name to be resolved continues with "_SERVICE._PROTO". Otherwise, the BOX record is to be left untouched. This way, TLSA (and SRV) records do not require a separate network request, and TLSA records become inseparable from the corresponding address records.¶
GANA [GANA] manages the "GNS Record Types" registry.¶
GANA has assigned a number for the record type SBOX defined in this specification in the "GNS Record Types" registry as listed in Table 1.¶
Number | Name | Contact | References | Comment |
---|---|---|---|---|
65547 | SBOX | (*) | LSD 0008 | SBOX records |
(*): gns-registry@gnunet.org |