<?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 RFC4648 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.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-02" 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="06"/>

    
    
    

    <abstract>


<?line 35?>

<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 42?>

<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.
There are two types of DUJ strings: DUJS and DUJ64.
DUJS strings can be typed by users, but doing so can easily introduce errors that might negatively affect their DNS zone.
DUJ64 strings cannot be safely typed by users.</t>

<t>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>DUJS 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.</t>

<t>DUJ64 strings are purposely not readable by the user.
However, the user can still see if records are being added or deleted.</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 ("DJUS" or "DUJ64") 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 DUJS string is:</t>

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

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

<figure><artwork><![CDATA[
[ "DUJ64", [ ["add", "bWFpbC55b3VybmFtZS5leGFtcGxlIFRYVCAidj1zcGYxIGE6bWFpbC55b3VybmFtZS5leGFtcGxlIGlwNDoxOTIuMC4yLjQ5Ig=="] ] ]
]]></artwork></figure>

<t>A DUJ string <bcp14>MUST</bcp14> be a JSON array with two values. The first value is the string "DUJS" or "DUJ64".
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>The arrays in the update array are called "action templates".
Every action template is exactly two values: "action" and "zone-data".</t>

<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>

<t>The zone-data is a string that is in the zone file format defined in <xref target="RFC1035"/>.
The zone-data <bcp14>MAY</bcp14> contain class names, as described in <xref target="RFC1035"/>.
The zone-data <bcp14>MAY</bcp14> contain time-to-live (TTL) values, as described in <xref target="RFC1035"/>.</t>

<section anchor="dujs"><name>DUJS</name>

<t>The zone-data in DUJS strings <bcp14>MUST NOT</bcp14> include zone file comments, directives, or embedded newlines from <xref target="RFC1035"/>.
The zone-data in DUJS stings <bcp14>MAY</bcp14> contain \DDD and \X escapes, and parentheses, from <xref target="RFC1035"/>.</t>

</section>
<section anchor="duj64"><name>DUJ64</name>

<t>A DUJ64 string is identical to a DUJS string except that the zone-data in a DUJ64 string is the Base64 <xref target="RFC4648"/> encoding of he zone-data that would have gone into a DUJS string.</t>

</section>
<section anchor="notes-on-owner-names"><name>Notes on Owner Names</name>

<t>The owner name of a zone in a zone-data string 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".
A DNS operator would have to determine whether the full owner name given in the zone-data could be created, which might not be possible due to zone cuts.</t>

<t>The owner-name <bcp14>MUST NOT</bcp14> contain a wildcard.</t>

</section>
<section anchor="notes-on-rrtypes"><name>Notes on RRtypes</name>

<t>The RRtype in the zone-data 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[
["DUJS", [ ["add", "yourname.example TYPE4321 \# 4 0A000001"] ] ]
]]></artwork></figure>

</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 after verifying that the entire DUJ string can be atomically applied to the target zone.
The DNS operator <bcp14>MUST NOT</bcp14> process any action within the DUJ if any action would prevent the atomic application of the entire DUJ string.</t>

<t>The DNS operator <bcp14>MAY</bcp14> choose to skip an "add" action if it would create a record that is already in the zone.
The DNS operator <bcp14>MAY</bcp14> choose to skip a "delete" action if it would delete a record that did not exist in the zone.</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;
&RFC4648;
&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 237?>

<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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
nOl6/DT5H9RZ0OBsLwAA

-->

</rfc>

