Szyfry symetryczne

Pierwszym rodzajem szyfrów, który omówimy, będą szyfry symetryczne. Charakteryzują się one stosowaniem jednego klucza, zarówno do procesu szyfrowania, jak i deszyfrowania. Takie rozwiązanie jest szybkie i wygodne, ale nie możemy zapominać o kwestiach bezpieczeństwa. W obu przypadkach, gdy klucz dostanie się w niepowołane ręce, może to doprowadzić do potencjalnie niebezpiecznych sytuacji.

Przekazując klucz, musimy zachować odpowiednie środki zabezpieczeń. W wypadku szyfru symetrycznego dodatkowe zagrożenie wynika z dzielenia sekretu przez nadawcę i odbiorcę wiadomości. Prawdopodobieństwo dostania się klucza w niepowołane ręce jest wówczas znacznie większe, niż gdyby znała go tylko jedna osoba. Przechwycenie takiej informacji jest niebezpieczne również dlatego, że umożliwia postronnej osobie nie tylko rozszyfrowanie tajnych danych, lecz także samodzielne szyfrowanie wiadomości, a następnie wysyłanie ich do odbiorcy. Jeżeli ten odbiorca nie jest świadomy tzw. wycieku, przyjmie fałszywą wiadomość jako prawdziwą.

Rodzaje szyfrów symetrycznych

Szyfry symetryczne dzielimy na dwie grupy:

  • Szyfry strumieniowe – ich głównym założeniem jest wygenerowanie strumienia bitów będącego kluczem, a następnie – z jego użyciem – szyfrowania po kolei każdego bitu tekstu jawnego. W praktyce odbywa się to zwykle z użyciem operacji logicznej XOR pomiędzy konkretnymi bitami wiadomości oraz odpowiadającymi im bitami klucza.

  • Szyfry blokowe – opierają się na podzieleniu tekstu jawnego na bloki o identycznej długości np. 8 bajtów, a następnie – po kolei – szyfrowaniu ich z użyciem klucza. W wyniku tej operacji otrzymamy zaszyfrowane bloki tej samej długości.

Analiza algorytmów symetrycznych

Przykładów algorytmów symetrycznych jest wiele, aby zrozumieć główne założenia rządzące tą grupą, przeanalizujmy wspomniane dwa rodzaje szyfrów. Rozpoczniemy od algorytmu szyfrowania strumieniowego.

Przykład 1

Tak jak już wspominaliśmy, aby uzyskać szyfrogram, w wypadku algorytmów strumieniowych niezbędne jest zwykle przeprowadzenie operacji logicznej XOR pomiędzy tekstem jawnym oraz kluczem. W tym celu najpierw rozkładamy wartości wejściowe do postaci ciągu pojedynczych bitów. W wypadku klucza stosujemy generator strumienia, natomiast tekst jawny, niezależnie od jego formy, prezentujemy w postaci binarnej. Operacja XOR przeprowadzana jest pomiędzy kolejnymi bitami tekstu jawnego oraz strumienia klucza. Powstały w ten sposób nowy ciąg bitów jest naszym szyfrogramem.

R1BT1qLo6OYAM
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Proces deszyfrowania jest analogiczny – danymi wejściowymi są szyfrogram oraz ten sam wygenerowany strumień bitów. Tym razem w wyniku przeprowadzonej operacji XOR otrzymujemy tekst jawny.

R10G5rVkf1TTH
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

W wypadku grupy szyfrów blokowych za przykład posłuży nam najprostszy tryb tego rodzaju szyfrowania – ECB (Electronic codebook). Bazuje on na dzieleniu tekstu jawnego na 64 bitowe bloki, a następnie oddzielne szyfrowanie każdego z nich tym samym kluczem.

Przykład 2

Tekst jawny dzielimy na cztery bloki, każdy o wielkości 64 bitów. Za pomocą klucza K1 szyfrujemy osobno każdy z utworzonych bloków. W ten sposób otrzymaliśmy cztery zaszyfrowane bloki o wielkości 64 bitów. Po ich złożeniu otrzymujemy gotowy szyfrogram.

R9pykW0zRdqDw
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Deszyfrowanie odbywa się w sposób analogiczny. Szyfrogram ponownie rozdzielamy na bloki o wielkości 64 bitów, a następnie każdy z nich osobno deszyfrujemy z użyciem naszego klucza K1. W ten sposób otrzymujemy odszyfrowane bloki o tej samej wielkości. Po ich złożeniu mamy pełen tekst jawny.

RBsy6gbudzayD
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Przykład

Przykładem szyfru symetrycznego jest szyfr XOR, ROT13, Cezara. Więcej na jego temat znajdziesz w e‑materiałach:

Szyfry asymetryczne

W wypadku szyfrów asymetrycznych operujemy dwoma osobnymi kluczami – jeden z nich jest szyfrujący, drugi – deszyfrujący. Są one zwykle określane jako klucze publicznyklucz publicznypubliczny oraz prywatnyklucz prywatnyprywatny. Przechwycenie klucza publicznego (szyfrującego) nie stanowi ryzyka, ponieważ nie daje on możliwości odszyfrowania zabezpieczonych wiadomości, a – co ciekawe – można go nawet udostępnić publicznie, by każdy zainteresowany miał możliwość zaszyfrowania wybranych przez siebie informacji.

Klucz prywatny (deszyfrujący) jest przetrzymywany w sekrecie i ma go tylko odbiorca wiadomości. W ten sposób znacznie redukujemy ryzyko, że dostanie się on w niepowołane ręce. Musimy jednak pamiętać, że w porównaniu do szyfrów symetrycznych, szyfry asymetryczne są bardziej skomplikowane, co powoduje, że operacje szyfrowania i deszyfrowania odbywają się znacznie wolniej. W systemach, w których zależy nam na czasie, powinniśmy zastosować szyfry symetryczne. Natomiast w wypadku, gdy naszym priorytetem jest bezpieczeństwo, wskazane jest pozostanie przy szyfrach asymetrycznych. Oczywiście, większy poziom zabezpieczeń nie wyniknie tylko z głównych założeń tego typu szyfrów. Niezbędna jest odpowiednia konstrukcja kluczy, tak by osoba posiadająca klucz publiczny nie miała możliwości rozpracowania klucza deszyfrującego, opierając się jedynie na analizie tekstu jawnego i na odpowiadającym mu szyfrogramie.

Analiza algorytmów asymetrycznych

Przeanalizujmy schemat przedstawiający proces szyfrowania i deszyfrowania za pomocą szyfru asymetrycznego.

Przykład 3

Załóżmy, że nadawca posiada klucz publiczny pewnego szyfru asymetrycznego. Po przygotowaniu treści tekstu jawnego używa on uzyskanego klucza publicznego do zaszyfrowania wiadomości. W efekcie tej operacji otrzymał on szyfrogram. Po dostarczeniu zaszyfrowanej informacji, odbiorca używa swojego klucza prywatnego w procesie deszyfrowania. W ten sposób uzyskał on tekst jawny przygotowany przez nadawcę.

Rkl2f2FbJrg1A
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Szyfrowanie danych podczas przesyłania

Istotną kwestią w realiach transportu danych w internecie jest proces szyfrowania podczas przesyłania. Ma on na celu zabezpieczenie przesyłanych informacji przed ewentualnym podsłuchem przez m.in. innych użytkowników w tej sieci. W ten sposób nie będą oni w stanie dostać się do np. treści naszej wiadomości e‑mail, a jedynie do stworzonego na jej podstawie szyfrogramu. Obecnie proces szyfrowania danych podczas przesyłania zapewnia głównie protokół TLSprotokół TLSprotokół TLS (Transport Layer Security). Opiera się on na opisywanych podczas tej lekcji szyfrach asymetrycznych.

Przykład

Przykładem szyfru asymetrycznego jest szyfr RSA. Więcej na jego temat znajdziesz w e‑materiałach:

Słownik

klucz prywatny
klucz prywatny

rodzaj klucza, służącego w szyfrach asymetrycznych do deszyfrowania szyfrogramów; dostęp do niego powinien mieć tylko odbiorca zaszyfrowanych wiadomości

klucz publiczny
klucz publiczny

rodzaj klucza służącego w szyfrach asymetrycznych do szyfrowania tekstu jawnego; nie musi być utrzymywany w sekrecie, a nawet może zostać udostępniony publicznie

protokół TLS
protokół TLS

protokół odpowiedzialny za zabezpieczania informacji transportowanych w sieci, oparty na szyfrach asymetrycznych