draft-schanzen-gns-split-rrset.xml (8108B)
1 <?xml version='1.0' encoding='utf-8'?> 2 <!DOCTYPE rfc [ 3 <!ENTITY RFC1034 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1034.xml"> 4 <!ENTITY RFC1035 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1035.xml"> 5 <!ENTITY RFC2119 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"> 6 <!ENTITY RFC2782 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2782.xml"> 7 <!ENTITY RFC3686 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3686.xml"> 8 <!ENTITY RFC3826 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3826.xml"> 9 <!ENTITY RFC3912 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3912.xml"> 10 <!ENTITY RFC5869 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5869.xml"> 11 <!ENTITY RFC5890 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5890.xml"> 12 <!ENTITY RFC5891 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5891.xml"> 13 <!ENTITY RFC6781 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6781.xml"> 14 <!ENTITY RFC6895 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6895.xml"> 15 <!ENTITY RFC6979 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6979.xml"> 16 <!ENTITY RFC7748 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7748.xml"> 17 <!ENTITY RFC8032 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8032.xml"> 18 <!ENTITY RFC8126 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8126.xml"> 19 <!ENTITY RFC9498 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9498.xml"> 20 ]> 21 <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> 22 <?rfc strict="yes" ?> 23 <?rfc toc="yes" ?> 24 <?rfc symrefs="yes"?> 25 <?rfc sortrefs="yes" ?> 26 <?rfc compact="yes" ?> 27 <?rfc subcompact="no" ?> 28 <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-schanzen-gns-split-rrset-00" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" version="3"> 29 <!-- xml2rfc v2v3 conversion 2.26.0 --> 30 <front> 31 <title abbrev="gns_split_rrset"> 32 The GNS Split Resource Record Set 33 </title> 34 <seriesInfo name="Internet-Draft" value="draft-schanzen-gns-split-rrset-00"/> 35 <author fullname="Martin Schanzenbach" initials="M." surname="Schanzenbach"> 36 <organization>GNUnet e.V.</organization> 37 <address> 38 <postal> 39 <street>Boltzmannstrasse 3</street> 40 <city>Garching</city> 41 <code>85748</code> 42 <country>DE</country> 43 </postal> 44 <email>schanzen@gnunet.org</email> 45 </address> 46 </author> 47 <author fullname="Thomas Bellebaum" initials="T." surname="Bellebaum"> 48 <organization>Fraunhofer AISEC</organization> 49 <address> 50 <postal> 51 <street>Lichtenbergstrasse 11</street> 52 <city>Garching</city> 53 <code>85748</code> 54 <country>DE</country> 55 </postal> 56 <email>thomas.bellebaum@aisec.fraunhofer.de</email> 57 </address> 58 </author> 59 <!-- Meta-data Declarations --> 60 <area>General</area> 61 <workgroup>Independent Stream</workgroup> 62 <keyword>gnu name system</keyword> 63 <abstract> 64 <t>This document contains the technical specification of the GNS Split Resource Record Set.</t> 65 </abstract> 66 </front> 67 <middle> 68 <section anchor="introduction" numbered="true" toc="default"> 69 <name>Introduction</name> 70 <t> 71 In GNS <xref target="RFC9498"/>, resource record set sizes are limited by the underlying storage 72 component. 73 For example, in the current instantion in GNUnet on top of R<sup>5</sup>N, 74 Resource record sets must fit into around 64 kilobytes. 75 This includes all records in the set as well as signatures and encryption overhead 76 (e.g. the authentication tag). 77 This prohibits use cases that require some large records or a lot of small records, but also 78 makes post-quantum signature schemes more difficult to integrate. 79 </t> 80 <t> 81 This document defines a new record type that allows record sets to be split 82 across multiple record sets in GNS. 83 The new record type is backwards compatible with the existing GNS, 84 but resolver that do not conform to this specification will be unable to 85 fully retrieve the split record set. 86 In this case, the applicatin must take care and collect all entries of the record 87 set in the zone. 88 </t> 89 <t> 90 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL 91 NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and 92 "OPTIONAL" in this document are to be interpreted as described 93 in <xref target="RFC2119"/>. 94 </t> 95 </section> 96 <section anchor="gnsrecords_split" numbered="true" toc="default"> 97 <name>SPLIT</name> 98 <t> 99 This record consists of a list of resource record types that should 100 exist and belong to this record set. 101 </t> 102 <t> 103 A SPLIT resource record is expected to be found along with other resource 104 records. 105 A SPLIT DATA entry is illustrated in <xref target="figure_lehorecord"/>. 106 </t> 107 <figure anchor="figure_lehorecord" title="The SPLIT DATA Wire Format."> 108 <artwork name="" type="" align="left" alt=""><![CDATA[ 109 0 8 16 24 32 110 +-----+-----+-----+-----+ 111 | RECORD TYPE 0 | 112 +-----------------------+ 113 | RECORD TYPE 1 | 114 +-----------------------+ 115 / ... / 116 / / 117 +-----------------------+ 118 | RECORD TYPE N-1 | 119 +-----+-----+-----+-----+ 120 ]]></artwork> 121 </figure> 122 <dl> 123 <dt>RECORD TYPE X</dt> 124 <dd> 125 The 32-bit record type number (as defined in GANA) in network byte order. 126 </dd> 127 </dl> 128 <t> 129 The record types indicate to the resolve that it <bcp14>SHOULD</bcp14> try to resolve 130 further resource record sets of the specified type(s) if the record type is being 131 asked for as part of the resolution. 132 Otherwise, the record type can be ignored. 133 </t> 134 </section> 135 <section numbered="true" toc="default"> 136 <name>Resolver behaviour</name> 137 <t> 138 When a resolver encounters a SPLIT record in a record set for 139 a label L in zone Z, it <bcp14>SHOULD</bcp14> process it as follows. 140 For reach record type T encountered in the SPLIT record, and in the 141 set of record types that is currently of interest, calculate the 142 next label as L' := Base32-GNS(SHA-256(Z,T,L)). 143 </t> 144 <t> 145 The resolver then queries L' in Z to retrieve the next part of the 146 record set for this record type. 147 The resulting record set <bcp14>MAY</bcp14> contain other record types 148 than the record type indicated by the SPLIT record, but those records 149 should only consist of supplemental or auxiliary records. 150 Otherwise, efficient resolution of record types is not possible. 151 </t> 152 </section> 153 154 <section anchor="security" numbered="true" toc="default"> 155 <name>Security Considerations</name> 156 <section anchor="resolver_loop" numbered="true" toc="default"> 157 <name>Loops</name> 158 <t> 159 Resolvers must take care to avoid loops. 160 While statistically unlikely due to the use of a collision-resistant hash function 161 in the derivation label, a resolver could accidentally be caught in a resolution loop. 162 </t> 163 </section> 164 </section> 165 <section anchor="gana" numbered="true" toc="default"> 166 <name>GANA Considerations</name> 167 <t> 168 GANA is requested to populate this registry as follows: 169 </t> 170 <figure anchor="figure_rrtypenums"> 171 <artwork name="" type="" align="left" alt=""><![CDATA[ 172 Number: 65555 173 Name: SPLIT 174 Contact: gns-registry@gnunet.org 175 References: [This.I-D] 176 Description: SPLIT Record Set 177 ]]></artwork> 178 </figure> 179 </section> 180 <!-- gana --> 181 <section> 182 <name>Test Vectors</name> 183 </section> 184 </middle> 185 <back> 186 <references> 187 <name>Normative References</name> 188 189 &RFC2119; 190 &RFC9498; 191 192 </references> 193 </back> 194 </rfc>