Cykl wprowadzający do podstawowych zagadnień związanych z kryptografią.
29.05.2024
Kryptografia jest niezwykle ważnym tematem w dziedzinie bezpieczeństwa. Ostatnio poruszaliśmy kwestie bezpieczeństwa poczty i jej szyfrowania, ale to tylko wierzchołek góry lodowej, nazwanej KRYPTOGRAFIĄ.
Kryptografia i jej tajniki
Możesz pomyśleć: „Czy mnie na pewno to dotyczy?”, ale w rzeczywistości ogromna część tego, co robimy na co dzień, opiera się na kryptografii…bezpieczna bankowość internetowa i płatności, nasza prywatność online i anonimowość, handel kryptowalutami, zabezpieczenie mediów cyfrowych, bezpieczne niszczenie danych… ta lista mogłaby się nigdy nie mieć końca….
Do poprawnego skonfigurowania bezpiecznej poczty z pewnością nie potrzebujesz doktoratu z kryptografii, ale opanowanie podstaw kryptografii, na pewno pomoże zrozumieć, do czego potrzebujemy kryptografii.
Kryptos Grafo:
Zacznijmy od podstaw: Kryptografia może zapewnić pięć podstawowych usług: Poufność, Integralność, Autentyczność, Niepowtarzalność i Kontrolę Dostępu. Te wszystkie usługi są realizowane za pomocą szyfrowania symetrycznego, szyfrowania asymetrycznego i haszowania. Idąc dalej, dane mogą być szyfrowane i odszyfrowywane poprzez transpozycję i substytucję. Możemy wykorzystywać szyfry strumieniowe i blokowe, nie zapominajmy o zmiennych kryptograficznych i wektorach inicjalizacji….
Zaraz zaraz, Ale co? Miały być podstawy…. 3maj się, „unsub” ….
Czekaj, czekaj… żartowałem XD (żarcik „prowadzącego” na dobry początek )
Przejdźmy do tego, co mam nadzieję będzie fascynującą podróżą przez świat kryptografii. Zaczynając od słowa kryptografia. Słowo to pochodzi od dwóch greckich słów κρυπτός (kryptos) oraz γράφω (grafo), które w przybliżeniu oznaczają sekret i pismo. To najlepszy opis głównych celów kryptografii.
Chcemy być w stanie zapisywać sekrety w taki sposób, aby tylko wybrane przez nas osoby mogły je odczytać. Współczesna kryptografia potrafi jednak znacznie więcej niż tylko ukrywanie naszych sekretów.
Jak wspomniałem wcześniej, kryptografia zapewnia pięć głównych usług. Poufność, integralność, autentyczność, niezaprzeczalność i kontrola dostępu. Zdefiniujmy każdą z tych usług, a później przejdziemy do szczegółów tego, jak możemy je osiągnąć.
Poufność
Zaczynając od poufności, która pozwala nam udostępniać i odczytywać dane tylko tym, którzy są upoważnieni do ich przeglądania, poprzez szyfrowanie informacji za pomocą określonego klucza szyfrowania, zwanego inaczej zmienną kryptograficzną.
Szyfrowanie danych za pomocą określonego klucza, a następnie kontrolowanie, kto ma klucz, pozwala nam kontrolować, kto może odszyfrować i odczytać dane, a tym samym ostatecznie kontrolować poufność danych. Jeśli nie masz klucza, nie możesz odczytać danych. Poufność osiągamy więc poprzez szyfrowanie danych i kontrolowanie, kto posiada klucz niezbędny do ich odszyfrowania.
Integralność
Drugą usługą jest integralność, która pozwala nam wykryć, czy dane zostały zmanipulowane lub zmienione, czyli w skrócie, czy ktoś nie namieszał w naszych danych. Integralność pomaga nam zapobiegać nieautoryzowanym lub nieoczekiwanym zmianom danych. Aby osiągnąć integralność, używamy algorytmów hashowania. Szerzej o tych algorymach, może w kolejnych artykułach. Warto jednak zapamiętać iż stosujemy je, aby sprawdzić, czy aby na pewno nikt nie zmienił się choćby jednego bit w ważnych dla nas danych.
Autentyczność
Dzięki niej, możemy potwierdzić, czy wiadomość pochodzi od konkretnego nadawcy. Jest to niezwykle przydatne. Jeśli chcemy bezpiecznie komunikować się z kimś za pośrednictwem niezaufanej sieci, takiej jak na przykład Internet, musimy wiedzieć, z kim rozmawiamy i nie mówimy tu tylko o komunikacji mailowej, czy czatach.
Na przykład, jeśli aktualizujesz system operacyjny Windows na swoim komputerze, chcesz mieć pewność, że aktualizacja oprogramowania pochodzi od firmy Microsoft.com, a nie od rnicrosoft.com (widzisz drobną różnicę?) lub czegoś podobnego. W kolejnych częściach serii omówimy szczegółowo, w jaki sposób osiągamy autentyczność.
Niezaprzeczalność
Oznacza to uniemożliwienie komuś zaprzeczenia wcześniejszym działaniom. Innymi słowy, ktoś nie może czemuś zaprzeczyć. Istnieją dwa rodzaje niezaprzeczalności: niezaprzeczalność pochodzenia, co oznacza, że nadawca wiadomości nie może zaprzeczyć, że wysłał określoną wiadomość oraz niezaprzeczalność dostarczenia, co oznacza, że odbiorca nie może zaprzeczyć, że otrzymał określoną wiadomość. Jest to całkiem przydatne. Często chcesz na przykład wiedzieć, czy odbiorca otrzymał wiadomość, którą mu wysłałeś, prawda?
Kontrola dostępu
Piątą usługą kryptograficzną jest kontrola dostępu. Kontrolując, komu udostępniamy nasz szyfrogram i komu dajemy klucz deszyfrujący, możemy kontrolować, kto może odszyfrować, a tym samym uzyskać dostęp do niektórych danych. Kryptografia może być zatem wykorzystywana jako forma kontroli dostępu.
Jak to działa?
Zanim przejdę do wyjaśnienia, w jaki sposób osiągamy te usługi, przejdźmy przez kilka dodatkowych ważnych definicji kryptograficznych.
Zaczynając od tekstu jawnego lub cleartext/plaintext jak to zazwyczaj w dokumentacji widnieje. To tekst, który możesz łatwo przeczytać i go zrozumieć.
Następnie mamy system kryptograficzny, który jest zestawem algorytmów kryptograficznych potrzebnych do wdrożenia określonej funkcji kryptograficznej, takiej jak poufność lub integralność.
Jedną z typowych czynności wykonywanych przez system kryptograficzny jest przekształcanie zwykłego tekstu w szyfrogram lub odwrotnie. Możesz zobaczyć, że nasz system kryptograficzny zamienił zwykły tekst, „Bezpieczenstwoxd jest super”, w nieczytelny szyfrogram.
Szyfrogram to zaszyfrowane dane, które stały się nieczytelne, chyba że znasz tajny klucz do ich odszyfrowania.
Tak właśnie działają zestawy algorytmów, których używamy do osiągnięcia poufności, integralności, autentyczności, niezaprzeczalności i kontroli dostępu.
Idziemy dalej?
Szyfrowanie to proces przekształcania zwykłego tekstu w szyfrogram przy użyciu algorytmu kryptograficznego i zmiennej kryptograficznej.
Klucz…do sukcesu
Zmienna kryptograficzna jest inaczej zwana kluczem. Kluczem potrzebnym do zaszyfrowania danych i przekształcenia ich w szyfrogram. Deszyfrowanie jest zatem procesem przekształcania szyfrogramu z powrotem w zwykły tekst przy użyciu zmiennej kryptograficznej szyfrowania, czyli ponownie klucza.
Jeśli zaszyfrujesz te same dane za pomocą tego samego klucza, za każdym razem otrzymasz ten sam szyfrogram. Jest to bardzo złe, ponieważ istnieje tutaj bardzo oczywisty wzorzec, który atakujący może potencjalnie znaleźć i wykorzystać. Niezwykle ważne jest, aby zawsze unikać wzorców w kryptografii. Dlatego wprowadzono wektor inicjalizacji czyli losową liczbę (IV – po angielski „aj wi” od Initialization Vector) dodawaną do klucza procesu szyfrowania, aby otrzymać inny szyfrogram za każdym razem, a tym samym aby uniknąć wzorców.
Algorytmy symetryczne używają tylko jednego klucza. Ten sam klucz jest używany do szyfrowania i ten sam klucz jest używany do odszyfrowywania. Z drugiej strony algorytmy asymetryczne wykorzystują parę kluczy, czyli dwa klucze, które są ze sobą matematycznie powiązane. Jeden klucz jest używany do szyfrowania, a drugi klucz w parze kluczy jest następnie używany do odszyfrowania.
Algorytmy symetryczne
Ogromną zaletą algorytmów symetrycznych jest to, że mogą być o rzędy wielkości szybsze niż algorytmy asymetryczne. Tak więc, gdy trzeba zaszyfrować dużą ilość danych i chcesz szybko odszyfrować lub zaszyfrować szybko i wydajnie, stosujemy algorytmy symetryczne.
I właśnie dlatego algorytmy symetryczne są tak powszechnie używane wszędzie wokół nas. Jeśli łączysz się przez VPN, wirtualną sieć prywatną między laptopem a siecią biurową, algorytm symetryczny jest używany do szybkiego i wydajnego szyfrowania i odszyfrowywania danych. Jeśli chcesz zaszyfrować wszystkie dane kopii zapasowej, użyjesz algorytmu symetrycznego, ponieważ jest on szybki i wydajny.
Jesli tworzysz ransomware…. no dobra rozpędziłem sie 😉
Największym problemem związanym z algorytmami symetrycznymi jest dystrybucja kluczy….
Zajęcia Praktyczno Techniczne – czyli CyberChef
Nie samą teorią żyje bezpiecznik, więc czas zakasać rękawy.
Poznajmy w praktyce bardzo proste, ale niezwykle skuteczne sposoby, przekształcania jawnego tekstu w niemożliwy do odczytania szyfrogram. Poznajcie substytucję i transpozycję.
Substytucja to po prostu zastępowanie jednego znaku innym, a transpozycja to po prostu przestawianie liter.
Do zajęć praktycznych wykorzystamy multitool każdego bezpiecznika, czyli CyberChef’a.
Zapraszam na stronę: https://cyberchef.org/
Substytucja
Jedna z najprostszych i najbardziej znanych technik szyfrowania podstawieniowego (substytucji), to odmiana Szyfru Cezara, czyli ROT13.
To szyfr, w którym każda litera tekstu jawnego (niezaszyfrowanego) zastępowana jest inną, oddaloną od niej o stałą liczbę pozycji w alfabecie, przy czym kierunek zamiany musi być zachowany.
Więcej o tym algorytmie poczytacie w Wikipedii 🙂
Wchodząc na stronę CyberChef mamy możliwość w lewym górnym rogu skorzystać z wyszukiwarki operacji. Jeśli zaczniemy wpisywać „substitution” (1.) pojawią naszym oczom się narzędzia związane z tym algorytmem. Wybieramy ROT13 (2.). Zgłębiamy historię szyfru na wikipedii (3.) Wpisujemy dowolny, jawny tekst (4.) i otrzymujemy szyfrogram (5.)
Proste prawda?
Transpozycja
Jak już wspomniałem, transpozycja to po prostu przestawienie liter tekstu jawnego w celu utworzenia szyfrogramu.
Tu potrzebny jest nam klucz, wg którego ustalamy sekwencję szyfrowania i odszyfrowywania. Prosty przykład poniżej:
Ustalamy klucz symetryczny, który wykorzystamy do stworzenia szyfrogramu. W naszym przypadku niezwykle trudny do odgadnięcia klucz o nazwie: „KLUCZ”. Sekwencją będzie kolejność liter w naszym kluczu.
Wypełniamy tabelkę, gdzie każdy rząd ma długość znaków naszego klucza. Wpisujemy jawny tekst w kolejne miejsca w tabeli.
Generujemy szyfrogram, odczytując po kolei znaki w kolumnach, których kolejność została wyznaczona kolejność alfabetyczną liter w kluczu, et viola…. czy jakoś tak. Mamy szyfrogram. „PEOBESECTZZWIN*”
Inne ciekawe algorytmy transpozycyjne, również znajdziecie z CyberChef.
Problem dystrybucji kluczy
Algorytmy symetryczne używają tego samego klucza do szyfrowania i dokładnie tego samego klucza do deszyfrowania. Stwarza to ogromny problem. Jeśli wysyłasz komuś szyfrogram, musisz również wysłać mu klucz symetryczny niezbędny do odszyfrowania szyfrogramu. Nie można po prostu wysłać komuś szyfrogramu e-mailem i dołączyć do niego klucza, ponieważ każdy, kto przechwyci wiadomość e-mail, będzie w stanie łatwo odszyfrować szyfrogram, ponieważ będzie miał klucz.
Jak więc rozwiązać problem dystrybucji klucza symetrycznego? Skąd mam pewność, że ktoś nie podsłuchuje właśnie kanału którym przesyłam ten klucz? Podyktujesz go przez telefon? Wyślesz smsem, a możne pocztą? Może lepiej gołębiem pocztowym?
Problem dystrybucji kluczy symetrycznych to problem, z którym mamy do czynienia od setek lub nawet tysięcy lat w kryptografii, ale jest i na to sposób: Algorytmy asymetryczne… ale o tym w kolejnej części.
Podsumowanie
Mam nadzieję, że było ciekawie. Nie sposób tez poruszyć wszystkich w formie artykułu, ale jeśli to czytasz, to znaczy, że nie było tak źle. Przyswojenie wiedzy o kryptografii może być wyzwaniem, dlatego też będę się ja starał serwować w zjadliwych porcjach. Algorytmy asymetryczne są równie ciekawe i potrafią o wiele więcej, na przykład umożliwić nam osiągnięcie autentyczności i niezaprzeczalności. W kolejnej odsłonie zagłębimy się w ten w ich świat. A tymczasem, dziękuję za uwagę i zapraszam do śledzenia naszego bloga oraz SM.
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.