Logarytm dyskretny

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Logarytm dyskretny elementu b (przy podstawie a) w danej grupie skończonej jest to taka liczba całkowita c, że w grupie zachodzi równość (stosując notację multiplikatywną dla działania grupowego):

a^c = b \;.

Logarytm dyskretny nie zawsze istnieje, a jeśli istnieje nie jest jednoznaczny.
Np. w ciele skończonym \mathbb Z_{11} logarytmem przy podstawie 4 z elementu 9 jest liczba 3 (ale też 8). W tym ciele nie istnieje logarytm przy podstawie 4 z elementu 7.

Znalezienie logarytmu dyskretnego jest zaskakująco trudnym problemem. O ile potęgowanie wymaga O(\log c) operacji - liczymy a, a^2, a^4, a^8, \dots, po czym wymnażamy te z nich dla których bity c są równe 1, to jedyną prostą metodą rozwiązywania problemu logarytmu dyskretnego jest przeszukanie wszystkich możliwych c. Istnieją efektywniejsze metody, jednak żadna z ogólnych metod nie ma złożoności wielomianowej wobec ilości bitów wejścia (istnieją takie dla pewnych specyficznych klas liczb pierwszych, których należy więc w kryptografii unikać). Najszybszy algorytm (sito ciała liczbowego) obliczania logarytmu dyskretnego w GF(p) ma złożoność czasową:

e^{c\cdot\log^{\frac{1}{3}}_2(p) \cdot \log^{\frac{2}{3}}_2(\log_2(p))}

gdzie c jest pewną stałą. Jedną z metod obliczania logarytmu dyskretnego w GF(p) jest redukcja Pohliga-Hellmana.

Trudność znalezienia logarytmu dyskretnego jest podstawą istnienia wielu algorytmów kryptograficznych, takich jak ElGamal i protokół Diffiego-Hellmana czy kryptografia oparta na krzywych eliptycznych.

Zobacz też[edytuj | edytuj kod]