<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp "&#160;">
  <!ENTITY zwsp "&#8203;">
  <!ENTITY nbhy "&#8209;">
  <!ENTITY wj "&#8288;">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     category="std"
     docName="draft-vandemeent-tibet-tat-00"
     ipr="trust200902"
     submissionType="IETF"
     consensus="true"
     version="3">

  <front>
    <title abbrev="TIBET TAT">TIBET TAT: Touch-and-Transfer Protocol</title>
    <seriesInfo name="Internet-Draft"
                value="draft-vandemeent-tibet-tat-00"/>

    <author fullname="Jasper van de Meent" initials="J."
            surname="van de Meent">
      <organization>Humotica</organization>
      <address>
        <postal><country>Netherlands</country></postal>
        <email>info@humotica.com</email>
        <uri>https://humotica.com/</uri>
      </address>
    </author>
    <date year="2026" month="May" day="18"/>
    <area>Security</area>
    <workgroup>Internet Engineering Task Force</workgroup>

    <keyword>tibet</keyword>
    <keyword>tat</keyword>
    <keyword>touch-and-transfer</keyword>
    <keyword>sealed handoff</keyword>
    <keyword>consent-bound transfer</keyword>

    <abstract>
      <t>This document specifies TIBET TAT, a Touch-and-Transfer
      protocol for moving sealed continuity-bearing objects across
      proximity, relay, and local-network handoff lanes.</t>
      <t>TAT defines a consent-bound handoff model, a seed exchange for
      tunnel establishment, encrypted chunk streaming, and mutual
      transfer anchoring between sender and receiver.</t>
      <t>TAT does not define identity truth, semantic class, or sealed
      object class by itself. Instead, it defines the wire and handoff
      layer that carries such objects once sender and receiver have
      agreed to transfer. TAT is intended to sit between the
      Continuity Envelope Protocol (CEP) and higher-level application
      profiles such as IDDrop.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Many systems can transport bytes, but fewer specify the exact
      handoff semantics of a consensual sealed transfer.</t>
      <t>TIBET TAT addresses this gap. TAT is the wire and handoff
      protocol for touch-and-transfer and related relay delivery
      paths.</t>
      <t>The key design principle is simple: transfer MUST be
      consent-bound, anchored, and sealed.</t>
    </section>

    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
      "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
      RECOMMENDED", "MAY", and "OPTIONAL" 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>
      <dl>
        <dt>TAT</dt>
        <dd>The Touch-and-Transfer protocol specified in this
        document.</dd>
        <dt>Seed</dt>
        <dd>A compact signed handshake object exchanged before tunnel
        opening.</dd>
        <dt>Consent</dt>
        <dd>The explicit receiver-side decision to accept, reject, or
        request more information before transfer continues.</dd>
        <dt>Transfer Pair</dt>
        <dd>The sender-side transfer_out anchor and receiver-side
        transfer_in anchor that together record a single handoff
        event.</dd>
        <dt>TAT Tunnel</dt>
        <dd>The encrypted transport channel established after seed
        validation and consent.</dd>
        <dt>Tombstone</dt>
        <dd>An optional finality record written after successful
        transfer to indicate deactivation or succession.</dd>
      </dl>
    </section>

    <section anchor="overview">
      <name>Protocol Overview</name>
      <t>TAT sits between general continuity messaging and higher-level
      application protocols. TIBET decides causal truth, TAT decides
      transfer flow, ICC or TZA/TBZ sealed carriers decide object
      structure, and SSM decides visible dispatch surface.</t>
      <t>TAT is intended as the generic transfer profile that a
      specialized application profile MAY build upon.</t>
      <t>TAT MAY be used across multiple transport modes including
      proximity touch, local relay, local network handoff, and
      HTTP-assisted handoff. The transport substrate MAY vary, but the
      TAT consent, tunnel, and transfer-pair semantics MUST remain
      invariant.</t>
    </section>

    <section anchor="objects">
      <name>TAT Objects</name>
      <dl>
        <dt>Seed Object</dt>
        <dd>Advertises transfer intent and carries minimum material for
        validation and tunnel setup.</dd>
        <dt>Consent Object</dt>
        <dd>The receiver-side signed response that echoes the transfer
        identifier and states accept, reject, or request_more.</dd>
        <dt>Transfer-Out Anchor</dt>
        <dd>The sender-side record of initiated transfer. It MUST be
        written before protected content flows.</dd>
        <dt>Transfer-In Anchor</dt>
        <dd>The receiver-side record of received and verified transfer.
        It MUST only be written after integrity verification
        succeeds.</dd>
        <dt>Optional Tombstone</dt>
        <dd>An optional finality object recording deactivation or
        succession after transfer.</dd>
      </dl>
    </section>

    <section anchor="flow">
      <name>Touch-and-Transfer Flow</name>
      <ol>
        <li>sender generates an ephemeral X25519 keypair and a new
        transfer_pair_id</li>
        <li>sender emits a Seed Object</li>
        <li>receiver validates the seed and performs consent</li>
        <li>receiver emits a signed Consent Object</li>
        <li>sender verifies consent</li>
        <li>sender writes transfer_out</li>
        <li>both sides derive the tunnel key</li>
        <li>encrypted chunks are streamed</li>
        <li>receiver verifies final integrity and writes
        transfer_in</li>
        <li>sender MAY write a tombstone</li>
      </ol>
      <t>A relay or HTTP flow follows the same logical sequence.
      Implementations MUST NOT weaken bilateral consent,
      transfer-pair integrity, or receiver binding merely because the
      transport is not NFC-based.</t>
    </section>

    <section anchor="tunnel">
      <name>Tunnel Establishment</name>
      <t>TAT seeds are RECOMMENDED to be encoded compactly, for example
      using CBOR, when the seed must traverse a narrow proximity
      channel.</t>
      <t>TAT RECOMMENDS X25519 for ephemeral ECDH <xref target="RFC7748"/>
      and HKDF-SHA256 <xref target="RFC5869"/> for deriving a per-transfer
      tunnel key and nonce prefix.</t>
      <t>The transfer itself SHOULD use an authenticated encryption
      scheme such as AES-256-GCM <xref target="RFC5116"/>. Chunks MUST
      be sequenced and integrity checked, and the receiver MUST compare
      the final result to the sender's summary before writing
      transfer_in.</t>
    </section>

    <section anchor="validation">
      <name>Validation Rules</name>
      <ol>
        <li>
          <t><strong>Bilateral Consent</strong>: a sender MUST NOT begin
          protected content transfer before an explicit receiver-side
          consent has been verified.</t>
        </li>
        <li>
          <t><strong>Seed Authenticity</strong>: the receiver MUST verify the
          seed signature, fingerprint, and transfer identifier before
          producing consent.</t>
        </li>
        <li>
          <t><strong>Transfer-Pair Consistency</strong>: the same transfer_pair_id
          MUST appear in the initiating seed, the receiver consent, the
          sender transfer_out anchor, and the receiver transfer_in
          anchor.</t>
        </li>
        <li>
          <t><strong>Stream Integrity</strong>: the receiver MUST verify the
          stream integrity and final content summary before writing
          transfer_in.</t>
        </li>
        <li>
          <t><strong>Mutual Anchoring</strong>: the sender MUST write
          transfer_out before content flow, and the receiver MUST write
          transfer_in only after successful verification.</t>
        </li>
        <li>
          <t><strong>Post-Transfer Finality</strong>: if a sender claims
          deactivation or succession, this MUST be represented by an
          explicit tombstone or equivalent finality object rather than
          by silent deletion alone.</t>
        </li>
      </ol>
    </section>

    <section anchor="relationship">
      <name>Relationship to CEP, TIBET, SSM, ICC, and IDDrop</name>
      <t>TAT is lower than IDDrop, complementary to SSM, orthogonal to
      ICC or TZA/TBZ sealed object semantics, and anchored by but not
      identical to TIBET causal truth.</t>
      <t>CEP is the umbrella continuity model, TAT is the generic
      handoff and transfer profile, and IDDrop is an identity-transfer
      application profile over TAT.</t>
      <ul>
        <li>TIBET decides causal truth</li>
        <li>TAT carries the handoff</li>
        <li>ICC or TZA seals the object</li>
        <li>SSM makes the outer surface routable</li>
        <li>IDDrop decides identity-transfer semantics above TAT</li>
      </ul>
    </section>

    <section anchor="security">
      <name>Security Considerations</name>
      <t>TAT is designed to reduce ambiguity in sealed handoff, but
      several security properties depend on correct composition.
      Physical proximity alone is insufficient without explicit
      consent. Transport confidentiality is insufficient without mutual
      anchoring. Transfer success is insufficient without final
      integrity checks. Silent deletion is insufficient as proof of
      retirement.</t>
      <t>Implementations SHOULD surface fingerprint, sender identity,
      or equivalent trust hints before consent. Implementations MUST
      treat transfer_pair_id reuse as suspicious. Replayed or stale
      consent responses MUST be rejected.</t>
    </section>

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

  <back>
    <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="Scott Bradner"/>
          <date month="March" year="1997"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
      </reference>
      <reference anchor="RFC5116" target="https://www.rfc-editor.org/info/rfc5116">
        <front>
          <title>An Interface and Algorithms for Authenticated Encryption</title>
          <author initials="D." surname="McGrew" fullname="David McGrew"/>
          <date month="January" year="2008"/>
        </front>
        <seriesInfo name="RFC" value="5116"/>
      </reference>
      <reference anchor="RFC5869" target="https://www.rfc-editor.org/info/rfc5869">
        <front>
          <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
          <author initials="H." surname="Krawczyk" fullname="Hugo Krawczyk"/>
          <author initials="P." surname="Eronen" fullname="Pasi Eronen"/>
          <date month="May" year="2010"/>
        </front>
        <seriesInfo name="RFC" value="5869"/>
      </reference>
      <reference anchor="RFC7748" target="https://www.rfc-editor.org/info/rfc7748">
        <front>
          <title>Elliptic Curves for Security</title>
          <author initials="A." surname="Langley" fullname="Adam Langley"/>
          <author initials="M." surname="Hamburg" fullname="Mike Hamburg"/>
          <author initials="S." surname="Turner" fullname="Sean Turner"/>
          <date month="January" year="2016"/>
        </front>
        <seriesInfo name="RFC" value="7748"/>
      </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="Barry Leiba"/>
          <date month="May" year="2017"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
      </reference>
      <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
        <front>
          <title>Concise Binary Object Representation (CBOR)</title>
          <author initials="C." surname="Bormann" fullname="Carsten Bormann"/>
          <author initials="P." surname="Hoffman" fullname="Paul Hoffman"/>
          <date month="December" year="2020"/>
        </front>
        <seriesInfo name="STD" value="94"/>
        <seriesInfo name="RFC" value="8949"/>
      </reference>
    </references>

    <references>
      <name>Informative References</name>
      <reference anchor="CAUSAL">
        <front>
          <title>TIBET Causal Time</title>
          <author initials="J." surname="van de Meent" fullname="Jasper van de Meent"/>
          <date month="May" year="2026"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-vandemeent-tibet-causal-time-02"/>
      </reference>
      <reference anchor="SSM">
        <front>
          <title>TIBET Semantic Surface Manifest</title>
          <author initials="J." surname="van de Meent" fullname="Jasper van de Meent"/>
          <date month="May" year="2026"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-vandemeent-tibet-semantic-surface-manifest-02"/>
      </reference>
      <reference anchor="CEP">
        <front>
          <title>Continuity Envelope</title>
          <author initials="J." surname="van de Meent" fullname="Jasper van de Meent"/>
          <date month="May" year="2026"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-vandemeent-continuity-envelope-00"/>
      </reference>
      <reference anchor="IDDROP">
        <front>
          <title>IDDrop</title>
          <author initials="J." surname="van de Meent" fullname="Jasper van de Meent"/>
          <date month="May" year="2026"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-vandemeent-iddrop-00"/>
      </reference>
    </references>
  </back>
</rfc>
