lsd0016

LSD0016: The GNS Split Record Set
Log | Files | Refs

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>