Wstęp do Informatyki - Wykład 13 Bezpieczeństwo danych - GPG
Bezpieczeństwo danych i szyfrowanie W morzu danych tworzonych przez ludzi wyróżnić możemy dane poufne. Są to na przykład: Imiona i nazwiska osób Dane teleadresowe Hasła dostępowe Wyciągi bankowe Dokumentacja finansowa Plany strategii handlowej Dane militarne (sprawozdawcze, wywiadowcze)
Bezpieczeństwo danych i szyfrowanie Niezwykle ważne jest zabezpieczenie danych w trakcie ich przesyłania Kryptologia to dziedzina wiedzy o przekazywaniu informacji w taki sposób, aby uniemożliwić osobom niepowołanym dostęp do niej. Kryptologia to nie tylko szyfrowanie i deszyfrowanie, ale projektowanie kompletnych protokołów kryptograficznych wymiany informacji
Kryptologia Kryptoanaliza - Kryptografia - przełamywanie zabezpieczeń utajnianie informacji Kryptoanaliza - przełamywanie zabezpieczeń
Alice Bob Wiadomość Szyfrogram Mallet (Mallory) Cześć Bob! KnKh7syd8& Szyfrowanie Deszyfrowanie Wiadomość Szyfrogram Mallet (Mallory)
Proste algorytmy szyfrujące Jednym z pierwszych algorytmów szyfrowania jest tzw. Szyfr Cezara. Został on nazwany na cześć Juliusza Cezara, który w ten sposób szyfrował swoją korespondencję. Szyfr zamienia litery wiadomości na znajdujące się o 3 miejsca dalej w alfabecie.
Szyfr Cezara źródło: tydzienszyfrow.pl
Proste algorytmy szyfrujące Uogólnieniem tego szyfru jest tzw. szyfr przesuwający, który zamienia litery na znajdujące się k miejsc dalej w alfabecie. Wówczas, do deszyfrowania szyfrogramu potrzebna jest znajomość wartości k. Wartość ta nazywana jest kluczem. Dobre algorytmy szyfrujące opierają bezpieczeństwo informacji właśnie na bezpieczeństwie klucza.
Proste algorytmy szyfrujące Niestety, Szyfr Cezara oraz szyfr przesuwający są bardzo łatwe do złamania na nowoczesnych komputerach (jak?)
RSA Bardzo dobrym algorytmem kryptograficznym, stosowanym powszechnie w wielu systemach informatycznych, jest RSA. Algorytm został opracowany w 1977 roku przez: Rona Rivesta Adi Shamira Leonarda Adlemana Algorytm ten opiera swoje działanie na tzw. kluczu asymetrycznym. Oznacza to, iż do szyfrowania używany jest jeden klucz, a do deszyfrowania - inny.
RSA Jak to możliwe? RSA opiera się na szeregu twierdzeń z algebry i teorii liczb. Dzięki nim, algorytmy szyfrowania i deszyfrowania są efektywne obliczeniowo, natomiast ich złamanie byłoby bardzo długotrwałe, nawet na najnowocześniejszych i najpotężniejszych komputerach. Złamanie RSA wymaga bowiem przeprowadzenia faktoryzacji (rozkładu na czynniki pierwsze) ogromnej liczby, będącej iloczynem dwóch bardzo dużych liczb pierwszych.
RSA Aby korzystać z RSA, musimy wygenerować sobie parę kluczy - jeden klucz służy do szyfrowania, a drugi do deszyfrowania. Klucz służący do szyfrowania nie jest tajemnicą - jest to tzw. klucz publiczny. Podajemy go do każdemu, kto chce wysłać do nas wiadomość. Prosimy, aby wszystkie wiadomości nadawane do nas były szyfrowane tym kluczem. My zatrzymujemy w tajemnicy klucz służący do deszyfrowania - klucz prywatny. Przy użyciu klucza prywatnego deszyfrujemy wiadomości nadane do nas.
RSA Ze względu na specyfikę RSA, nie ma możliwości obliczenia klucza prywatnego na podstawie klucza publicznego. Można jednak, w niektórych przypadkach, odgadnąć klucz przez analizę wiadomości i klucza publicznego (“known plaintext attack”)
GPG PGP (Pretty Good Privacy) - oprogramowanie rozwijane przez prywatną firmę od 1991, obsługujące wiele algorytmów szyfrowania (w tym RSA) OpenPGP - standard opracowany przez społeczność internetową GPG (GNU Privacy Guard) - oprogramowanie rozwijane na licencji GPL
GPG Bardzo ciekawy artykuł na temat GPG i RSA: Alan Eliasen “GPG Tutorial” (https://futureboy.us/pgp.html)
GPG - generowanie klucza Aby wygenerować swój klucz publiczny i prywatny, wydajemy polecenie: gpg --gen-key Używamy wartości domyślnych. Podajemy swoje imię, nazwisko oraz e-mail. Klucz zabezpieczamy hasłem.
GPG - generowanie klucza Klucz zostaje wygenerowany na naszym lokalnym komputerze. Wbrew pozorom, klucz nie jest w żaden sposób powiązany z serwerem pocztowym, na którym działa nasz e-mail. E-mail jest po prostu bardzo dobrym identyfikatorem. Klucz można wyeksportować do pliku: gpg --armor --export your@mail.com > your_public_key.gpg
GPG - serwery i weryfikacja kluczy W celu ułatwienia wymieniania kluczy publicznych powstały serwery kluczy. Podczas wymiany kluczy należy je zweryfikować! Wymiana kluczy publicznych to najsłabszy element RSA!
GPG - importowanie kluczy Otrzymany w pliku klucz publiczny osoby, do której chcemy wysyłać wiadomości, należy zaimportować: gpg --import public_key.gpg Wszystkie zaimportowane klucze możemy wylistować: gpg --list-keys
GPG - szyfrowanie i deszyfrowanie Aby zaszyfrować wiadomość dla nadawcy: gpg --encrypt --armor -r recipient@example.com list.txt Deszyfrowanie wiadomości naszym kluczem: gpg list.txt.asc
Dziękuję za uwagę!