RSA Encryption William Lu RSA Background Basic technique
RSA Encryption William Lu
RSA Background ¨ Basic technique first discovered in 1973 by Clifford Cocks of CESG (part of British GCHQ) ¨ Invented in 1977 by Ron Rivest, Adi Shamir and Len Adleman
RSA Uses ¨ Public key encryption ¨ Digital signatures
RSA Algorithm ¨ Generate two large random primes, p and q, of approximately the same size – e. g. for 1024 bit encryption, p and q should be about 512 bits each ¨ Compute n = pq and φ = (p-1)(q-1) ¨ Choose e where 1<e<φ such that gcd(e, φ) = 1 ¨ Compute d where 1<d<φ such that ed = 1 mod φ
RSA Algorithm ¨ Public key = (e, n) ¨ Private key = (d, n)
Generate Primes ¨ Get a pseudo random number ¨ Use Fermat’s Little Theorem to test for prime – For prime n and any a, an mod n = a – For composite n and any a, an mod n ≠ a – BUT – If an mod n = a, n could be a composite
Generate Primes ¨ Does Fermat’s Little Theorem guarantee primes? – NO! ¨ What is it for? – With enough rounds, n is probably prime – Much faster then testing with all primes < n
Generate Exponents e and d ¨ For public exponent, e, pick any prime – Common choices are 3, 17 and 65537 (216 + 1) ¨ For secret exponent, d, compute the modular inverse of e mod φ – Use Extended Euclidean Algorithm
Extended Euclidean Algorithm ¨ To find inverse of e mod n: – Find quotient and remainder of n/e at each step – Also carry an auxiliary number ui = ui-2 – ui-1 qi-2 mod n – Initialize u 0 = 0 and u 1 = 1 – For each step use the previous e as the current n and the previous remainder as the current e – Repeat until e = 0 and the auxiliary number is the inverse of e mod n
Extended Euclidean Algorithm Inverse of 5 mod 72 n e quotient remainder auxiliary 72 5 14 2 0 5 2 2 1 1 2 0 58 1 0 29
Encryption/Decryption ¨ To encrypt message m – Public key = (e, n) – c = me mod n ¨ To decrypt cipher c – Private key = (d, n) – m = cd mod n
Encryption/Decryption ¨ Public key = (5, 91) ¨ Private key = (29, 91) ¨ To encrypt message 17 – c = 175 mod 91 – c = 75 ¨ To decrypt cipher 75 – m = 7529 mod 91 – m = 17
Signature ¨ To sign message m – Private key = (d, n) – [m] = md mod n ¨ To verify signature – Public key = (e, n) – {m} = me mod n
References ¨ RSA Algorithm – DI Management Services ¨ Fermat’s Little Theorem – Mathworld ¨ Extended Euclidean Algorithm – Wolfgang Stöcher at Profactor Research – Bill Cherowitzo’s references at the University of Colorado at Denver • Ph. D (1983) in mathematics at Columbia University
- Slides: 14