<?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" submissionType="IETF" docName="draft-luo-orasrs-decentralized-threat-signaling-00" category="std" ipr="trust200902" obsoletes="" updates="" xml:lang="en" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <!-- Generated by id2xml 1.5.2 on 2025-12-16T17:38:03Z -->
	<front>
    <title abbrev="Decentralized Threat Signaling Protocol ">Decentralized Threat Signaling Protocol (DTSP) using OraSRS</title>
    <seriesInfo name="Internet-Draft" value="draft-luo-orasrs-decentralized-threat-signaling-00"/>
    <author initials="Z." surname="Luo" fullname="Z. Luo">
      <organization>OraSRS Protocol</organization>
      <address>
        <!--
   draft-luo-orasrs-decentralized-threat-signaling-00.txt(211): Warning: This
   author is listed in the Author's Address section, but was not found  on the
   first page: Luo Ziqian
   -->
      </address>
    </author>
    <date year="2025" month="December" day="16"/>
    <abstract>
      <t>
   This document specifies the Decentralized Threat Signaling Protocol
   (DTSP), a mechanism for distributed edge clients to collaboratively
   detect, report, and mitigate network threats.  The protocol defines a
   state machine for threat lifecycle management (T0-T3), a standardized
   data format for threat signaling, and security mechanisms to prevent
   abuse in a permissionless environment.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
   The increasing sophistication of network attacks requires a
   collaborative defense mechanism that operates at the edge.
   Centralized threat intelligence systems suffer from single points of
   failure and latency issues.  DTSP enables a decentralized network of
   edge clients to share threat intelligence in real-time, leveraging a
   blockchain-based consensus mechanism for verification.</t>
    </section>
    <section anchor="sect-2" numbered="true" toc="default">
      <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" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all
   capitals, as shown here.</t>
    </section>
    <section anchor="sect-3" numbered="true" toc="default">
      <name>Protocol Logic</name>
      <t>
   The lifecycle of a threat in DTSP is modeled as a Finite State
   Machine (FSM).  Each edge client maintains the state of detected
   threats.</t>
      <section anchor="sect-3.1" numbered="true" toc="default">
        <name>State Machine</name>
        <t>
   The FSM consists of the following states:</t>
        <ul spacing="normal">
          <li>
            <t>IDLE: No threat detected.</t>
          </li>
          <li>
            <t>OPTIMISTIC_BLOCK (T0): Local detection of suspicious activity.
      Immediate local mitigation.</t>
          </li>
          <li>
            <t>REPORTED (T1): Threat evidence submitted to the network.</t>
          </li>
          <li>
            <t>VERIFIED (T2): Network consensus reached. Threat confirmed.</t>
          </li>
          <li>
            <t>GLOBAL_ENFORCE (T3): Global propagation of the threat signature.</t>
          </li>
          <li>
            <t>EXPIRED: Threat entry validity period ended.</t>
          </li>
        </ul>
      </section>
      <section anchor="sect-3.2" numbered="true" toc="default">
        <name>State Transitions</name>
        <section anchor="sect-3.2.1" numbered="true" toc="default">
          <name>T0: Local Detection</name>
          <t>
   The Edge Client MUST transition to the OPTIMISTIC_BLOCK state
   immediately upon detection of traffic matching local heuristic rules
   (e.g., high-frequency connection attempts).</t>
          <t>
   In this state, the client:</t>
          <ol spacing="normal" type="1"><li>
              <t>MUST block the source IP locally.</t>
            </li>
            <li>
              <t>SHOULD generate a ThreatEvidence package.</t>
            </li>
          </ol>
        </section>
        <section anchor="sect-3.2.2" numbered="true" toc="default">
          <name>T1: Signaling</name>
          <t>
   The Edge Client MUST transition to the REPORTED state after
   generating valid evidence.  The client sends a ThreatSignal message
   to the network.  To prevent front-running, the client MUST use a
   Commit-Reveal scheme:</t>
          <ol spacing="normal" type="1"><li>
              <t>Commit: Send Hash(Evidence + Salt).</t>
            </li>
            <li>
              <t>Reveal: Send Evidence + Salt after a random delay.</t>
            </li>
          </ol>
        </section>
        <section anchor="sect-3.2.3" numbered="true" toc="default">
          <name>T2: Verification</name>
          <t>
   The state transitions to VERIFIED when the network (via Smart
   Contract or Oracle) validates the evidence.  A threat is considered
   verified if: Sum(Reputation(Reporters)) &gt; Threshold.</t>
        </section>
        <section anchor="sect-3.2.4" numbered="true" toc="default">
          <name>T3: Global Enforcement</name>
          <t>
   Upon entering the GLOBAL_ENFORCE state, the threat signature is
   added to the Global Blocklist.  All participating clients MUST
   synchronize this list and enforce blocking rules via their local
   kernel datapath (e.g., eBPF).</t>
        </section>
      </section>
    </section>
    <section anchor="sect-4" numbered="true" toc="default">
      <name>Data Format</name>
      <section anchor="sect-4.1" numbered="true" toc="default">
        <name>Threat Signal</name>
        <t>
   The ThreatSignal message is used to report a detected threat.  It is
   serialized using JSON.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+-----------+-----------+-----------------------------------------+
| Field     | Type      | Description                             |
+-----------+-----------+-----------------------------------------+
| version   | uint8     | Protocol version (e.g., 1)              |
| type      | uint8     | Threat type (0=DDoS, 1=Scan, 2=Malware) |
| source_ip | bytes     | IP address (4 or 16 bytes IPv4/IPv6)    |
| target_ip | bytes     | Victim IP (Optional)                    |
| timestamp | uint64    | Unix timestamp of detection (ms)        |
| evidence  | bytes     | Cryptographic proof or log snippet      |
| signature | bytes     | Digital signature of reporting client   |
+-----------+-----------+-----------------------------------------+
]]></artwork>
      </section>
      <section anchor="sect-4.2" numbered="true" toc="default">
        <name>Evidence Package</name>
        <table align="center">
          <thead>
            <tr>
              <th align="left"> Field</th>
              <th align="left"> Type</th>
              <th align="left"> Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">packet_dump</td>
              <td align="left">bytes</td>
              <td align="left">Sample of malicious packets (pcap)</td>
            </tr>
            <tr>
              <td align="left">flow_stats</td>
              <td align="left">struct</td>
              <td align="left">Flow statistics (PPS, BPS, duration)</td>
            </tr>
            <tr>
              <td align="left">heuristics</td>
              <td align="left">string</td>
              <td align="left">ID of the heuristic rule triggered</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="sect-5" numbered="true" toc="default">
      <name>Security Considerations</name>
      <section anchor="sect-5.1" numbered="true" toc="default">
        <name>Sybil Attack Defense</name>
        <t>
   To prevent Sybil attacks where an adversary creates multiple
   identities to flood the network with false reports, DTSP utilizes a
   Reputation System.</t>
        <ul spacing="normal">
          <li>
            <t>Each client MUST stake tokens to participate in reporting.</t>
          </li>
          <li>
            <t>The weight of a report is proportional to the client's
      ReputationScore.</t>
          </li>
          <li>
            <t>ReputationScore increases with valid reports and decreases with
      false positives.</t>
          </li>
        </ul>
      </section>
      <section anchor="sect-5.2" numbered="true" toc="default">
        <name>Commit-Reveal Mechanism</name>
        <t>
   To prevent "free-riding" (copying others' reports) or front-running:</t>
        <ol spacing="normal" type="1"><li>
            <t>Clients MUST NOT broadcast raw evidence immediately.</t>
          </li>
          <li>
            <t>Clients MUST broadcast Commit = Hash(Evidence + Salt).</t>
          </li>
          <li>
            <t>After T_reveal blocks, clients MUST broadcast Reveal = (Evidence,
       Salt).</t>
          </li>
          <li>
            <t>The network verifies Hash(Reveal) == Commit.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="sect-6" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>
   This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Informative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="OraSRS" target="https://doi.org/10.31224/5985">
        <front>
          <title>OraSRS: A Compliant and Lightweight Decentralized Threat Intelligence Protocol</title>
          <author initials="Z." surname="Luo" fullname="Z. Luo">
	</author>
          <date year="2025"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>
