<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.23 (Ruby 3.4.1) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC1035 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml">
<!ENTITY RFC3597 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3597.xml">
<!ENTITY RFC7493 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7493.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC7208 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7208.xml">
<!ENTITY RFC8552 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8552.xml">
<!ENTITY I-D.kowalik-domainconnect SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.kowalik-domainconnect.xml">
]>


<rfc ipr="trust200902" docName="draft-hoffman-duj-01" category="std" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="DNS Update with JSON">DNS Update with JSON</title>

    <author initials="P." surname="Hoffman" fullname="Paul Hoffman">
      <organization>ICANN</organization>
      <address>
        <email>paul.hoffman@icann.org</email>
      </address>
    </author>

    <date year="2025" month="February" day="03"/>

    
    
    

    <abstract>


<?line 34?>

<t>It is common for service providers such as certificate authorities and social media providers to want users to update the users' zones to prove that they control those zones, or to add other features.
Currently, service providers tell users to do this using human language describing the resource record type and data values to enter into the zone.
This document describes a text format, called "DNS update with JSON" or "DUJ", for such a service provider to give to a user, with the expectation that the user would copy and paste the text to their DNS operator to update the user's zone.
DNS operators who know how to handle DUJ strings will make the update process easier and more predictable for their users.</t>



    </abstract>



  </front>

  <middle>


<?line 41?>

<section anchor="introduction"><name>Introduction</name>

<t>There are many scenarios where someone gives instructions to a human to update their DNS zone in order to prove that they control those zones, or to add other features.
For example, someone suggesting that you add an SPF <xref target="RFC7208"/> record to a zone might say "add a TXT record with the value "v=spf1 a:mail.yourname.example ip4:192.0.2.49" to your zone".
The expectation is that you are either able to edit your zone file directly and understand the format of the records, or you use a DNS operator who has an interface for you to be able to add and modify records in your zone.</t>

<t>This document proposes a method for giving a human a string that can be copy-and-pasted to give a precise update for a zone.
The protocol, called "DNS update with JSON" or "DUJ", specifies a string format in I-JSON <xref target="RFC7493"/> that represents the addition and deletion of records in a DNS zone.
It is designed for DNS operators who accept strings in their interface for zone updates.
The format self-identifies a string as DUJ, and the protocol lists what is and is not acceptable for DUJ strings.
Using DUJ makes the update process more reliable for DNS operators and their users.</t>

<section anchor="use-case"><name>DUJ Use Case</name>

<t>DUJ is specifically targeted at improving the current common scenario of a user being told by an application service or a helpful friend to modify their DNS zone.
DUJ is not intended for any automatic zone updates.</t>

<t>DUJ is intended only for users who copy-and-paste.
DUJ strings can be typed by users, but doing so can easily introduce errors that might negatively affect their DNS zone.
There is no intention in the design for the user to change the text in a DUJ string.
Because DUJ strings contain quoted text, and some typing systems might automatically unhelpfully convert quotation marks into "smart quotes", for some users typing DUJ strings might be impossible.</t>

<t>Different, more elaborate protocols for automatic updates, may be proposed separately.
For example, DomainConnect (<xref target="DomainConnect"/>, <xref target="I-D.kowalik-domainconnect"/>) defines an automated protocol that includes user affirmation before updates.
DUJ is purposely more limited and less ambitious than those protocols, with the assumption that it will be much easier to deploy.
Service providers might allow manual updates as they do today, manual updates by DUJ, and automated updates with a protocol like DomainConnect.</t>

</section>
<section anchor="design"><name>DUJ Design</name>

<t>This format is explicitly only meant for the use cases in <xref target="use-case"/>.
If the designer of an automated protocol is thinking of re-using DUJ in that protocol, they should not.
DUJ is specifically designed for copy-and-paste by end users.
It would be trivial to design a better format for describing automated DNS updates.</t>

<t>The design choice to use JSON arrays instead of objects is to increase security and reliability.
This is to prevent key-value pairs to be added that might cause users or operators to possibly process the DUJ strings incorrectly or to misinterpret them.
For example, it is not possible to include comments in a DUJ string such as "For DKIM".
The reason for this is that such comments could be used by an attacker to convince a user to make a change that they otherwise might not by adding a comment such as "Urgent security update".</t>

<t>DUJ strings are meant to be somewhat readable by the user.
They might not understand what it says, but if they understand something about the DNS, they might.
For example, you might see that a particular RRtype and Rdata are proposed to be added to your zone by looking at the DUJ string you are presented.
This is the reason that the DUJ string is not "protected" by encoding it with something like Base64.</t>

<t>DUJ strings should not be difficult for a service to create.
There are cases described later where the quoting on the Rdata field can be tricky, but forcing an application to understand backslash quoting and apply it correctly is considered out of scope for a format this is only meant to replace human-readable instructions like "enter this record into your zone".</t>

<t>This document assumes that the application service will have looked in the user's zone before suggesting a zone update.
That would likely be true in the current use case where the application service suggests an update to the user's zone.</t>

<t>Another explicit design for DUJ is that it is not extensible.
If there is a reason to create a later version, the first string can be changed to one that includes a new version identifier.</t>

</section>
<section anchor="bcp-14-language"><name>BCP 14 Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
</section>
<section anchor="specification"><name>Specification</name>

<t>An example of a DUJ string is:</t>

<figure><artwork><![CDATA[
[ "DUJ", [ ["add", "mail.yourname.example", "TXT",
 "v=spf1 a:mail.yourname.example ip4:192.0.2.49"] ] ]
]]></artwork></figure>

<t>A DUJ string <bcp14>MUST</bcp14> be a JSON array with two values. The first value is the string "DUJ".
The second value is an array, called the "update array", which lists all the updates.
The update array <bcp14>MUST</bcp14> have a length of at least 1.</t>

<t>DUJ strings <bcp14>MUST NOT</bcp14> include zone file comments, directives, parentheses or embedded newlines from <xref target="RFC1035"/>.
DUJ Rdata stings <bcp14>MAY</bcp14> contain \DDD and \X escapes from <xref target="RFC1035"/>; other strings <bcp14>MUST NOT</bcp14> contain those escapes.</t>

<t>The arrays in the update array are called "action templates".
Every action template is an array of at least four values: "action", "FQDN", "RRtype", and "Rdata".</t>

<section anchor="action"><name>Action</name>

<t>The action is a string specifying the action to be taken.
The action string <bcp14>MUST</bcp14> be either "add" or "delete"; no other values are allowed.</t>

</section>
<section anchor="fqdn"><name>FQDN</name>

<t>The FQDN is a string that is a fully-qualified domain name.
The action is taken on the domain name in the FQDN.</t>

<t>For example, given the following:</t>

<figure><artwork><![CDATA[
["DUJ", [ ["add", "_443._tcp.www.example.com", "TLSA", "0 0 1
  d2abde240d7cd3ee6b4b28c54df034b97983a1d16e8a410e4561cb106618e971" ] ] ]
]]></artwork></figure>

<t>The TLSA record would be added to the zone "_443._tcp.www.example.com" if all the requirements in <xref target="processing"/> are met.</t>

<t>Note that the FQDN might be a zone that does not yet exist because it is being created by an "add" action.
A common example of this is adding an "underscore name" <xref target="RFC8552"/> such as "_smimecert" and "_xmpp".</t>

<t>The FQDN <bcp14>MUST NOT</bcp14> contain a wildcard.</t>

</section>
<section anchor="rrtype"><name>RRtype</name>

<t>The RRtype is a string with the name of the resource record type for the action.
The RRtype's name is given in the "TYPE" column of the "Resource Record (RR) TYPEs" IANA registry <xref target="Types-registry"/>.</t>

<t>To specify an RRtype that is not yet in the registry, use the format specified in <xref target="RFC3597"/>.
For example:</t>

<figure><artwork><![CDATA[
["DUJ", [ ["add", "yourname.example", "TYPE4321", "\# 4 0A000001"] ] ]
]]></artwork></figure>

</section>
<section anchor="rdata"><name>Rdata</name>

<t>Rdata consists of one or more strings that holds the record's data.
The strings are expressed in the same manner as the display format defined for the RRtype.
If there is no data for the record, this is specified with an empty string ("").</t>

<t>Note that the quoting of an Rdata string in the DUJ does not directly translate to how the DNS operator would copy the Rdata string to the zone.
Some RRtypes require multiple &lt;character-string&gt;s, where "&lt;character-string&gt;" is defined in Section 5.1 of <xref target="RFC1035"/>.
In such a case, each &lt;character-string&gt; is a separate JSON string.
For example:</t>

<figure><artwork><![CDATA[
[ "DUJ", [ ["add", "yourname.example", "WALLET", "ETH",
  "0xb775599c76b4672B0D820E3AA534F7cF9312c263"] ] ]
]]></artwork></figure>

<t>However, when moving an Rdata using the format specified in <xref target="RFC3597"/>, the quotation marks in the DUJ are not copied.</t>

</section>
</section>
<section anchor="processing"><name>Processing</name>

<t>This section defines rules for DNS operators who allow updates with DUJ to process DUJ strings they receive.</t>

<t>The update array is an ordered list of action templates.
The DNS operator <bcp14>MUST</bcp14> process each action template in the order it appears in the update array.
However, the DNS operator does so only after verifying all the contents of the DUJ string.</t>

<t>The DNS operator <bcp14>SHOULD</bcp14> be able to handle <xref target="RFC3597"/> RRtypes.
However, they may have a local policy to not allow users to add or delete unknown RRtypes.</t>

<t>A DNS operator <bcp14>MAY</bcp14> reject any DUJ string for any reason.
If the DUJ was received from a user interface, the DNS operator <bcp14>SHOULD</bcp14> clearly describe why a DUJ was rejected.</t>

<section anchor="string-verification"><name>String Verification</name>

<t>The DNS operator <bcp14>MUST</bcp14> not process any DUJ string where any of the following rules are not met:</t>

<t><list style="symbols">
  <t>The DUJ string <bcp14>MUST</bcp14> be valid I-JSON.</t>
  <t>The first element of the DUJ string <bcp14>MUST</bcp14> be "DUJ".</t>
  <t>The update array <bcp14>MUST</bcp14> have at least one action template.</t>
  <t>Every action template <bcp14>MUST</bcp14> meet the following rules:
  <list style="symbols">
      <t>There <bcp14>MUST</bcp14> be four or more elements</t>
      <t>The action element <bcp14>MUST</bcp14> be either the exact string "add" or "delete"</t>
      <t>The FQDN <bcp14>MUST</bcp14> be a valid fully-qualified domain name</t>
      <t>The FQDN <bcp14>MUST NOT</bcp14> contain a wildcard</t>
      <t>The RRtype <bcp14>MUST</bcp14> be recognized, or be in the format specified in <xref target="RFC3597"/></t>
      <t>The Rdata <bcp14>MUST</bcp14> be appropriate for the given RRtype</t>
    </list></t>
</list></t>

</section>
<section anchor="action-processing"><name>Action Processing</name>

<t>After verifying the DUJ string, the DNS operator processes each action template in order.
When processing an action template, the DNS operator <bcp14>MUST</bcp14> verify:</t>

<t><list style="symbols">
  <t>that the  user is authorized to change the zone named in the FQDN</t>
  <t>that, for "delete" actions, that the exact record described in the action template exists</t>
  <t>that, for "add" actions, that the exact record described in the action template does not already exist</t>
</list></t>

<t>A DNS operator <bcp14>SHOULD</bcp14> tell a user about every change made from a DUJ.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document contains no actions for IANA.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>A DUJ has no cryptographic protection.
It is, by design, only as secure and the current common scenario where a service tells a user to manually copy and paste some data (the RRtype and Rdata values) into an interface run by the DNS operator.</t>

<t>When a service gives the user a DUJ string, the authenticity of the source of the DUJ string and the integrity of the DUJ string is only as strong as the user's connection to the service.
When a user pastes a DUJ string to a DNS operator, the authenticity of the source of the DUJ string and the integrity of the DUUS is only as strong as the user's connection to the DNS operator.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">

&RFC1035;
&RFC3597;
&RFC7493;
&RFC2119;
&RFC8174;


    </references>

    <references title='Informative References' anchor="sec-informative-references">

&RFC7208;
&RFC8552;
&I-D.kowalik-domainconnect;
<reference anchor="DomainConnect" target="https://www.domainconnect.org/">
  <front>
    <title>DomainConnect</title>
    <author >
      <organization></organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="Types-registry" target="https://www.iana.org/assignments/dns-parameters/">
  <front>
    <title>Domain Name System (DNS) Parameters</title>
    <author >
      <organization></organization>
    </author>
    <date />
  </front>
</reference>


    </references>

</references>


<?line 243?>

<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>Andy Newton,
Bob Harold,
Gavin Brown,
John Levine,
Libor Peltan,
Pawel Kowalik,
and
Robert Edmonds
contributed substantial comments to early versions of this draft.</t>

</section>


  </back>

<!-- ##markdown-source:
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
IhZfECQOIVcLLjQU6K32YfR3H8nyWyMvAAA=

-->

</rfc>

