Skip to content
All work

Cyber-physical security · 2026

Live

The Sentinel Protocol

A cyber-physical detection layer that catches spoofed ship telemetry a normal firewall would wave through.

Go to the proof
A ship's true track and a spoofed track diverging over dark water under a satellite constellation
Visual studyTeam project · 2026
Project timeline
20 weeks
Team
2 students + 1 advisor
Attack vectors
8
Detection layers
6

Deployment

The Sentinel Protocol began as my Cal Poly senior project (separate from the Mesosphere capstone), built over a 20-week window from September 2025 to June 2026 with one teammate and a faculty advisor. In September 2026 I rebuilt it alone as version 4: a deployed platform at sentinel-protocol-eight.vercel.app with a vessel dynamics model, an adversary with eight attack vectors, a six-layer detector shared between the browser console and a verification API, simulated TPM attestation, and a run archive that reports the two success metrics our proposal named: time-to-detect and false-positive rate. Everything on it is simulated and says so on screen.

Problem

Firewalls check whether a packet is well formed. They do not check whether it is physically true. An attacker can spoof a ship’s GPS feed or its engine bus and the forged data will often pass every format check, because it is mathematically valid even when it is physically impossible. A vessel cannot report GPS movement while its vibration and engine telemetry say it is standing still. Most security layers never look for that contradiction.

Build

We built a containerized, edge-native security agent on Python, Docker, and K3s, with MQTT for messaging and TPM-based hardware attestation. The architecture is a two-layer “GOD Protocol.” A Physics Layer fuses GPS, IMU, and engine data with Isolation Forest and autoencoder models to catch sensor readings that contradict each other. A Trust Layer uses TPM attestation so the detector can prove its own integrity before its verdicts are trusted. We built a “Golden Data” physics simulator first, so detection metrics were measurable from day one, then red-teamed the system with our own adversarial signal-injection scripts.

My part in the capstone was the verification and validation harness: the scenario-based test suite that benchmarked how the detection layer held up against our red-team attacks, plus a single-file browser demo of the core idea.

Version 4 is the platform that demo was standing in for. A destroyer with real inertia, drag and turn limits transits a strait while a fast attack craft shadows it and radiates attacks into its GNSS, AIS, compass, engine bus and telemetry link. The detector fuses the sensors an attacker cannot reach, the IMU and hull vibration, into a dead-reckoned physics truth and holds every RF-borne claim to it through six layers: signature, sequence, time window, kinematic residual, cross-modal consistency, and an anomaly model learned on the run itself. Before it judges anything, the agent’s own components are measured into PCRs and quoted against a golden manifest, so a tampered detector refuses to run. The 3D bridge shows the thesis directly: a red hologram of the ship is drawn where GNSS claims it is, and you watch it pull away from the real hull as the spoof takes hold.

Proof

  • Sentinel Protocol landing page: the bridge can be lied to, the hull cannot, over a live simulated strait.
  • Integrity console mid-run: 3D bridge view, six-layer verification pipeline, trust score and red-team panel, all simulated data.
  • Integrity console at the start of the strait scenario before the coordinated spoof fires.
Live
This is the real platform running in the page, not a recording. Press Start: the destroyer transits the strait at 20 Hz physics in a Web Worker, the fast attack craft fires the coordinated spoof at T+45 s, and the six-layer pipeline on the right catches it while the red hologram pulls away from the hull. Switch scenarios and fire attacks from the red-team panel. Open full screen ↗

What is new in version 4, all of it live above: a vessel with real inertia, drag and turn limits; a hostile fast attack craft with eight attack vectors you can fire by hand; the six-layer pipeline with per-layer pass, warn and reject states; a fused trust score that decays fast and recovers slowly; simulated TPM attestation you can tamper with to watch the agent refuse to run; four scripted scenarios plus free play; chase, orbit, overhead, hostile, tactical and chart views; a Claude-backed analyst with a deterministic fallback; a run archive that reports time-to-detect and false-positive rate with JSON export; and a verification API that returns the same verdict for signed frames from any node. In the strait scenario the coordinated spoof is caught about three seconds after onset by the kinematic layer, a GNSS jump and a replay are rejected on the frame they arrive, and the nominal run produces zero false positives. The ship models were generated by a headless Blender script and every screen carries the simulated-data banner.

What I would do next

Ingest real telemetry over MQTT from edge hardware instead of the in-browser simulator, replace the simulated TPM with a hardware quote, pretrain the anomaly model on the golden dataset instead of learning it per run, and back the run archive with a database so reports outlive the browser.