Unclassified // demonstration system // all data simulated
Sentinel Protocol
Physics-anchored integrity verification · maritime OT

The bridge
can be lied to.
The hull cannot.

Sentinel fuses the sensors an attacker cannot reach into a physics truth, holds every GNSS, AIS and compass claim to it, and runs on an agent whose own integrity is attested before it judges. Behind this text, a fast attack craft is spoofing a destroyer right now.

Live trust
GNSS vs hull
Hostile
silent
T+0 s · strait transit · coordinated spoof · 2× rate
The problem · implied trust

A bridge believes what its sensors say.
That is the vulnerability.

Modern ship navigation and engine control run on implied trust. If GNSS reports a position, the chart plots it. If the engine bus reports idle, the display shows idle. Firewalls check that a packet is well-formed; nothing checks that it is physically true.

In a contested electromagnetic environment an adversary does not need to jam. Spoofing is quieter and more dangerous: a mathematically valid signal that describes a ship that does not exist, walking the real one onto a shoal while every display stays calm.

Sentinel answers one question without asking the sensors: is this data real? It fuses the sensors an attacker cannot reach into a physics truth, holds every RF-borne claim to it, and runs on an agent whose own integrity has been measured before it is allowed to judge.

Threat model · trust boundary

The attacker can forge any signal. Not the physics.

The adversary can inject arbitrary NMEA, AIS and CAN traffic and can capture and replay the telemetry link. The adversary cannot make a 9,200-tonne hull accelerate without its accelerometers registering force, or turn without its gyro registering rate, or drive its shafts without the hull vibrating.

Trusted · inside the hull
  • Inertial measurement unit (surge, sway, yaw rate)
  • Hull vibration (∝ shaft RPM²)
  • TPM 2.0 root of trust on the edge node

Cannot be reached over RF or bus. Used to build the dead-reckoned physics truth.

Bus · injectable but bounded
  • Engine CAN bus shaft RPM

An attacker can write to it, but the value it claims must agree with what the hull is doing.

External · RF-borne, untrusted
  • GNSS position, speed, course
  • AIS contacts
  • Magnetic compass
  • Telemetry link (replay, forgery)

Every claim is held to the physics truth before the bridge sees it.

Verification pipeline

Six layers, one trust score

Every 100 ms a signed frame arrives. Each layer asks one question and can reject the frame outright; the soft layers also contribute evidence to a fused trust score that decays fast and recovers slowly.

  1. L1Signature
    Is this frame really from the node?

    HMAC-SHA256 over a canonical encoding of every frame, keyed per node. Forged frames die here.

  2. L2Sequence
    Have we seen this frame before?

    Monotonic sequence numbers plus a 512-entry nonce ring. Captured-and-replayed frames die here.

  3. L3Time window
    Is it fresh?

    Frame age against the receiver clock, ±2.5 s. Stale and future-dated frames die here.

  4. L4Kinematic residual
    Does the RF world match the world the hull feels?

    IMU and hull-vibration dead-reckoning held against GNSS position, speed and compass heading, with a covariance clock that sets a 3σ bound.

  5. L5Cross-modal
    Do the sensors agree with each other and with the hull's limits?

    RPM↔vibration, SOG↔RPM, fix-to-fix motion against the hull's maximum speed, AIS contacts against radar returns.

  6. L6Anomaly model
    Is the pattern statistically odd?

    A six-feature residual vector scored by Mahalanobis distance against a baseline learned in the run's first 30 s, EWMA-smoothed.

Red team

Eight attacks from a shadowing fast attack craft

The simulator's hostile platform carries an EW package. Each vector can be fired live from the console or scripted into a scenario. The last one is the point of the whole system.

  • GNSS meaconing drift
    GNSSL6

    Re-broadcast satellite signals with a growing delay so the fix walks off-track while speed and course still look sane. The anomaly model sees the steady innovation signature first; the residual bound confirms.

  • GNSS position jump
    GNSSL4

    Capture the receiver and relocate the fix by ~800 m in one epoch. Blows the dead-reckoning residual bound instantly.

  • AIS ghost contact
    AISL5

    Fabricate a vessel on a collision course to force a course change. Radar sees nothing there.

  • Compass heading spoof
    COMPASSL4

    Offset the magnetic heading feed by 25° so a steady course reads as a turn.

  • Engine bus RPM spoof
    CANL5

    Inject idle RPM on the engine CAN bus while the shafts are actually at cruise.

  • Replay of signed frames
    LINKL2

    Re-send previously captured, validly signed frames.

  • Signature forgery
    LINKL1

    Inject frames signed with a guessed key.

  • Coordinated multi-sensor spoof
    MULTIL4

    GNSS drift, compass offset and an AIS identity spoofed onto the attacker's own radar return, all tuned to agree. Only the hull's own physics disagrees.

Trusted computing

A judge nobody has verified is just another sensor

Before the agent is allowed to judge sensor data, its own components are measured: bootloader and kernel into PCR0, the container runtime into PCR7, the agent binary, detector thresholds and anomaly model into PCR8. A verifier requests a quote over a fresh nonce and compares against the golden manifest. If anything differs, the detector refuses to run and says so.

In this deployment the TPM is a software model and is labelled as such throughout. The measurement, extend and quote logic is the real sequence; a hardware TPM would sign the quote with its attestation key.

GET /api/attest
{
  "simulated": true,
  "golden": { "0": "…", "7": "…", "8": "…" },
  "quote": {
    "nonce": "f2a9…",
    "pcrs": { "0": "…", "7": "…", "8": "…" },
    "components": [
      { "name": "sentinel-agent", "pcr": 8, "digest": "…" },
      …
    ],
    "quoteSig": "hmac(AK, nonce || sha256(pcrs))"
  },
  "result": { "ok": true, "reasons": [] }
}

GET /api/attest?tamper=sentinel-agent
  → "PCR8 mismatch: measured [sentinel-agent, …]"
Integration

The same detector, as a service

The console runs the detector in a Web Worker. The identical TypeScript runs behind POST /api/verify, so an edge node, a bridge integrator or a test harness can submit signed frames and receive the six-layer verdict. Keys are per node; in deployment they are sealed to the node's TPM.

curl -X POST https://<host>/api/verify \
  -H 'content-type: application/json' \
  -d '{ "frame": { "seq": 1, "t": 1725500000000,
        "nodeId": "DDG-51/NAV-01", "nonce": "…",
        "trusted": { "imu": {…}, "vibration": 0.41 },
        "bus": { "rpm": 112 },
        "external": { "gnss": {…}, "compass": 40.2, "ais": [] },
        "radar": { "contacts": [] } },
        "sig": "<hex hmac-sha256>" }'

{ "verdict": { "accepted": true, "trust": 100,
    "layers": [ { "id": "L1", "status": "pass", … } … ],
    "residualM": 3, "boundM": 26, "drPos": {…} } }
Origin

From a capstone to a platform

Sentinel Protocol began as a Cal Poly Computer Engineering senior project by Rudra Khakhar and Arnav Samdyan, advised by Dr. Zachary Peterson, on trusted, physics-based integrity verification for operational technology. The proposal named two success metrics, time-to-detect and false-positive rate, and this platform reports both on every run.

Version 4 replaces the original browser demo with a vessel dynamics model, an adversary with eight vectors, a six-layer detector shared between the console and a verification API, simulated TPM attestation, and a run archive. Next steps are documented in the repository: real MQTT ingestion from edge hardware, a hardware TPM, and a pretrained anomaly model.

Dual-use note

Physics-consistency checks are published in the maritime cybersecurity literature. Nothing here helps an attacker beyond the well-known fact that consistent, slow spoofing is harder to detect than crude spoofing; the coordinated scenario exists to show that even a self-consistent spoof cannot be consistent with the hull.

Contact
rudrak2906@gmail.com