Abstract
The Adaptive Surface Mutation Protocol (ASMP/1.0) transforms the Polymorphic Mutation Engine from a node-level library into a networked security system. This document is the authoritative protocol specification defining all five message types with complete wire formats, security properties, and formal verification results.
ASMP/1.0 is covered by Indian patent application published · IN202641070690 · 19/06/2026. This specification is a public technical disclosure published post-filing.
1. Design Goals
- Authenticated mutation coordination: All inter-node synchronisation is authenticated. Unauthenticated messages are rejected at the protocol layer.
- Peer authentication without transmitting the shared secret: Peers authenticate without revealing internal surface state to eavesdroppers.
- Cascade mutation: A single threat detection triggers simultaneous surface rotation across all authenticated peers.
- Node-granted management actions: A protected management action runs only with a token issued by the node itself (MSG-005). Binding that token to a hardware TEE is planned, not shipped.
- Implementation independence: The protocol is wire-level specified. A Go, Python, or FPGA implementation is fully interoperable with the Rust reference.
2. Notation
u8/u16/u64: unsigned integers, big-endian. [u8;N]: fixed byte array. SHA3-256(x): SHA3-256 (Keccak) hash. HMAC(key,msg): HMAC-SHA3-256. ||: byte concatenation. TEE_QUOTE(data): platform-specific TEE attestation quote.
3. MSG-001 — Mutation Frame
The fundamental audit unit. Every mutation produces exactly one Mutation Frame. Frames form a SHA3-256 chain constituting the tamper-evident estate-wide mutation history.
ASMP-MSG-001: Mutation Frame
message_type: u8 = 0x01
version: u8 = 0x01
profile_id: u8 // 0x01=MantisNet … 0x0A=LeviathanGrid … 0xFF=KaliCoreTarget
cycle_seq: u64 // monotonically increasing, per-profile
entropy_hash: [u8;32] // SHA3-256(entropy_bundle) — not the entropy itself
surface_fp: [u8;32] // SHA3-256(new observable surface state)
prev_fp: [u8;32] // SHA3-256(previous surface) — chain link
organ_state: u8 // 0=Sachs 1=Hunter 2=MainOrgan 3=Recovering
node_id: [u8;16] // UUID v4 of originating node
timestamp_ns: u64
hmac: [u8;32] // HMAC-SHA3-256(key, all preceding fields)Chain property: frame[N].prev_fp == SHA3(frame[N-1].surface_fp) — inserting or removing a frame changes all subsequent HMACs, which are HMAC-key-protected.
4. MSG-002 — Peer Authentication Handshake
Step 1 (Initiator → Responder):
HELLO { peer_id: [u8;16], claimed_epoch: u64, hmac: [u8;32] }
Step 2 (Responder → Initiator):
CHALLENGE { nonce: [u8;32], surface_fp_at_epoch: [u8;32], hmac: [u8;32] }
Step 3 (Initiator → Responder):
RESPONSE { proof: SHA3-256(nonce || ally_channel_fp_at_epoch), hmac: [u8;32] }
Step 4 (Responder → Initiator):
VERDICT { result: u8 (0x00=REJECT | 0x01=ACCEPT), hmac: [u8;32] }ProVerif result for the current handshake model, under the Dolev-Yao adversary: an adversary who controls the network cannot learn ally_channel_fp, and each completed run authenticates both peers, once. This is a secrecy and authentication result, not a zero-knowledge proof. See WP-07.
5. MSG-003 — Anomaly Signal
ASMP-MSG-003: Anomaly Signal
source_node_id: [u8;16]
anomaly_score: u32 // Fixed-point [0,1] × 1_000_000
signal_class: u8 // 0x01=Network 0x02=AuthFail 0x03=Physical 0x04=SIEM
target_node_id: [u8;16] // All-zeros = estate-wide
timestamp_ns: u64
hmac: [u8;32]Only sources with the ASMP HMAC key can inject valid anomaly signals. Prevents adversarial signal injection (flooding with false anomalies to desensitise the estate).
6. MSG-004 — Defensive Leap
ASMP-MSG-004: Defensive Leap
leap_token: [u8;32] // SHA3-256(origin_fp || timestamp_ns || nonce)
origin_node_id: [u8;16]
threat_level: u8 // 0x01=Elevated … 0x04=Critical
target_scope: u8 // 0xFF=Estate-wide
epoch: u64
timestamp_ns: u64
hmac: [u8;32]ProVerif result: with the relay checking each node's envelope signature, every Defensive Leap a node accepts was issued by the node it names. Without that check, a compromised group member could forge another member's leap — which is why the per-node envelope exists. That each leap is accepted only once is shown by tests and a lab gate, not by the model.
7. MSG-005 — Node-Granted Protected Actions
Phase 1 — ATTEST_REQUEST (PME Node → Management Tool):
{ tee_quote: bytes, pme_version: [u8;8], mutation_epoch: u64,
nonce: [u8;32], hmac: [u8;32] }
Phase 2 — ATTEST_RESPONSE (Management Tool → PME Node):
{ trusted: u8, trust_token: SHA3-256(tee_quote||nonce||epoch),
expires_ns: u64, // = now_ns + 1 mutation cycle duration (10–143µs)
hmac: [u8;32] }ProVerif result: when the management tool carries out an action only after verifying the node's answer, every executed action was granted by the node. The token is valid for one mutation interval (covered by tests; ProVerif has no clock). In the shipped product MSG-005 gates one protected action — an operator's "rotate now" — and does not gate API authentication, which today is API key + RBAC. On hosts without a TEE the quote in the request is a software mock, so the token does not yet prove anything about hardware. Hardware-backed key custody (TPM 2.0) is shipped for the audit-signing chain.
8. ProVerif Analysis Summary
| Message | Variant | Property | Result |
|---|---|---|---|
| MSG-002 | handshake | ally_channel_fp stays secret | TRUE |
| MSG-002 | handshake | both peers authenticated, each run once | TRUE |
| MSG-004 | relay checks the per-node envelope | every accepted leap was issued by the node it names | TRUE |
| MSG-004 | relay does not check the envelope, compromised member | the same | FALSE — the reason the envelope exists |
| MSG-004 | receiver with replay guard | each leap accepted at most once | not provable in ProVerif; shown by tests and a lab gate |
| MSG-005 | action carried out only after verifying the node's answer | every executed action was granted by the node | TRUE |
Not proved: a zero-knowledge property (none was stated) and forward secrecy (the protocol does not provide it). See WP-07.
9. Interoperability Requirements
- Implement all five message types with the wire formats specified above
- Use SHA3-256 (Keccak) for all hash operations and HMAC-SHA3-256 for all MACs
- Reject any message whose HMAC fails verification
- Maintain a monotonically increasing cycle_seq per profile
- Enforce MSG-005 trust_token TTL: reject tokens whose expires_ns < current timestamp
ASMP/1.0 is intended as an RFC-candidate document. The wire protocol described in this paper is fully implemented and live end-to-end in the shipped product — key provisioning, CP relay with envelope verification and rate limiting, the Tier-A trigger, the agent-side MSG-002 handshake, transport-mode reporting, and measured e-gate latency are all wired and working, not pending. Two things genuinely remain before a Go and FPGA reference implementation are worth building: (1) formal ProVerif modelling of the newer constructs introduced alongside the CP-relay topology — the Relay Envelope, group-secret provisioning, and the rate-limit/circuit-breaker layer have no formal model yet, gated on engaging an independent cryptographer; and (2) a second adversarial sweep of that same code, which has been engineering-reviewed but not yet re-run through the adversarial process every earlier wave went through. Both are named, tracked gaps, not signs the implementation itself is unfinished.
Read the full formatted version:
← All Papers