1. Private-Key Cryptography
2. Public-Key Cryptography
3. Public-Key Cryptography

4. Theory of Public Key
5. Classes of Public-Key Algorithms
6. Security of Public Key Schemes
7. Diffie-Hellman Public-Key Distribution Scheme
8. Diffie-Hellman Public-Key Distribution Scheme
9. Diffie-Hellman Setup
p (~200 digits)
a a primitive root mod p
xA < p
xB < p
yA = axA mod p yB = axB mod p
yA and yB respectively
10. Diffie-Hellman Key Exchange
KAB = axA.xB mod p
= yAxB mod p (which B can compute)
= yBxA mod p (which A can compute)
KAB may then be used as a session key
in a private-key cipher to secure communications between Alice and Bob
11. Diffie-Hellman Example
p=97 with primitive root a=5
xA=36 & computes public key
yA=536=50 mod 97
xB=58 & computes public key
yB=558=44 mod 97
K=4436=75 mod 97
K=5058=75 mod 97
xA=log550=36 mod 97
(hard),
and then doing Alice's key computation K=4436=75 mod 97
12. Diffie-Hellman in Practise
13. Multi-Precision Arithmetic
14. Faster Modulo Reduction
a0, ... , an-1 of base bb is the "most convenient" word size
n-1
A = SUM ai.bi
i=0
n-2
A = { SUM ai.bi + an-1.bn-1 (mod jm) } mod m
i=0
15. Chivers Algorithm
FOR i = n-1 to d do WHILE A[i] != 0 do j = A[i]; A[i] = 0; A = A + bi-d.R[j]; END WHILE END FOR
A[i] is the ith character of number AR[j] is the jth integer residue from the array Rn is the number of symbols in Ad is the number of symbols in the modulus
16. Summary
17. Exercises
prime p=37
prim root a=5
prime p=59
prim root a=6