Współczesne algorytmy szyfrowania danych
Kryptografia symetryczna
W artykule czytamy, iż swoją nazwę zawdzięcza temu, że większość szyfrów opartych o kryptografię symetryczną zawiera jeden klucz do kodowania i odkodowywania wiadomości. Możemy tu wprowadzić dodatkowy podział na szyfry blokowe i strumieniowe, gdzie blokowe dzielą wiadomość na bloki danych i dopiero wtedy przechodzą do właściwego szyfrowania, a szyfry strumieniowe przekształcają każdy bit wiadomości tak, jak dyktuje to algorytm. Problematyczna czasami staje się dystrybucja klucza, bowiem aby dać możliwość odszyfrowania wiadomości, musimy danej osobie przekazać klucz. Zatem siła kryptografii symetrycznej leży głównie w kluczu.
Kryptografia asymetryczna
Jest dzisiaj szeroko stosowana chociażby do składania podpisów cyfrowych. Polega ona na tworzeniu w procesie szyfrowania tekstu pary kluczy, prywatnego i publicznego. Klucz prywatny jest przeznaczony tylko dla nas. Możemy nim podpisywać wiadomość i tym samym uwierzytelniać ją. Klucz publiczny jest ogólnie dostępny i każdy adresat może dzięki niemu sprawdzić, między innymi, czy wiadomość jaką otrzymał nie była w międzyczasie modyfikowana. Kluczem publicznym można też szyfrować wiadomości i w takim wypadku do deszyfrowania posłuży już klucz prywatny.
Autor artykułu podaje, iż przedstawicielem szyfrów symetrycznych jest AES. Jest finalistą konkursu, który został ogłoszony, by zastąpić przestarzały już i zapewniający zbyt małe bezpieczeństwo standard DES. AES używa kluczy o długości 128, 196 i 256 bitów. Jest algorytmem operującym na blokach o zmiennej długości, a biorąc pod uwagę fakt, że i same klucze są różnej długości, zapewnia bardzo wysoki poziom bezpieczeństwa.
Działanie współczesnego algorytmu szyfrującego Maciej Ziarka przedstawił na przykładzie RSA.
RSA jest czasami nazywany algorytmem Rivest, Shamir, Adleman - od nazwisk twórców. Jest to pierwszy algorytm bazujący na kryptografii asymetrycznej. Ten fakt sprawił, że RSA jest chętnie używany do podpisów cyfrowych. Trzej wymienieni twórcy, starali się znaleźć praktyczne rozwiązanie zaproponowanej przez Diffiego i Hellmana koncepcji używania kluczy publicznych i prywatnych do szyfrowania. Po zastosowaniu pewnych modyfikacji, udało się zrealizować dotąd nieosiągalną ideę udostępniania wszystkim użytkownikom jednego klucza, a szyfrowania drugim, indywidualnym.
Przed przejściem do przykładu obrazującego szyfrowanie tekstu algorytmem RSA w praktyce, ekspert Kaspersky Lab przedstawił symbole używane we wzorach oraz z metody ich wyliczania.
p - 1 duża liczba pierwsza
q - 2 duża liczba pierwsza
(liczby pierwsze mają jako dzielnik liczbę 1 oraz samą siebie)
n - iloczyn dużych liczb pierwszych
(w 256 bitowym szyfrowaniu otrzymujemy liczbę cyfr dla n powyżej 300)
m - wiadomość zapisana jako liczba
e - klucz szyfrujący będący liczbą względnie pierwszą dla iloczynu (p-1)(q-1), a także e < n
(liczby względnie pierwsze mają jako wspólny dzielnik liczbę 1)
Klucz prywatny (klucz deszyfrujący) - stanowią go liczby d oraz n, gdzie d wyliczamy według wzoru:
ed = 1mod (p-1)*(q-1)
Klucz publiczny - stanowią go liczby n oraz e
Szyfrowanie:
c = me (mod n)
Deszyfrowanie:
m = cd (mod n)
Oto jak przebiega proces szyfrowania. Wiadomo już, że potrzebujemy dużych liczb pierwszych. Dla celu przykładu Maciej Ziarka użył liczb pierwszych, które pozbawiają algorytm bezpieczeństwa, ponieważ są zbyt niskie, jednak pozwala to łatwiej wykonać przykładowe obliczenia.
W artykule przyjęto, że chcemy zaszyfrować literę Y (słowa i całe zdania zajęłyby zbyt dużo miejsca na obliczanie, dlatego autor ograniczył się do jednej litery). W systemie dziesiętnym litera Y to cyfra 89. Mamy więc już wiadomość zapisaną w postaci liczby czyli nasze m. Teraz należy odszukać p oraz q, które będą liczbami pierwszymi. Liczby 19 i 29 posiadają jako dzielnik samą siebie i 1, a więc spełniają kryteria liczb pierwszych (pamiętajmy jednak, że w "prawdziwym" szyfrowaniu powinny one być znacznie większe). Teraz przejdźmy do wyliczeń:
n = p*q
n = 551
e = 5 ((p-1)(q-1) = 504, jest to liczba względnie pierwsza, ponieważ 5 i 504 mają wspólny dzielnik 1)
5 < 504 (założenie e < n zostało spełnione)
W ten sposób dostępne są wszystkie dane potrzebne do rozpoczęcia szyfrowania.
m = 89
c = me (mod n)
c = 895 (mod 551)
c = 5584059449 (mod 551)
c = 90
Zatem przykładowa wiadomość "Y" po zaszyfrowaniu ma wartość 90. Aby odszyfrować wiadomość należy użyć klucza prywatnego. Najpierw jednak należy obliczyć d.
ed = 1mod (p-1)*(q-1)
5d = 1mod
5d = 505/5
d = 101
Deszyfrowanie wiadomości odbywa się według następujących wyliczeń:
c = 90
m = cd (mod n)
m = 90101 (mod 551)
m = 2,390525899882872924049031898322e+197 (mod 551)
m = 89
89 to liczba reprezentująca symbol Y, zatem poprawnie zaszyfrowano i odszyfrowano wiadomość. Kaspersky Lab zauważa, iż operacje tego typu wykonywane są na dużo większych wartościach, dzięki czemu stosowanie obecnie tego algorytmu daje większe poczucie bezpieczeństwa. Jednak w stu procentach bezpieczni nie będziemy nigdy. Każdy algorytm ma słabości i każdy zostanie kiedyś złamany. Jest to jedynie kwestia czasu, ponieważ moc obliczeniowa komputerów stale rośnie. Słabością RSA jest faktoryzacja (na szczęście obecnie faktoryzacja RSA trwałaby zbyt długo z powodu złożoności, by uzyskać sensowny wynik).
Faktoryzacja to rozkład dużej liczby całkowitej na czynniki pierwsze przebiegający w taki sposób, by iloczyn tych czynników był równy rozkładanej liczbie całkowitej. Aby troszeczkę to rozjaśnić autor posłużył się przykładem. Naszą dużą liczbą całkowitą jest x, natomiast po jej rozłożeniu otrzymujemy czynniki y1, y2, y3, yn. Zatem x=y1 y2 y3 yn.
Aby uzyskać klucz prywatny, należałoby dokonać faktoryzacji liczby użytej do stworzenia klucza publicznego, a więc uzyskać liczby pierwsze p oraz q. Wtedy odszyfrowanie wiadomości, a tym samym jej skompromitowanie, nie byłoby już problemem. Na szczęście jednak dla bezpieczeństwa RSA, faktoryzacja tak dużych liczb jakie są używane współcześnie jest bardzo trudna i długotrwała. Co prawda powstają algorytmy, które mają za zadanie przyspieszyć faktoryzację, jednak nadal czas łamania jest niesłychanie długi. Współcześnie używa się kluczy powyżej 1024 bitów, a największy złamany klucz RSA ma długość 663 bity. Zdaniem ekspertów prawdziwym zagrożeniem, a nawet końcem RSA będą komputery kwantowe. Jak sama nazwa wskazuje, ich działanie opiera się na mechanice kwantowej. Moc obliczeniowa przewyższy znacznie tradycyjne komputery, przez co okres oczekiwania na faktoryzację dużej liczby pierwszej będzie bardziej racjonalny niż współcześnie. Odpowiedzią będzie zatem kryptografia kwantowa... Warto pamiętać, że algorytmy szyfrowania działają na zasadzie tarczy i miecza. Każdy nowy algorytm zapewnia ochronę jednak nie wiadomo na jak długo, bowiem prędzej czy później znajdzie się sposób na jego kompromitację...