Algorytmy asymetryczne

Transkrypt

Algorytmy asymetryczne
Algorytmy asymetryczne
●
●
●
Klucze występują w parach – jeden do
szyfrowania, drugi do deszyfrowania (niekiedy
klucze mogą pracować zamiennie )
Opublikowanie jednego z kluczy nie zdradza
drugiego, nawet gdy można w tym celu
wykonać dość złożone obliczenia
Zwykle jeden klucz z pary jest powszechnie
dostępny, gdy drugi musi być przechowywany
w tajemnicy (klucz publiczy i klucz prywatny)
Krótkie przypomnienie
●
●
Problem NP :(niedeterministycznie wielomianowy, ang.
nondeterministic polynomial) to problem decyzyjny, dla którego
rozwiązanie można zweryfikować w czasie wielomianowym.
Równoważna definicja mówi, że problem jest w klasie NP, jeśli może
być rozwiązany w wielomianowym czasie na niedeterministycznej
maszynie Turinga.
Problem NP-zupełny (NPC) czyli problem zupełny w klasie NP ze
względu na redukcje wielomianowe, to problem, który należy do klasy
NP oraz dowolny problem należący do NP może być do niego
zredukowany w czasie wielomianowym. Czasami zamiast redukcji w
czasie wielomianowym używa się redukcji w pamięci logarytmicznej.
Taka definicja problemów NP-zupełnych implikuje fakt, że jeśli tylko
potrafimy rozwiązać jakikolwiek problem NP-zupełny w czasie
wielomianowym, to potrafimy rozwiązać w czasie wielomianowym
wszystkie problemy NP. Problemy NP-zupełne można więc traktować
jako najtrudniejsze problemy klasy NP (z punktu widzenia
wielomianowej rozwiązywalności).
Teoria złożoności obliczeniowej
●
Problem kryptoanalizy: Dane są kryptogram G, klucz
publiczny K służący do szyfrowania, szukamy pasującego
klucza L do deszyfrowania taki, że
●
E(K(D(L,G)) = G
●
Tw. 1: Problem kryptoanalizy jest zagadnieniem z klasy NP
●
Dowód: Następujący algorytm z klasy NP rozwiązuje
problem kryptoanalizy:
●
Zgadnij niedeterministycznie klucz do deszyfrowania
●
Deszyfruj kryptogram za pomocą zgadniętego klucza
●
●
Sprawdź czy otrzymany tekst szyfruje się z powrotem
do podanego na wstępie kryptogramu
Zatem: złamanie szyfrów utworzonych przy pomocy
algorytmów asymetrycznych nie może być trudniejsze niż
rozwiązanie problemu NP-zupełnego
Wnioski
●
●
●
Jest to poważne ostrzeżenie przed używaniem
algorytmu asymetrycznego
Nigdy nie osiągnie się takiego poziomu
bezpieczeństwa jak np. dla one-time-pad
Można odnieść wrażenie, że algorytmu
asymetryczne są słabe ale:
Wnioski
●
●
●
●
Teoria złożoności obliczeniowej operuje asymptotyczną
złożonością problemów: dla danego problemu M
poszukuje się takiej funkcji f, że dla prawie wszystkich n
istnieją dane x o długości n, dla których obliczenie M(x)
kosztuje f(n)
Koszt może być mierzony w rozmiarach pamięci albo
czasie obliczeń.
Teoria złożoności obliczeniowej posługuje się wyrażeniami
typu O(...). Wyznacza to złożoność problemu z
dokładnością do stałego czynnika
Dla kryptografii ważna jest złożoność problemu w średnim
przypadku (tzn. dla ustalonej długości n badamy, jaka jest
przeciętna złożoność). Istotne jest również jak złożoność
odbiega od średniej. Teoria złożoności obliczeniowej bada
złożoność w najgorszym przypadku.
Wnioski
●
●
●
Mimo powyższych zastrzeżeń, możliwe jest
wykorzystanie rezultatów teorii złożoności
obliczeniowej jako wskazówki, wśród których
problemów należy szukać podstaw dla
konstrukcji asymetrycznych algorytmów
szyfrujących.
Rozważa się zagadnienie NP-zupełne jako
najbardziej złożone w klasie NP.
Sztandarowym podejściem są szyfry
plecakowe, które jednak nie są praktycznie
używane.
Szyfry plecakowe
●
●
●
Problem plecakowy : dane są liczby naturalne
(a1..an), k . Szuka się takich liczb (i1..in) ze
zbioru {0,1} że
∑ i j⋅aj=k
Problem plecakowy jest NP-zupełny
Istnieje wiele metod szyfrowania opartych o
algorytmy plecakowe. Większość z nich została
złamana
Przykład
●
●
●
●
Prosty algorytm plecakowy
Złamany metodą Shamira pozwalającą na odnalezienie
tekstu jawnego bez znajomości tajnego klucza
deszyfrującego
Szyfrowanie:
∑
i j⋅aj
Ciąg bitów (i1..in) kodowany jest przez liczbę
pojawiają się jednak następujące problemy:
●
●
Pojedynczy kryptogram musi odpowiadać jednemu tekstowi
jawnemu
Złamanie takich kodów jest trudne ze względu na NPzupełność algorytmu plecakowego, ale nie znamy żadnej
metody żeby za pomocą klucza taki kryptogrma deszyfrować
Dodatkowe ograniczenia
Wektory superrosnące to takie (a1..an) dla których
∑ j<i a j <ai
Dla każdego i<n
Dla każdego wektora superrosnącego
1. Każdemu kryptogramowi odpowiada dokładnie jeden tekst jawny
2. deszyfrowanie może być dokonane w czasie proporcjonalnym do długości
wektora superrosnącego
Problem Dzięki wektorom superrosnącym kryptogramy odpowiadają jednoznacznie
tekstom jawnym. Każdy kto zna taki wektor może szyfrować i deszyfrować – nie
będzie to zatem algorytm asymetryczny
Utajnianie wektora superrosnącego – stosujemy inny wektor szyfrujący:
M >∑i⩽n a i
W < M takie, że W > 1 oraz największy wspólny dzielnik (W,M) = 1 (W nie może być
małe np. W > M/2)
Niech ai' = ai*W mod M
Tu nie ma żadnego powodu żeby ciąg (a1'..an') buł superrosnący. Ciąg ten permutuje
się i podaje jako klucz publiczny. Kluczem prywatnym jest wektor (a1..an), liczby M
oraz W a ponadto użyta permutacja.
Szyfrowanie
Dla uproszczenia zakadamy permutację (a1'..an') do takiej samej postaci (brak permutacji)
Szyfrowanie i1..in odbywa się standardowo za pomocą ciągu będącego kluczem jawnym :
Kryptogram jest równy liczbie :
n
∑ j=1 i j⋅a j '
Deszyfrowanie jest możliwe dzięki konwersji kryptogramu:
Niech y=i1*a1'+...+in*an' będzie rozważanym kryptogramem, dla którego szukamy i1..in
Wykonujemy następujące działania:
1. Ponieważ W i M są względnie pierwsze, więc za pomocą algorytmu Euklidesa można
wyznaczyć liczbę W^-1 mod M
2. Obliczamy W^-1*y mod M. Liczba ta jest równa W^-1(i1a1'+...+in*an') =
W^-1(i1*a1*W + ..+in*an*W) = i1*a1 + ...+ in*an modM
3. Dla kryptogramu W^-1 *y i wektora superrosnącego (a1..an) znajdujemy tekst jawny
i1..in. Można tego dokonać w czasie proporcjonalnym do n.
Algorytm nie może być stosowany w praktyce – zostala znaleziona szybka metoda
deszyfrowania bez znajomości tajnego klucza (co prawda tylko dla specjalnych wektorów
(a1'..an') uzyskanych z wektorów superrosnących. Dla dowolnych wektorów dalej nie jest
znana żadna efektywna metoda
Istnieje algorytm Chora-Rivesta, który jak dotąd nie został złamany
●
●
●
●
●
●
We wszystkich kryptosystemach uzyskanie klucza prywatnego na podstawie publicznego musi być
obliczeniowo trudne.
W RSA zależność między kluczem publicznym i prywatnym jest symetryczna – uzyskanie klucza publicznego
na podstawie prywatnego jest równie trudne jak uzyskanie prywatnego na podstawie publicznego. Składowe
kluczy i obliczane są przy użyciu dwóch dużych i zbliżonych długością liczb pierwszych ( i ) generowanych
w sposób możliwie przypadkowy. i otrzymuje się na podstawie równania (jest losowane, obliczane lub
odwrotnie):
Iloczyn i jest częścią klucza oznaczaną przez .
Klucz publiczny i prywatny tworzą odpowiednio pary i . Liczby i , poza procesem generowania kluczy nie są
potrzebne i zwykle są kasowane, jednakże istnieje wariant algorytmu w którym wchodzą one w skład klucza
prywatnego (są wykorzystywane w celu zwiększenia prędkości działania kryptosystemu).
W systemie ElGamal wybierana jest liczba pierwsza , generator , następnie losowana jest liczba . Kluczem
prywatnym jest , kluczem publicznym zaś , w grupie multiplikatywnej liczb całkowitych modulo p. Klucz
publiczny może być obliczony na podstawie prywatnego, co zresztą ma miejsce podczas generacji kluczy.
Bardzo podobnie wygląda sytuacja w innych systemach opartych o logarytm dyskretny, takich jak kryptografia
krzywych eliptycznych. W tych metodach grupę Zp zastępuje się inną grupą, np. utworzoną z punktów
leżących na krzywej eliptycznej.

Podobne dokumenty