Neka je n = p · q,
gdje su p i q prosti brojevi. Neka je
P =
C =
Zn, te
K = { (n, p, q, d, e) : n = pq, p, q prosti, de ≡ 1 (mod φ(n)) }. Za K = (n, p, q, d, e) ∈ K definiramoeK(x) = xe mod n i dK(y) = yd mod n, x, y ∈ Zn. Vrijednosti n i e su javne, a vrijednosti p, q i d su tajne. |
Ovdje je φ(n)
Eulerova funkcija, tj. broj brojeva u nizu 1, 2, ... ,
n koji su relativno prosti s n. U našem
konkretnom slučaju
je
Uvjerimo se da su funkcije eK i dK jedna drugoj inverzne.
Imamo: dK(eK(x)) ≡ xde (mod n). Iz de ≡ 1 (mod φ(n)) slijedi da postoji prirodan broj t takav da je de = t φ(n) + 1. Sada je
xde = xt φ(n)+1 = [xφ(n)]t . x ≡ x (mod n)
ako je (n, x) = 1 (prema Eulerovom teoremu).Primjer 3.1: Uzmimo p = 3 i q = 11. Tada je n = 33 i φ(n) = 20. Eksponent e mora biti relativno prost s 20, pa recimo da je e = 7. Tada je d = 3. Sada je (n, e) = (33, 7) naš javni ključ. Pretpostavimo da nam netko želi poslati poruku x = 17. To znači da treba izračunati eK(x) = 177 mod 33:
177 = 17 . 172 . 174 ≡ 17 . 25 . (-2) ≡ -25 ≡ 8 (mod 33).
Dakle, šifrat je y = eK(x) = 8. Kad primimo ovaj šifrat, dešifriramo ga pomoću tajnog ključa d:x = dK(y) = 83 = 8 . 82 ≡ 8 . (-2) ≡ 17 (mod 33).
Dakle, x = 17.
Sigurnost RSA leži u pretpostavci da je funkcija
eK(x) = xe
mod n jednosmjerna. Dodatni podatak (trapdoor) koji
omogućava dešifriranje je poznavanje faktorizacije n =
pq, jer je tada lako izračunati
φ(n) =
φ(pq) =
(p - 1)(q - 1),
te dobiti eksponent d iz de
≡ 1
(mod φ(n)),
pomoću Euklidovog algoritma.
Opišimo sada postupak kojim korisnik izabire parametre u RSA kriptosustavu malo detaljnije.
Za efikasnost RSA kriptosustava, važna je činjenica da se
modularno potenciranje može izvesti vrlo efikasno.
Podsjetimo se kako se efikasno računa
e = e0 + 2 . e1 + ... + 2s -1 . es -1,
a potom primijenimo sljedeći algoritam:
y = 1 za i = s -1, ... , 1, 0 y = y2 mod n ako je ei = 1, onda y = y · x mod n |
Očito je ukupan broj množenja ≤ 2s, pa je ukupan broj operacija O(log e · log2 n). To znači da je ovaj algoritam polinomijalan.
Općenito, za algoritam koji kao ulazne podatke ima prirodne brojeve
x1, ... , xm s redom
k1, ... , km bitova
kažemo da je polinomijalan ako mu je broj operacija
Web stranica kolegija Kriptografija | Andrej Dujella - osobna stranica |