Bezpieczeństwo

Bezpieczeństwo cz. II – Kryptografia asymetryczna

By on 27 stycznia 2017

Kryptografia asymetryczna (kryptografia klucza publicznego) jest młodszą siostrą kryptografii symetrycznej. Ma swoje plusy, ale i wady, co postaram się przedstawić w tym wpisie.

Jej mechanizm opiera się na funkcjach jednokierunkowych. Funkcja jednokierunkowa to taka funkcja którą łatwo wyliczyć, ale trudno odwrócić jej działanie. Najprostsza analogia dotyczy podnoszenia do kwadratu i pierwiastkowania liczby. Gdybym kazał Ci podać kwadrat liczby 1234 z pewnością szybko pomnożyłbyś pod kreskę i otrzymałbyś wynik 1522756, ale gdybym kazał Ci podać wartość pierwiastka kwadratowego z 1522756 to nie byłoby to takie trywialne zadanie. Nawet dla komputera, gdy wchodzą w grę znacznie większe liczby nie jest to proste. Istnieją algorytmy szybkiego potęgowania, ale do tej pory nikt nie wymyślił algorytmu szybkiego pierwiastkowania.

Bezpieczne algorytmy asymetryczne opierają się zazwyczaj na odrobinę bardziej złożonych zagadnieniach takich jak problem faktoryzacji iloczynu dużych liczb pierwszych, albo trudności obliczeń logarytmu dyskretnego dla potęgowania w ciele skończonym. Dla ciebie ważne jest, żebyś zapamiętał, że istnieją operacje które łatwiej wykonuje się w jedną stronę, niż w drugą.

Na podstawie tych zagadnień udało się uzyskać algorytmy, które pozwalają na bezpieczne szyfrowanie informacji jednym kluczem i odszyfrowywanie drugim. Przy kryptografii asymetrycznej każda z osób w transmisji posiada dwa klucze. Pierwszy klucz jest jawny i publicznie wszystkim znany. Chcąc napisać do danej osoby nadawca szyfruje wiadomość jej kluczem publicznym. Ta osoba chcąc odczytać zaszyfrowaną wiadomość używa swojego klucza prywatnego, który koniecznie musi pozostać jedynie w posiadaniu adresata. Dla dobrze skonstruowanych algorytmów asymetrycznych uzyskanie klucza prywatnego z publicznego jest obliczeniowo trudne (prawie niemożliwe). W ten oto sposób wydaje się, że rozwiązany został problem dystrybucji klucza prywatnego znany z kryptografii symetrycznej. W kryptografii asymetrycznej wydaje się, że wystarczy udostępnić swój klucz publiczny i przekazać go nadawcy, a prywatny trzymać w ukryciu. Jednak i tu pojawia się problem. Skąd osoba która otrzyma cudzy klucz publiczny ma mieć pewność, że ten klucz należy właśnie do danej osoby, a nie od osoby podszywającej się. Tu z pomocą przychodzą certyfikaty i centra certyfikacji o których przeczytasz w kolejnej części.

Do szyfrowania wiadomości za powszechnie bezpieczny uważa się algorytm RSA, używany m.in. w bankowości.

Niestety kryptografia asymetryczna jest znacznie wolniejsza od kryptografii symetrycznej, nawet 1000 razy, co jest już zauważalne podczas komunikacji. Szyfrowanie dużej ilości danych tą techniką mija się z celem. Tu także poradzono sobie z tym. W oparciu o kryptografię asymetryczną udało się stworzyć protokół Diffiego-Hellmana, który pozwala na ustalenie jednego klucza(prywatnego) dla obu stron, bez przesyłania żadnych poufnych danych. Protokół ten nie pozwala na szyfrowanie wiadomości, ale pozwala stworzyć kanał dla bezpiecznego przesyłu wiadomości.

Chcąc wysłać informacje do danej osoby, wysyłasz do niej zapytanie o jej klucz publiczny, ona podsyła ci ten klucz. Za pomocą centrum certyfikacji (o czym przeczytasz więcej w kolejnej części), potwierdzasz że osoba do której chcesz napisać jest właścicielem tego klucza. Wówczas wysyłasz swój klucz publiczny i druga strona weryfikuje go w ten sam sposób, że to rzeczywiście ty. W tym momencie macie możliwość bezpiecznej komunikacji, bo wiecie, że wiadomości wysłane przez was mogą zostać odczytane wyłącznie waszymi kluczami prywatnymi, których nie udostępniliście. Jednak jest to powolna komunikacja, dlatego używacie protokołu Diffiego-Hellmana, aby ustalić bezpiecznie wspólny klucz prywatny. Wszystkie potrzebne dane w ramach protokołu Diffiego-Hellmana wysyłasz korzystając z bezpiecznego kanału asymetrycznego. W rezultacie obie strony otrzymują taki sam klucz prywatny, który mogą użyć do bezpiecznej komunikacji symetrycznej.

W skrócie, kryptografia asymetryczna zazwyczaj jest używana do bezpiecznego ustalenia klucza prywatnego używanego przy znacznie szybszej kryptografii symetrycznej.

Warto jeszcze wspomnieć o kryptografii krzywych eliptycznych (ECC). Jest to grupa technik kryptografii asymetrycznej wykorzystująca jednokierunkowe operacje na tzw. krzywych eliptycznych. Jest to jeden z nowszych trendów. Charakterystyczne dla ECC jest to, że odpowiednikiem 1024 bitowego klucza w RSA jest 160 bitowy klucz w kryptografii krzywych eliptycznych, a 3072 bitowego klucz 256 bitowy. Pozwala to na szybsze szyfrowanie wiadomości co jest pożądane. Ale nadal szyfrowanie jest wolniejsze niż przy kryptografii symetrycznej(około 10 razy). Do wymiany kluczy wykorzystuje się powszechnie algorytmy ECDH (Elliptic Curve Diffie–Hellman) i ECDHE (Elliptic Curve Diffie–Hellman Ephemeral), czyli odmiany standardowego protokołu Diffiego-Hellmana przełożone na realia krzywych eliptycznych .

TAGS
RELATED POSTS

LEAVE A COMMENT