<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     category="info"
     docName="draft-tempobono-protectchain-00"
     ipr="trust200902"
     submissionType="independent"
     obsoletes=""
     updates=""
     xml:lang="en"
     version="3"
     >

  <front>
    <title abbrev="ProtectChain">ProtectChain: An Anchored Permissioned Ledger for Proof of Anteriority of Authored Works</title>
    <seriesInfo name="Internet-Draft" value="draft-tempobono-protectchain-00" status="informational"/>

    <author fullname="Orlando Tempobono" initials="O." surname="Tempobono">
      <organization>Global Innovation Technology LTDA</organization>
      <address>
        <postal>
          <postalLine>Sao Paulo, SP</postalLine>
          <postalLine>Brazil</postalLine>
        </postal>
        <email>orlando@globalcopyrights.org</email>
        <uri>https://orcid.org/0009-0002-2533-7446</uri>
      </address>
    </author>
    <author fullname="Nelson Tempobono" initials="N." surname="Tempobono">
      <organization>Global Innovation Technology LTDA</organization>
      <address>
        <postal>
          <postalLine>Sao Paulo, SP</postalLine>
          <postalLine>Brazil</postalLine>
        </postal>
        <email>nelson@globalcopyrights.org</email>
      </address>
    </author>
    <author fullname="Lucas Tempobono" initials="L." surname="Tempobono">
      <organization>Global Innovation Technology LTDA</organization>
      <address>
        <postal>
          <postalLine>Sao Paulo, SP</postalLine>
          <postalLine>Brazil</postalLine>
        </postal>
        <email>lucas@globalcopyrights.org</email>
      </address>
    </author>
    <author fullname="Felipe Tempobono" initials="F." surname="Tempobono">
      <organization>Global Innovation Technology LTDA</organization>
      <address>
        <postal>
          <postalLine>Sao Paulo, SP</postalLine>
          <postalLine>Brazil</postalLine>
        </postal>
        <email>felipe@globalcopyrights.org</email>
      </address>
    </author>
    <author fullname="Clara Tempobono" initials="C." surname="Tempobono">
      <organization>Global Innovation Technology LTDA</organization>
      <address>
        <postal>
          <postalLine>Sao Paulo, SP</postalLine>
          <postalLine>Brazil</postalLine>
        </postal>
        <email>clara@globalcopyrights.org</email>
      </address>
    </author>

    <date year="2026" month="September" day="10"/>

    <area>General</area>
    <workgroup>Independent Submission</workgroup>
    <keyword>proof of existence</keyword>
    <keyword>anteriority</keyword>
    <keyword>timestamping</keyword>
    <keyword>permissioned ledger</keyword>
    <keyword>copyright</keyword>

    <abstract>
      <t>This document specifies ProtectChain, a permissioned, hash-chained and
      cryptographically signed ledger whose purpose is to produce verifiable
      evidence that a given digital work already existed no later than a given
      point in time, under an authorship claim made by an identified account.</t>

      <t>ProtectChain records only cryptographic digests and pseudonymous
      identifiers; the work itself never enters the ledger. Because all initial
      authorities may be operated by a single organization, every block is also
      anchored to independent public time references, so that the upper bound on
      a record's date does not rest on the operator's assertion.</t>

      <t>This document is deliberately explicit about the limits of the evidence
      produced: an anchor establishes that data existed <em>no later than</em> a
      given instant; it does not establish the exact instant of creation, nor
      does it establish authorship or originality.</t>
    </abstract>
  </front>

  <middle>

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

      <t>Under the Berne Convention <xref target="BERNE"/> and most national
      legislation, copyright arises automatically upon creation of a work;
      registration is not a condition of protection. The practical difficulty is therefore not
      obtaining the right, but <em>proving</em>, in a later dispute, that a
      particular work existed at a particular time and was claimed by a
      particular party.</t>

      <t>Services that produce such evidence are common. Their recurring
      weakness is that the recorded date rests entirely on the provider's own
      database and clock: an operator could, in principle, insert a record and
      assert an earlier date for it.</t>

      <t>ProtectChain addresses that weakness by combining three mechanisms:</t>

      <ol spacing="normal">
        <li>a hash-chained ledger in which each block is signed by the authority
        that sealed it;</li>
        <li>independent co-signature by additional authorities, each of which
        recomputes the block rather than trusting the sender;</li>
        <li>anchoring of each block into public time references that the
        operator does not control.</li>
      </ol>

      <t>The work itself is never transmitted to or stored in the ledger. Only
      digests and pseudonymous identifiers are recorded, which keeps the
      confidentiality of the work independent of the number of participants in
      the network.</t>

      <section anchor="terminology" numbered="true">
        <name>Requirements 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&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/>
        when, and only when, they appear in all capitals, as shown here.</t>
      </section>

      <section anchor="defs" numbered="true">
        <name>Definitions</name>
        <dl spacing="normal">
          <dt>Record:</dt>
          <dd>The set of digests and metadata submitted for a work. It never
          contains the work itself.</dd>
          <dt>Block:</dt>
          <dd>A batch of sealed records, linked to its predecessor by hash and
          signed by a sealer.</dd>
          <dt>Authority:</dt>
          <dd>A node permitted to validate and co-sign blocks, identified by an
          Ed25519 public key. Roles are <em>sealer</em> (produces blocks) and
          <em>validator</em> (validates and co-signs).</dd>
          <dt>Anchor:</dt>
          <dd>External evidence that a block existed no later than a given
          instant, obtained from a public time reference.</dd>
          <dt>Quorum:</dt>
          <dd>The number of distinct authority signatures required for a block
          to be considered corroborated.</dd>
        </dl>
      </section>
    </section>

    <section anchor="data-model" numbered="true">
      <name>Data Model</name>

      <section anchor="records" numbered="true">
        <name>Records</name>
        <t>A record carries the SHA-256 and SHA-512 digests of the work, an
        opaque reference to the submitting account, an optional declared
        creation date, an optional certificate code, and the instant at which
        the node received it.</t>

        <t>Implementations <bcp14>MUST NOT</bcp14> place the content of the work,
        or any direct personal data, in a record. The record identifier is
        computed as the SHA-256 of the following canonical form, with fields
        separated by a single LF character (0x0A):</t>

        <artwork type="ascii-art"><![CDATA[
record_hash = SHA-256(
    "record" LF
    node_id     LF
    work_ref    LF
    sha256      LF
    sha512      LF
    declared_at LF
    received_at LF
    cert_code )
]]></artwork>

        <t>Absent optional fields are represented as the empty string. All
        digests are lowercase hexadecimal.</t>
      </section>

      <section anchor="blocks" numbered="true">
        <name>Blocks</name>
        <t>A block links to its predecessor and commits to the records it
        contains:</t>

        <artwork type="ascii-art"><![CDATA[
block_hash = SHA-256(
    "block"      LF
    index        LF
    prev_hash    LF
    merkle_root  LF
    created_at   LF
    node_id      LF
    record_count )

signature  = Ed25519-Sign(sealer_private_key, block_hash)
]]></artwork>

        <t>The genesis block has index 1, a prev_hash of sixty-four ASCII zeros,
        and no records. Signatures use Ed25519 <xref target="RFC8032"/> and are
        computed over the lowercase hexadecimal representation of block_hash.</t>
      </section>

      <section anchor="merkle" numbered="true">
        <name>Merkle Root with Domain Separation</name>

        <t>A naive Merkle construction that duplicates the final element when a
        level holds an odd number of nodes admits distinct record sets that
        produce identical roots. Implementations <bcp14>MUST</bcp14> therefore
        use domain separation between leaves and interior nodes, in the spirit
        of <xref target="RFC9162"/>:</t>

        <artwork type="ascii-art"><![CDATA[
leaf(h)      = SHA-256( 0x00 || h )
node(a, b)   = SHA-256( 0x01 || a || b )
empty list   = SHA-256( 0x00 )
]]></artwork>

        <t>The prefixes <tt>0x00</tt> and <tt>0x01</tt> are single octets, and
        h, a and b are the 32-octet binary digests, not their hexadecimal
        encodings. When a level holds an odd number of nodes, the final element
        <bcp14>MUST</bcp14> be promoted unchanged to the next level; it
        <bcp14>MUST NOT</bcp14> be duplicated or paired with itself. The root is
        published in lowercase hexadecimal.</t>
      </section>
    </section>

    <section anchor="consensus" numbered="true">
      <name>Consensus</name>

      <t>Only authorities produce and validate blocks. Each node publishes the
      authority list, so that any verifier can determine which keys may
      legitimately co-sign. There is no mining and no proof of work; the
      identity of operators is known and auditable.</t>

      <section anchor="cosign" numbered="true">
        <name>Co-signature Protocol</name>
        <ol spacing="normal">
          <li>The sealer seals pending records into a block, computes
          block_hash, and signs it.</li>
          <li>The sealer sends the block header and the list of record_hash
          values to the other authorities. It <bcp14>MUST NOT</bcp14> send the
          content of any work.</li>
          <li>Each validator decides independently (<xref target="independent"/>)
          and, if it approves, mirrors the block locally and returns its
          signature over block_hash.</li>
          <li>The sealer <bcp14>MUST</bcp14> accept a co-signature only if the
          signer is a known active authority and the signature verifies against
          that authority's public key.</li>
          <li>A block reaches quorum when it holds signatures from distinct
          authorities in a number at least equal to the quorum
          (<xref target="quorum"/>).</li>
        </ol>
      </section>

      <section anchor="independent" numbered="true">
        <name>Independent Validation</name>

        <t>Before co-signing, a validator <bcp14>MUST</bcp14> verify, on its own
        and without taking any value from the sender on trust, that:</t>

        <ol spacing="normal">
          <li>the sealer is present in the active authority list;</li>
          <li>block_hash, recomputed from the received fields, matches;</li>
          <li>the Merkle root, recomputed from the received record_hash values,
          matches;</li>
          <li>the sealer's Ed25519 signature over block_hash verifies;</li>
          <li>prev_hash matches the block it already holds at index-1, if
          any;</li>
          <li>it has not already co-signed a different block at the same index.</li>
        </ol>

        <t>A validator that merely echoed what it received would add no
        evidence. It is the independent recomputation that gives a co-signature
        meaning: a block carrying N signatures indicates that N machines, in
        distinct locations, independently reached the same result.</t>
      </section>

      <section anchor="mirroring" numbered="true">
        <name>Mirroring and Synchronization</name>

        <t>A validator replicates the chain; it <bcp14>MUST NOT</bcp14> maintain
        a competing one. Upon receiving a block whose predecessor it does not
        hold, it <bcp14>MUST</bcp14> obtain the missing blocks from an authority
        and revalidate each one before adopting it. Data arriving over the
        network is never adopted on trust, even when it originates from an
        authority.</t>

        <t>Consequently, only the sealer creates the genesis block. A validator
        that created its own genesis would diverge on prev_hash and reject the
        legitimate chain.</t>

        <t>A validator stores only record_hash values, which suffice to
        recompute the Merkle root and to serve inclusion proofs, without ever
        holding the work.</t>
      </section>

      <section anchor="quorum" numbered="true">
        <name>Quorum and Fault Tolerance</name>

        <t>Quorum is the simple majority of active authorities, counting the
        sealer's own signature.</t>

        <table anchor="quorum-table">
          <name>Quorum by number of authorities</name>
          <thead>
            <tr><th>Authorities</th><th>Quorum</th><th>Tolerated failures</th></tr>
          </thead>
          <tbody>
            <tr><td>1</td><td>1</td><td>0</td></tr>
            <tr><td>2</td><td>2</td><td>0</td></tr>
            <tr><td>3</td><td>2</td><td>1</td></tr>
            <tr><td>4</td><td>3</td><td>1</td></tr>
            <tr><td>5</td><td>3</td><td>2</td></tr>
          </tbody>
        </table>

        <t>A block that has not yet reached quorum is not invalid; it is less
        corroborated. It remains chained, signed and publicly anchored. This
        distinction is deliberate: the evidence available to a submitter
        <bcp14>MUST NOT</bcp14> depend on the availability of third parties.</t>
      </section>

      <section anchor="separation" numbered="true">
        <name>Separation of Recording and Consensus</name>

        <t>Recording a work and obtaining consensus are distinct, asynchronous
        operations.</t>

        <ul spacing="normal">
          <li>Recording <bcp14>MUST NOT</bcp14> block while waiting for
          co-signatures.</li>
          <li>Propagation <bcp14>MUST</bcp14> occur outside the submitter's
          request path, in a periodic process.</li>
          <li>That process <bcp14>MUST</bcp14> reprocess blocks that have not
          reached quorum, so that the network converges without operator
          intervention when an unavailable authority returns.</li>
        </ul>
      </section>

      <section anchor="availability" numbered="true">
        <name>Availability Model</name>

        <t>Authorities are expected to sit behind network address translation in
        distinct sites, and connectivity between peers may be asymmetric or
        intermittent. This specification treats that as normal rather than
        exceptional:</t>

        <ul spacing="normal">
          <li>the sealer <bcp14>MUST</bcp14> continue to operate when it can
          reach no validator;</li>
          <li>an unreachable validator <bcp14>MUST NOT</bcp14> prevent sealing,
          anchoring, or recording;</li>
          <li>convergence <bcp14>MUST</bcp14> be eventual and automatic.</li>
        </ul>
      </section>
    </section>

    <section anchor="anchoring" numbered="true">
      <name>Anchoring to Public Time References</name>

      <t>Because all initial authorities may belong to a single operator, each
      block is additionally committed to public references that the operator
      does not control.</t>

      <section anchor="tsa" numbered="true">
        <name>Time-Stamp Tokens</name>
        <t>Implementations <bcp14>SHOULD</bcp14> obtain a time-stamp token over
        block_hash from one or more independent Time-Stamping Authorities as
        defined in <xref target="RFC3161"/>. This yields an immediate signed
        upper bound on the block's date.</t>
      </section>

      <section anchor="dlt-anchor" numbered="true">
        <name>Distributed Ledger Anchoring</name>
        <t>Implementations <bcp14>SHOULD</bcp14> additionally commit block_hash
        to a public distributed ledger whose history the operator cannot
        rewrite, using an aggregation scheme so that many commitments share a
        single ledger transaction. Such proofs are inherently asynchronous: they
        mature only when the underlying ledger confirms. Until then, the
        immediate guarantee is provided by <xref target="tsa"/>.</t>
      </section>

      <section anchor="clock" numbered="true">
        <name>Clock Discipline</name>
        <t>Nodes <bcp14>SHOULD</bcp14> discipline their clocks against
        authoritative time sources using NTP <xref target="RFC5905"/>. Clock
        accuracy serves precision and record-keeping; the property that makes a
        date assertable against third parties comes from the anchors, not from
        the local clock. A well-disciplined clock narrows, but does not
        eliminate, the window described in <xref target="window"/>.</t>
      </section>
    </section>

    <section anchor="evidence" numbered="true">
      <name>Scope and Limits of the Temporal Evidence</name>

      <t>This section is deliberately explicit. A specification about evidence
      loses credibility if it overstates what it proves. Implementations and
      accompanying materials <bcp14>MUST NOT</bcp14> claim more than what is
      described here.</t>

      <section anchor="what-proves" numbered="true">
        <name>What the Evidence Demonstrates</name>
        <t>An anchor over block_hash demonstrates, verifiably by third parties
        and without relying on the operator's assertion, that the block -- and,
        by Merkle inclusion, every record within it -- already existed no later
        than the instant of the anchor. Because record_hash incorporates the
        digests of the submitted file, this is equivalent to demonstrating that
        a file with exactly that content already existed by that instant.</t>
      </section>

      <section anchor="what-not" numbered="true">
        <name>What the Evidence Does Not Demonstrate</name>
        <ol spacing="normal">
          <li>It does not fix the instant of creation. The anchor is an upper
          bound: it shows the content was not created after that instant.</li>
          <li>It does not validate the block's created_at field nor the
          submitter's declared creation date. Neither is corroborated by the
          anchor; only the anchoring instant is.</li>
          <li>It does not establish authorship or originality. The submission is
          a self-declaration.</li>
          <li>It does not prevent submission of a third party's work. A
          submitter obtains evidence that the file existed by a given instant,
          which confers no right over it.</li>
        </ol>
      </section>

      <section anchor="window" numbered="true">
        <name>The Trust Window and Its Mitigation</name>

        <t>Between the created_at value written into a block and the instant of
        anchoring there is a window within which the accuracy of the date
        depends on the operator's honesty. A dishonest operator cannot backdate
        a record beyond the anchor, since the anchor is always later; it could,
        within the window, declare a created_at slightly earlier than reality.</t>

        <t>Mitigations:</t>
        <ul spacing="normal">
          <li>Implementations <bcp14>MUST</bcp14> anchor each block immediately
          after sealing, keeping the window in the order of seconds.</li>
          <li>Material citing a proven date <bcp14>SHOULD</bcp14> present the
          anchoring instant as the demonstrated date, and created_at or any
          declared date as asserted information.</li>
          <li>Federation with independent operators reduces the window to a
          problem of collusion between distinct parties.</li>
        </ul>

        <t>Recording early is what creates value: the evidence is as strong as
        its earliest anchor is old. No technology can retroactively demonstrate
        that data is older than its first anchor.</t>
      </section>
    </section>

    <section anchor="privacy-model" numbered="true">
      <name>Data Minimization</name>

      <t>The following table summarizes what does and does not reach the
      ledger.</t>

      <table anchor="data-table">
        <name>Data placement</name>
        <thead>
          <tr><th>Data</th><th>Enters the ledger</th></tr>
        </thead>
        <tbody>
          <tr><td>The work itself</td><td>Never</td></tr>
          <tr><td>SHA-256 / SHA-512 of the work</td><td>Yes</td></tr>
          <tr><td>Work and certificate identifiers, dates</td><td>Yes</td></tr>
          <tr><td>Submitter identity</td><td>Only as an opaque pseudonymous reference</td></tr>
          <tr><td>Name, e-mail, documents, address</td><td>Never</td></tr>
        </tbody>
      </table>

      <t>Identifiers recorded in the ledger are pseudonymous, not anonymous:
      alone they reveal nothing, but they can be relinked to a person by whoever
      holds the operator's account database. Implementations
      <bcp14>MUST NOT</bcp14> place direct personal data in the ledger, nor any
      metadata that identifies a person on its own.</t>

      <t>Deployments subject to data protection regimes that grant a right to
      erasure face a known tension with append-only, anchored records. The
      approach taken here is minimization and unlinking rather than deletion:
      personal data resides exclusively outside the ledger and remains
      erasable; once the link between the pseudonymous reference and the person
      is destroyed, the ledger entry retains only an irreversible digest and
      opaque identifiers. Submitters <bcp14>MUST</bcp14> be informed, before
      recording, that digests and pseudonymous identifiers are written
      permanently.</t>
    </section>

    <section anchor="federation" numbered="true">
      <name>Admission of Additional Authorities</name>

      <t>A candidate authority <bcp14>MUST</bcp14> satisfy the following. None of
      these is ceremonial; each exists so that the candidate's co-signature
      carries meaning.</t>

      <ol spacing="normal">
        <li>Verifiable identification of the operator and formal acceptance of
        the network's terms.</li>
        <li>Independence: the candidate <bcp14>MUST NOT</bcp14> be controlled by
        the same entity as another active authority. Two authorities under
        common control do not add independence.</li>
        <li>A distinct site: separate physical machine, provider and network
        path. Placement in a different jurisdiction from existing authorities is
        <bcp14>RECOMMENDED</bcp14>.</li>
        <li>Clocks disciplined per <xref target="clock"/>.</li>
        <li>Locally generated Ed25519 key material. The private key
        <bcp14>MUST NOT</bcp14> leave the node, including in backups or images.</li>
        <li>Participation over a private, authenticated and encrypted network.
        The consensus API <bcp14>MUST NOT</bcp14> be exposed on a public
        address.</li>
        <li>Authentication of inter-node calls by signature
        (<xref target="node-auth"/>). Shared secrets <bcp14>MUST NOT</bcp14> be
        used between authorities.</li>
      </ol>

      <t>Admission proceeds by request, review, network provisioning, a probation
      period during which the candidate replicates and revalidates the chain
      without co-signing, and finally addition of its public key to the
      authority list, at which point quorum is recomputed.</t>

      <t>Removal of an authority <bcp14>MUST</bcp14> be possible at any time and
      consists of withdrawing its public key from the authority list. Revocation
      <bcp14>MUST NOT</bcp14> invalidate blocks the authority previously
      co-signed: each signature remains verifiable against the key that produced
      it, and the date remains supported by the anchors. Revocation applies
      prospectively.</t>
    </section>

    <section anchor="node-auth" numbered="true">
      <name>Inter-Node Authentication</name>

      <t>What authorizes a block is the Ed25519 signature of the authority that
      sealed it, verified against the authority list. No transport credential
      substitutes for that: a block carrying an invalid signature is rejected
      even when it arrives over a perfectly authenticated channel.</t>

      <t>Calls between authorities <bcp14>MUST</bcp14> be authenticated by the
      Ed25519 signature of the issuing node, verified against the authority
      list. Shared secrets <bcp14>MUST NOT</bcp14> be used between authorities,
      because they make an individual participant neither distinguishable nor
      revocable.</t>

      <t>Each request carries the issuing node identifier, a timestamp, a nonce
      and a signature over the canonical form:</t>

      <artwork type="ascii-art"><![CDATA[
SHA-256 of the request body is included, so the signature binds
who, what, where, when, and the exact payload:

    "pcauth-v1"  LF
    node_id      LF
    METHOD       LF
    path         LF
    timestamp    LF
    nonce        LF
    SHA-256(body)
]]></artwork>

      <t>A receiver <bcp14>MUST</bcp14> reject requests outside a bounded clock
      tolerance, <bcp14>MUST</bcp14> require the issuer to be an active
      authority, <bcp14>MUST</bcp14> verify the signature against the registered
      public key, and <bcp14>MUST</bcp14> reject reuse of a nonce within the
      tolerance window. A tolerance of 300 seconds is
      <bcp14>RECOMMENDED</bcp14>.</t>
    </section>

    <section anchor="security" numbered="true">
      <name>Security Considerations</name>

      <t><strong>Confidentiality of the work.</strong> The work never enters the
      ledger (<xref target="privacy-model"/>). Adding authorities therefore
      widens corroboration without widening exposure of content.</t>

      <t><strong>Backdating.</strong> Anchoring prevents assigning a record a
      date earlier than its anchor. The residual window between created_at and
      anchoring is addressed in <xref target="window"/>. Implementations that
      omit anchoring reduce the guarantee to the operator's assertion.</t>

      <t><strong>Merkle malleability.</strong> Domain separation
      (<xref target="merkle"/>) prevents distinct record sets from yielding the
      same root, and promotion of the odd element removes the ambiguity
      introduced by duplication.</t>

      <t><strong>Compromise of a sealer key.</strong> An attacker holding a
      sealer's private key could forge <em>new</em> blocks, but could not alter
      blocks already anchored, since their digests are committed externally.
      Key rotation <bcp14>MUST</bcp14> be recorded in the chain, and quorum
      limits the damage: forged blocks would fail independent validation by
      other authorities.</t>

      <t><strong>Equivocation.</strong> A validator <bcp14>MUST NOT</bcp14>
      co-sign two distinct blocks at the same index; implementations
      <bcp14>MUST</bcp14> keep persistent state sufficient to detect this across
      restarts.</t>

      <t><strong>Replay.</strong> Inter-node authentication binds method, path,
      timestamp, nonce and body digest (<xref target="node-auth"/>). Without
      nonce rejection, a captured request could be replayed within the clock
      tolerance.</t>

      <t><strong>Digest strength.</strong> Evidence rests on SHA-256 and
      SHA-512 <xref target="RFC6234"/> jointly; a forgery would require
      simultaneous collisions in both with semantically useful content. Should
      either function be weakened, deployments will need a migration path that
      re-anchors existing records under a stronger function; this document does
      not specify one.</t>

      <t><strong>Availability is not integrity.</strong> Loss of quorum reduces
      corroboration but never causes acceptance of an invalid block. Conversely,
      a reachable but dishonest authority cannot cause an invalid block to be
      accepted by honest validators, since each validates independently.</t>

      <t><strong>Transport.</strong> Private, authenticated and encrypted
      transport between authorities is defence in depth, not the foundation of
      the evidence: a forged block would be rejected by signature and chaining
      checks regardless of the channel. Deployments concerned with long-term
      confidentiality of consensus traffic <bcp14>SHOULD</bcp14> select
      transports offering protection against future cryptanalytic advances,
      including those enabled by quantum computation.</t>

      <t><strong>Legal weight.</strong> The evidence produced is one element of
      proof, subject to evaluation by the relevant forum. It is not an absolute
      legal presumption in any jurisdiction, and it does not replace official
      registration where such registration carries specific effects.</t>
    </section>

    <section anchor="iana" numbered="true">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>

  </middle>

  <back>
    <references>
      <name>References</name>

      <references>
        <name>Normative References</name>

        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner"/>
            <date year="1997" month="March"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>

        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba"/>
            <date year="2017" month="May"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>

        <reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author initials="S." surname="Josefsson" fullname="S. Josefsson"/>
            <author initials="I." surname="Liusvaara" fullname="I. Liusvaara"/>
            <date year="2017" month="January"/>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>

        <reference anchor="RFC6234" target="https://www.rfc-editor.org/info/rfc6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <author initials="D." surname="Eastlake 3rd" fullname="D. Eastlake 3rd"/>
            <author initials="T." surname="Hansen" fullname="T. Hansen"/>
            <date year="2011" month="May"/>
          </front>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </reference>

        <reference anchor="RFC3161" target="https://www.rfc-editor.org/info/rfc3161">
          <front>
            <title>Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)</title>
            <author initials="C." surname="Adams" fullname="C. Adams"/>
            <author initials="P." surname="Cain" fullname="P. Cain"/>
            <author initials="D." surname="Pinkas" fullname="D. Pinkas"/>
            <author initials="R." surname="Zuccherato" fullname="R. Zuccherato"/>
            <date year="2001" month="August"/>
          </front>
          <seriesInfo name="RFC" value="3161"/>
          <seriesInfo name="DOI" value="10.17487/RFC3161"/>
        </reference>
      </references>

      <references>
        <name>Informative References</name>

        <reference anchor="RFC9162" target="https://www.rfc-editor.org/info/rfc9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <author initials="B." surname="Laurie" fullname="B. Laurie"/>
            <author initials="E." surname="Messeri" fullname="E. Messeri"/>
            <author initials="R." surname="Stradling" fullname="R. Stradling"/>
            <date year="2021" month="December"/>
          </front>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
        </reference>

        <reference anchor="RFC5905" target="https://www.rfc-editor.org/info/rfc5905">
          <front>
            <title>Network Time Protocol Version 4: Protocol and Algorithms Specification</title>
            <author initials="D." surname="Mills" fullname="D. Mills"/>
            <author initials="J." surname="Martin" fullname="J. Martin"/>
            <author initials="J." surname="Burbank" fullname="J. Burbank"/>
            <author initials="W." surname="Kasch" fullname="W. Kasch"/>
            <date year="2010" month="June"/>
          </front>
          <seriesInfo name="RFC" value="5905"/>
          <seriesInfo name="DOI" value="10.17487/RFC5905"/>
        </reference>

        <reference anchor="BERNE" target="https://www.wipo.int/treaties/en/ip/berne/">
          <front>
            <title>Berne Convention for the Protection of Literary and Artistic Works</title>
            <author><organization>World Intellectual Property Organization</organization></author>
            <date year="1979"/>
          </front>
        </reference>
      </references>
    </references>

    <section anchor="ack" numbered="false">
      <name>Acknowledgements</name>
      <t>The design of the Merkle construction in <xref target="merkle"/>
      follows the domain-separation approach established by Certificate
      Transparency <xref target="RFC9162"/>.</t>
    </section>

  </back>
</rfc>
