Verification and Attack Synthesis for Network Protocols
Max von Hippel
TL;DR
This dissertation presents a comprehensive, formal treatment of network protocol correctness, performance, and security using a trio of formal methods: theorem proving (Ivy, ACL2s/ACL2(r)), model checking (SPIN), and automated program/attack synthesis (Korg). It introduces formal models for key RTT/RTO components (Karn's Algorithm and RFC 6298), Go-Back-N with a realistic token-bucket network, and correctness proofs for TCP, DCCP, and SCTP handshakes, including attacker synthesis that automatically uncovers vulnerabilities and patches (e.g., SCTP CVE-2021-3772 and related RFC ambiguities). The work demonstrates both the feasibility and utility of combining multiple FM techniques to verify core internet protocols under normal and adversarial conditions, providing open-source artifacts to reproduce results and guiding RFC refinement. Collectively, the results yield precise guarantees about protocol behavior, inform practical patching and hardening efforts, and illustrate a replicable methodology for formal analysis of protocol designs and security properties with real-world impact.
Abstract
Network protocols are programs with inputs and outputs that follow predefined communication patterns to synchronize and exchange information. There are many protocols and each serves a different purpose, e.g., routing, transport, secure communication, etc. The functional and performance requirements for a protocol can be expressed using a formal specification, such as, a set of logical predicates over its traces. A protocol could be prevented from achieving its requirements due to a bug in its design or implementation, a component failure (e.g., a crash), or an attack. This dissertation shows that formal methods can feasibly characterize the functionality and performance of network protocols under normal conditions as well as when subjected to attacks.
