Kody i szyfry
5. Szyfry i kryptografia
5.5. Funkcja jednokierunkowa
Funkcja f : X Y , gdzie X, Y są dowolnymi niepustymi zbiorami, jest nazywana funkcją jednokierunkową (ang. one way function) jeśli:
- Dla każdego x X łatwo potrafimy obliczyć wartość f(x).
- Dla każdego y f ( X ) , znalezienie takiego x X , że y = f(x) jest praktycznie nierealizowalne (z uwagi na złożoność obliczeniową problemu).
Nie znamy żadnego dowodu na to, że jakaś funkcja jednokierunkowa w ogóle istnieje. Jesteśmy jednak przekonani, że funkcje jednokierunkowe w przyrodzie istnieją.
A oto trzy kandydatki na funkcje jednokierunkowe. Są to permutacje podzbioru liczb całkowitych Zp . Ogólnie rzecz biorąc jednak funkcja jednokierunkowa nie musi być różnowartościowa.
- Funkcja wykładnicza modulo p (ang. exponentation modulo p), gdzie p jest liczbą pierwszą. Niech p będzie liczbą pierwszą i niech będzie generatorem grupy multiplikatywnej Zp * . Funkcja wykładnicza modulo p f : Zp * Zp * jest zdefiniowana dla każdego x Zp * wzorem
f (x) x (mod p) ,
- lub wzorem f (x) x , jeśli mnożenie traktujemy jako mnożenie w Z p . Odwrócenie p Z funkcji f jest dokładnie problemem znalezienia wartości logarytmu dyskretnego w grupie multiplikatywnej Zp * (jeśli y f (x) , czyli y x , to x log y ). Nie są znane efektywne obliczeniowo algorytmy obliczania wartości logarytmu dyskretnego w grupie Zp * .
- Funkcja RSA (ang. RSA function). Niech p, q będą różnymi nieparzystymi liczbami pierwszymi i niech n p q . Niech ponadto NWD(e,( p 1)(q 1)) 1. Funkcja RSA zdefiniowana jest tak f : Zn Zn , f (x) xe (mod n) dla każdego x Zn .
- Funkcja Rabina. Niech n p q gdzie p i q są różnymi liczbami pierwszymi takimi, że p 3(mod 4) i q 3(mod 4) (n jest tzw. liczbą Bluma). Funkcja Rabina f zdefiniowana jest następująco
f : Qn x n f (x) x 2 (mod n) Q
gdzie Qn Zn jest tzw. zbiorem reszt kwadratowych modulo n. Można pokazać, że f jest permutacją zbioru Qn . Odwracanie funkcji f, czyli obliczanie pierwiastka kwadratowego w pierścieniu Zn jest dla dużych n praktycznie nierealizowalne, tzn. nie są znane żadne efektywne obliczeniowo algorytmy rozwiązujące ten problem, chyba, ze potrafimy rozłożyć liczbę n na czynniki pierwsze.