Szyfry Asymetryczne
Szyfry asymetryczne wykorzystują dwa klucze: publiczny, który służy do zaszyfrowania wiadomości i prywatny - tajny, do odszyfrowania. Odbiorca wiadomości wysyła jawnie swój klucz publiczny, nadawca szyfruje nim wiadomość i wysyła. Do odszyfrowania służy klucz prywatny. Przechwycenie klucza publicznego nie pozwala na odszyfrowanie wiadomości. Nie można także w żaden sposób na jego podstawie odtworzyć klucza prywatnego.
Szyfry asymetryczne są bardzo bezpieczne ale bardzo wolne. Dlatego najczęściej stosuje się kombinację tych dwóch typów szyfrowania. Samą wiadomość szyfruje się szybkim szyfrem symetrycznym a klucz bezpiecznym szyfrem asymetrycznym. Odbiorca za pomocą klucza prywatnego odszyfrowuje klucz i za pomocą tego klucza całą wiadomość. Jest to metoda szybka i bezpieczna.
Przykładami szyfrów asymetrycznych są:
Puzle Merkle'a
Jest to jeden z pierwszych algorytmów
szyfrowania kluczem publicznym. Jest
wykorzystywany do ustalenia przez dwie
zainteresowane strony wspólnego sekretnego
klucza, który będzie wykorzystywany w dalszej
komunikacji. Zakłada się, że obie strony mogły
wcześniej nie mieć ze sobą żadnego kontaktu i
niczego między sobą nie ustalały.
Algorytm puzzli Merkle'a opisuje komunikację pomiędzy dwoma zainteresowanymi stronami, która umożliwia ustalenie wspólnego sekretnego klucza, w taki sposób, że nie jest możliwe jego podsłuchanie przez trzecią osobę. Klucz ten może być potem używany podczas dalszej komunikacji, chronionej przy użyciu szyfrowania symetrycznego.
Poniżej przedstawiono protokół wymiany informacji pomiędzy dwoma użytkownikami, nazwanymi zwyczajowo Alice i Bob.
1. Pierwsza ze stron (Alice) przygotowuje dużą liczbę wiadomości, które składają się z unikalnego losowego identyfikatora wiadomości oraz unikalnego klucza.
2. Następnie Alice szyfruje każdą z tych wiadomości za pomocą słabego szyfru , a potem wysyła wszystkie zaszyfrowane wiadomości do drugiej ze stron (czyli do Boba).
3. Bob wybiera losowo jedną z otrzymanych zaszyfrowanych wiadomości i łamie jej zabezpieczenia za pomocą ataku siłowego.
4. Bob informuje Alice, jaką wartość ma identyfikator w wybranej przez niego wiadomości
5. Obie strony dysponują teraz wspólnym kluczem, który znajdował się w wybranej przez Boba wiadomości. Będą go wykorzystywać podczas dalszej komunikacji.
Głównym założeniem algorytmu puzzli Merkle'a jest to, że początkowa duża liczba wiadomości szyfrowana jest za pomocą szyfru, na tyle prostego, że możliwego do złamania za pomocą ataku siłowego przez odbiorcę.
Sekretny unikalny klucz jest określany przez przesyłany tekstem otwartym identyfikator wiadomości. Ewentualny napastnik, który chce go odkryć i podsłuchuje całą komunikację, musiałby odszyfrować za pomocą ataków siłowych dużą część przesyłanych na początku algorytmu wiadomości. Liczyłby na to, że trafi na wiadomość losowo wybraną przez Boba i po jej odszyfrowaniu zdobędzie wiedzę o sekretnym kluczu. Wobec tego klucz, który szyfruje te wiadomości musi być na tyle długi, żeby odszyfrowanie dużej ich ilości było praktycznie niewykonalne.
RSA
Jest to obecnie jeden z najpopularniejszych algorytmów szyfowania z kluczem publiczych. Może być stosowany zarówno do szyfrowania wiadomości jak i do podpisów cyfrowych. Jego nazwa pochodzi od pierwszych liter nazwisk jego twórców, a mianowicie Rivest, Shamir, Adleman. Powstał w 1977r.
Algorytm RSA umożliwia utworzenie dwóch powiązanych kluczy: publicznego oraz prywatnego, a następnie wykorzystywanie ich w celu ochrony treści przekazywanych wiadomości. Klucz publiczny jest powszechnie znany i każdy może za jego pomocą zaszyfrować dowolną wiadomość. Natomiast jedynie posiadacz klucza prywatnego może odszyfrować otrzymane szyfrogramy.
Do zaszyfrowania wiadomości losowane są dwie duże liczby pierwsze “p” i “q” na przykład o długości 256 bitów, a następnie tworzy się iloczyn tych liczb – “n”, który jest liczbą znaną publicznie. Wiadomość zostaje zaszyfrowana za pomocą skomplikowanych operacji matematycznych wykonywanych na tych liczbach . W związku z tym, że jego działanie jest związane z matematycznym rozkładem dużych liczb na czynniki pierwsze, do jego złamania potrzebna jest ogromna moc obliczeniowa. Przy dostatecznie dużych liczbach może to trwać nawet setki lat. Ponadto w odróżnieniu od np. DES, długość klucza można zwiększyć jeśli okaże się to konieczne. Algorytm RSA znalazł zastosowanie we współczesnej telekomunikacji oraz Internecie.
Protokół Diffiego-Helmana
Został po raz pierwszy opublikowany przez amerykańskich kryptologów Whitfield'a Diffie'a i Martin'a Hellman'a w roku 1976. Wiadome jest jednak, że algorytm ten został odkryty parę lat wcześniej przez pracowników brytyjskiego wywiadu , ale pozostał utajniony.
Algorytm Diffiego-Hellmana jest obecnie bardzo często używany w wielu protokołach wymagających ustalania współdzielonego klucza. Jest uważany za nieco szybszy niż RSA.
Przedstawia on sposób komunikacji pomiędzy dwoma zainteresowanymi stronami, która umożliwia ustalenie współdzielonego sekretnego klucza. Następnie klucz ten może być używany podczas dalszej komunikacji, chronionej przy użyciu szyfrowania symetrycznego.
W punktach jest tu wyjaśniony dokładny przebieg :
-
Alicja i Bob uzgadniają liczbę pierwszą p=23 i podstawę g=5.
-
Alicja wybiera tajną liczbę całkowitą a=6, i wysyła Bobowi A = ga mod p
-
A = 56 mod 23
-
A = 15,625 mod 23
-
A = 8
-
-
Bob wybiera tajną liczbę całkowitą b=15, i wysyła Alicji B = gb mod p
-
B = 515 mod 23
-
B = 30,517,578,125 mod 23
-
B = 19
-
-
Alicja oblicza s = B a mod p
-
s = 196 mod 23
-
s = 47,045,881 mod 23
-
s = 2
-
-
Bob oblicza s = A b mod p
-
s = 815 mod 23
-
s = 35,184,372,088,832 mod 23
-
s = 2
-
-
Alicja i Bob współdzielą tajną liczbę: s = 2. Jest tak, ponieważ 6*15 jest tym samym, co 15*6. Więc jeśli ktoś znałby jednoczenie obie tajne wartości, mógłby także obliczyć s:
-
s = 56*15 mod 23
-
s = 515*6 mod 23
-
s = 590 mod 23
-
s=807,793,566,946,316,088,741,610,050,849,573,099,185,363,389,551,639,556,884,765,625 mod 23
-
s = 2
-
-
s = wspólny klucz tajny. s = 2
-
g = publiczna podstawa. g = 5
-
p = publiczna (pierwsza) liczba. p = 23
-
a = tajna wartość Alicji. a = 6
-
A = publiczna wartość Alicji. A = ga mod p = 8
-
b = tajna wartość Boba. b = 15
-
B = publiczna wartość Boba. B = gb mod p = 19
Dobranie przez zainteresowane strony odpowiednio dużych i losowych liczba, zapewnia bezpieczeństwo algorytmu, gdyż obecnie nie są znane wydajne algorytmy, które pozwoliłyby ewentualnemu napastnikowi obliczyć coś takiego w efektywny sposób.
DSA
Algorytm zaprezentowany przez NIST, posiada otwarty kod źródłowy. Dzięki temu zdobył ogromną popularność i jest używany przez znane darmowe narzędzie GPG do podpisywania dokumentów.
Algorytmy asymetryczne zapewniają bardzo wysoki poziom bezpieczeństwa, znacznie ułatwiają dystrybucję i zarządzanie kluczami, a w połączeniu z zaletami szyfrowania symetrycznego są pozbawione większości wad jednych i drugich.
El gamal
Powstał w latach 80. Konkurent algorytmu RSA. Swoje działanie opiera na trudności problemu logarytmu dyskretnego.