No description
Find a file
2026-09-30 11:07:31 -06:00
.gitignore Hello students 2026-09-30 11:07:31 -06:00
client.py Hello students 2026-09-30 11:07:31 -06:00
dh.py Hello students 2026-09-30 11:07:31 -06:00
eavesdrop.py Hello students 2026-09-30 11:07:31 -06:00
experiments.py Hello students 2026-09-30 11:07:31 -06:00
mitm.py Hello students 2026-09-30 11:07:31 -06:00
params.py Hello students 2026-09-30 11:07:31 -06:00
PROTOCOL.md Hello students 2026-09-30 11:07:31 -06:00
README.md Hello students 2026-09-30 11:07:31 -06:00
selfcheck.py Hello students 2026-09-30 11:07:31 -06:00
wire.py Hello students 2026-09-30 11:07:31 -06:00

Diffie-Hellman: build it, break it, argue it

The instructions and questions are on the Canvas page. This file lists what is here and how to run it.

What is what

File Who writes it What it is
dh.py you, Step 1 the exchange: generate_private, public_from, shared_secret
eavesdrop.py you, Step 2 the two brute-force searches and recover_secret
mitm.py you, Step 3 Mallory's swap_public and relay_text
client.py you, Stage 2 solve_a and solve_b, against the class server
params.py given g = 5 and p = 23, the 2048-bit group from RFC 3526, and small primes for timing
wire.py given a pretend network inside one Python program, with Alice, Bob, and a toy cipher
selfcheck.py given PASS, FAIL (with what it expected), or SKIP for each of your functions
experiments.py given the exchange, the timing tables, and Mallory; writes results.json
PROTOCOL.md given every message the class server sends and expects

Build and run

Python 3, no packages.

python3 selfcheck.py
python3 experiments.py
python3 experiments.py exchange
python3 experiments.py timing --bits 16 20 24
python3 experiments.py mitm
python3 client.py OURTEAM
python3 client.py OURTEAM A

A SKIP means a function is not written yet. A FAIL says what it expected, so start reading there.