Cykl wprowadzający do podstawowych zagadnień związanych z kryptografią.
19.06.2024
W drugiej odsłonie serii o kryptografii omówię kryptografię asymetryczną. Opiszę w jaki sposób para kluczy może być matematycznie powiązana oraz w jaki sposób można rozwiązać główny problem kryptografii symetrycznej, czyli problem dystrybucji kluczy.
Problem dystrybucji kluczy
Dla przypomnienia, problem dystrybucji kluczy to problem bezpiecznego przekazania klucza kryptograficznego pomiędzy stronami komunikującymi się ze sobą. Pamiętamy, że w kryptografii symetrycznej, jest tylko jeden klucz, który szyfruje i odszyfrowuje dane, a jego przekazanie musi odbyć się w sposób odporny na podsłuchanie przez nieuprawnione osoby. Jeśli klucz zostanie przechwycony przez napastnika, cała komunikacja zabezpieczona tym kluczem staje się widoczna dla niezaufanej strony, a więc tracimy to co najważniejsze…. Poufność informacji.
Główną i zasadniczą różnicą pomiędzy kryptografią asymetryczną, a symetryczną (przeczytaj to na głos 😉 ) jest to, że w grę wchodzą dwa klucze. Nie byle jakie, losowe klucze, ale para kluczy matematycznie ze sobą powiązanych.
Każdy z nich ma swoją nazwę: Jeden z nich nazywany jest kluczem prywatnym – ten zachowujemy w tajemnicy. Drugi nazywany jest kluczem publicznym – tym możemy się dzielić z innymi.
Kryptografia asymetryczna
Te klucze są powiązane matematycznie. Oznacza to, że jeśli szyfrujemy coś za pomocą klucza publicznego, to jedynym kluczem, którego można użyć do odszyfrowania, jest powiązany z nim klucz prywatny i odwrotnie. Jeśli zaszyfrujemy coś kluczem prywatnym, to jedynym kluczem, który będzie w stanie odszyfrować naszą wiadomość, będzie powiązany z nim klucz publiczny.
Ta matematycznie powiązana para kluczy, pozwala nam rozwiązać problem dystrybucji kluczy symetrycznych oraz umożliwia stosowanie podpisów cyfrowych…ale ten temat zostawimy na kolejny artykuł.
Skoro kryptografia asymetryczna jest tak wspaniała, dlaczego nie używamy jej wszędzie do szyfrowania wszystkiego? Dlaczego wciąż potrzebujemy kryptografii symetrycznej?
Prostą odpowiedzią jest to, że kryptografia asymetryczna jest powolna, rzędy wielkości wolniejsza niż kryptografia symetryczna. I właśnie dlatego nie nadaje się do wszystkiego. Jeśli chcemy zaszyfrować dane szybko i wydajnie (patrz przykłady z części pierwszej), musimy użyć kryptografii symetrycznej, ponieważ jest ona znacznie szybsza i wydajniejsza.
W rzeczywistości to, czego obecnie powszechnie używamy to kryptografia hybrydowa. Czyli mieszanka kryptografii symetrycznej, gdy chcemy szybko i skutecznie zaszyfrować dane i kryptografii asymetrycznej gdy chcemy bezpiecznie dystrybuować klucze symetrycznych.
Kryptografia hybrydowa:
Pozwól, że pokażę ci prosty przykład tego, jak wygląda ta hybrydowa kryptografia.
Na wszystkich przykładach działania pewnych mechanizmów w IT pojawia się Alice i Bob… będę, więc oryginalny.
Załóżmy, że Alicja chce wysłać ten bardzo duży plik do Bo…. do Stefana. Alicja chce również się upewnić, że nikt nie będzie w stanie odczytać pliku podczas przesyłania. Chce więc osiągnąć poufność poprzez zaszyfrowanie pliku.
Ponieważ jest to bardzo duży plik, jedynym rodzajem kryptografii, którego może użyć i który jest wystarczająco szybki, jest kryptografia symetryczna. Oczywiście, jeśli używa symetrycznego algorytmu szyfrowania, musi więc wygenerować klucz symetryczny, którym zaszyfruje plik, generując szyfrogram, który wysyła do Stefana.
Każdy może przechwycić ten zaszyfrowany plik podczas przesyłania, ale nie będzie w stanie go odszyfrować i odczytać bez klucza symetrycznego. Alicja osiągnęła więc poufność. Bezpiecznie przesłała plik do Stefana. Ale to już było…. to już znamy z części I o kryptografii symetrycznej… teraz ciekwsza cześć…, oczywiście, Stefan będzie chciał odczytać plik.
Co dalej?
Aby to zrobić, Stefan, będzie potrzebował kopii tego klucza symetrycznego. I teraz Alicja ma naprawdę duży problem. Aby Stefan mógł odszyfrować ten plik, będzie potrzebował tego klucza symetrycznego. Jak Alicja może bezpiecznie wysłać ten klucz symetryczny do Stefana? Tak tak, dobrze się domyślasz, wykorzysta kryptografię asymetryczną. Alicja zaszyfruje klucz symetryczny za pomocą algorytmu asymetrycznego. Czas na quiz: jakiego klucza asymetrycznego użyje Alicja? Chce zaszyfrować klucz symetryczny w taki sposób, aby jedyną osobą na świecie, która może go odszyfrować, był Stefan.
Pół na pół, telefon do Przyjaciela… a może na siebie?
Klucza publicznego Stefana. Alicja zaszyfruje klucz symetryczny przy użyciu klucza publicznego Stefana, generując kolejny szyfrogram. I tu najpiękniejsza cześć kryptografii asymetrycznej. Każdy na świecie może przechwycić ten szyfrogram, ale jedyną osobą na świecie, która będzie w stanie go odszyfrować, jest Stefan ze swoim kluczem prywatnym.
Stefan otrzymał teraz bezpieczną kopię klucza symetrycznego, którego może użyć do odszyfrowania pliku od Alicji. To świetny przykład kryptografii hybrydowej. Użyliśmy razem kryptografii symetrycznej i asymetrycznej tam, gdzie każda z nich najlepiej się nadaje. Użyliśmy kryptografii symetrycznej, ponieważ była szybka i wydajna do szyfrowania dużego pliku, a kryptografii asymetrycznej, aby rozwiązać problem bezpiecznej dystrybucji klucza symetrycznego.
Kryptografia asymetryczna świetnie nadaje się do szyfrowania kluczy symetrycznych, ponieważ klucze symetryczne są niewielkie.
Jak powiązane są ze sobą te klucze?
TL;DR; Matematycznie 😉
Wersja dla bardziej ciekawskich:
Wiemy, że jednym z kluczy możemy się dzielić ze wszystkimi – tak tym publicznym oczywiscie. Zastanawiasz się pewnie też, czy to na pewno bezpieczne? Skoro ktoś ma nasz klucz publiczny, to czy nie może odtworzyć klucza prywatnego?
I tu z pomocą przychodzą funkcje matematyczne, o których pewnie kiedyś każdy z nas się uczył, ale uznał ze nie warto ich pamiętać, bo się do niczego nie przydadzą…. A prawda jest taka, ze korzystamy z nich codziennie np. korzystając z Internetu ????
Istnieją dwa główne problemy matematyczne, o których należy w tej sytuacji wspomnieć. Problem faktoryzacji liczb całkowitych i problem dyskretnego logarytmu…. I pewnie już zaczynasz ziewać, ale spokojnie, nie jesteśmy na wykładzie z matematyki. Wspomnę tylko o tym ze są to funkcje matematyczne, które są łatwe do obliczenia w jednym kierunku, ale bardzo trudne do odwrócenia, ponieważ operują na bardzo dużych liczbach pierwszych.
Dlatego też bardzo trudno jest znaleźć klucz prywatny, jeśli ma się czyjś klucz publiczny.
Powtórka z matmy:
O ile kryptografia symetryczna świetnie sprawdza się pod względem szybkości i zasobów obliczeniowych, kryptografii asymetrycznej, daje możliwość łatwiejszego do zarządzania kluczami w dużych sieciach.
W kryptografii symetrycznej każdy użytkownik musi mieć osobny klucz do komunikacji z każdym innym użytkownikiem. Jeśli mamy N użytkowników, liczba kluczy potrzebna do pełnej komunikacji jest wyrażona przez:
W kryptografii asymetrycznej każdy użytkownik posiada parę kluczy (publiczny i prywatny). Liczba kluczy jest równa:
Popatrz na tabelkę poniżej i wszystko się wyjaśni:
Liczba użytkowników (n) | Symetryczna: Liczba kluczy | Asymetryczna: Liczba kluczy |
---|---|---|
2 | 1 | 4 |
3 | 3 | 6 |
4 | 6 | 8 |
5 | 10 | 10 |
6 | 15 | 12 |
7 | 21 | 14 |
8 | 28 | 16 |
9 | 36 | 18 |
10 | 45 | 20 |
Podsumowanie
Nasza historia o kryptografii powoli nabiera sensu. Mamy już w takim razie omówione szybkie szyfrowanie danych, wraz z bezpieczną dystrybucją kluczy.
Do pełnego obrazu potrzebujemy jeszcze sposobu na weryfikację integralności danych przesyłanych przez niezaufaną sieć, taką jak Internet, ale i przydałaby się autentyczność i niezaprzeczalność, a przy okazji i kontrola dostępu. Sposobem na osiągnięcie powyższych są podpisy cyfrowe, ale o tym w kolejnej części….
Daniel Wysocki
Daniel Wysocki to absolwent wydziału Inżynierii Mechanicznej i Robotyki na Akademii Górniczo-Hutniczej w Krakowie.
Jego kariera w branży IT trwa już dwie dekady, podczas których zdobył bogate doświadczenie i umiejętności.
Obecnie pełni funkcję Kierownika Działu Cyberbezpieczeństwa w firmie Advatech, lidera w dostarczaniu nowoczesnych rozwiązań technologicznych. Jako ekspert od cyberbezpieczeństwa, nieustannie poszukuje i wprowadza w życie najnowocześniejsze i najskuteczniejsze rozwiązania do ochrony danych i infrastruktury IT. Korzysta z innowacyjnych osiągnięć branży cyberbezpieczeństwa, aby zapewnić najwyższy poziom zabezpieczeń i odporności na ataki.