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.