CybersecuritySoftware
DIMY Contact Tracing Protocol Simulator
Developed core frontend protocol behavior for a Python privacy-preserving contact-tracing simulator with rotating identifiers, UDP broadcasts, TCP workflows, Bloom-filter encounter storage, and a passive attacker model.

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.
What I personally contributed
- 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.
- Contributed interactive node workflows and attacker-observation behavior for examining privacy assumptions.
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.
- Modelled a passive attacker that collects protocol broadcasts for privacy analysis.
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
- Delivered a runnable simulator demonstrating core protocol workflows and attacker observation points.
- 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.