Fuzzy-hash anomaly detection for industrial networks
A rolling baseline of similarity hashes computed over clusters of industrial protocol traffic, scored against a sliding window to surface conversations that drift out of pattern.
Why it earns its keepPublished, peer-reviewed evidence that we understand why enterprise detection tooling does not transfer to plant-floor networks.
What it is notA primary indicator, not a verdict. It says something is off, not what, and belongs in front of a second-stage validator and a human.
- Published
- IEEE CARS 2024
- Hash
- TLSH, after three evaluated
- Unit
- Packet clusters, not packets
- Evaluated on
- CIC Modbus 2023, ICS_PCAPS
def score(cluster: list[Packet], window: Deque[str]) -> float | None: """Score a conversation against the rolling baseline, not a packet against a rule. Plant floors are periodic; the rule never fires.""" h = tlsh.hash(b"".join(p.payload for p in cluster)) if h is None: return None # under 50 bytes of entropy: no opinion offered return min(tlsh.diff(h, prior) for prior in window) / DIFF_CEILING