CybersecuritySoftware
DIMY Contact Tracing Protocol Simulator
Implemented Python protocol-node behavior and collaborated on multi-node integration, parameter validation, and a six-filter retention fix.

Summary
Project context
A course project that translates privacy-preserving protocol concepts into an inspectable network simulator.
Problem / goal
The project needed to demonstrate how ephemeral identifiers, secret sharing, and Bloom filters interact while making protocol behavior and privacy assumptions observable.
My role
Protocol Security Developer on a course project, contributing mainly to frontend protocol logic, UDP communication, Shamir reconstruction, and Bloom-filter lifecycle.
My contributions
- Implemented rotating ephemeral identifiers, UDP broadcast behavior, TCP request-response flows, and Bloom-filter encounter storage.
- Implemented Shamir share reconstruction and coordinated threaded background loops with locks for protocol state.
- Implemented interactive protocol-node workflows and collaborated on multi-node integration checks.
Technical approach
- Modelled temporary identifiers, Shamir Secret Sharing, Bloom-filter encounter storage, UDP broadcasts, and TCP request-response communication.
- Used threading, locks, and background loops to coordinate node behavior, upload and query operations, and interactive commands.
- Integrated node behavior with teammate-owned backend and attacker components for protocol checks.
Key features
- Frontend nodes broadcasting and receiving temporary identifiers.
- Backend TCP upload and query workflows.
- Bloom-filter encounter-data lifecycle.
- Passive attacker model for inspecting protocol assumptions.
Impact / results
- Corrected Bloom-filter retention to enforce a six-filter limit, including the current filter.
- Made networking, concurrency, and privacy behavior inspectable through interactive commands and structured JSON messages.
What I learned
- Concurrency and protocol state must be designed together when behavior depends on timing and background work.
- An attacker model makes privacy assumptions easier to test and communicate.