Diffie-Hellman Key Exchange
Alice and Bob agree on a shared secret over a public wire that Eve can read.
Public: large prime p, generator g
sequenceDiagram
autonumber
participant A as Alice
participant E as Network / Eve
participant B as Bob
Note over A: Generates secret a
(kept secret) Note over B: Generates secret b
(kept secret) A->>B: Sends A = g^a mod p Note over E: Eve sees A on the wire B->>A: Sends B = g^b mod p Note over E: Eve sees B on the wire Note over A: Computes s = B^a mod p Note over B: Computes s = A^b mod p Note over A,B: Shared secret s = g^(ab) mod p Note over E: Eve has p, g, A, B
but cannot find s
(discrete log problem) ?
(kept secret) Note over B: Generates secret b
(kept secret) A->>B: Sends A = g^a mod p Note over E: Eve sees A on the wire B->>A: Sends B = g^b mod p Note over E: Eve sees B on the wire Note over A: Computes s = B^a mod p Note over B: Computes s = A^b mod p Note over A,B: Shared secret s = g^(ab) mod p Note over E: Eve has p, g, A, B
but cannot find s
(discrete log problem) ?