Spis treści: Czym jest szyfrowanie Po co nam szyfrowanie Szyfrowanie symetryczne Szyfrowanie asymetryczne Szyfrowanie DES Szyfrowanie 3DES Szyfrowanie IDEA Szyfrowanie RSA Podpis cyfrowy Szyfrowanie MD5 Szyfrowanie ruchu sieciowego (SSSL,TLS)
Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.
Dane szyfrujemy gdy: Mamy coś do ukrycia Nie chcemy aby osoby postronne miały dostęp do naszych danych Aby zapewnić sobie anonimowość
Szyfrowanie symetryczne
Nadawca i odbiorca używają tego samego klucza, czyli każdy kto posiada klucz może zaszyfrować i odszyfrować dane, więc to szyfrowanie będzie skuteczne tylko kiedy ten klucz nie wpadnie w niepowołane ręce.
Nadawca przekazuje odbiorcy (lub odwrotnie) klucz prywatny przez bezpieczny kanał. Nadawca szyfruje wiadomość za pomocą klucza prywatnego. Szyfrowania odbywa się za pomocą specjalnego algorytmy (szyfru) symetrycznego który używa klucza prywatnego. Do szyfrów symetrycznych zaliczamy takie algorytmy jak DES, AES, Blowfish, Triple DES, Twofish, Serpent, RC4, RC5. Zaszyfrowana wiadomość zostaje wysłana to odbiorcy. Odbiorca przy pomocy klucza prywatnego odszyfrowuje wiadomość.
DES DES (ang. Data Encryption Standard) symetryczny szyfr blokowy zaprojektowany w 1975 roku przez IBM. Od kilku lat uznawany jest za algorytm niezapewniający odpowiedniego bezpieczeństwa, głównie ze względu na niewielką długość klucza, która sprawia, że jest bardzo podatny na atak siłowy. Długość klucza 56 (+8 bitów parzystości)
Algorytm DES jest szyfrem blokowym z blokami o długości 64 bitów. Do szyfrowania i deszyfrowania danych wykorzystywanych jest 56 bitów klucza, który zapisany jest w postaci 64 bitowego ciągu, w którym co 8 bit jest bitem kontrolnym i może służyć do kontroli parzystości. Kilka z kluczy uważanych jest za klucze słabe oraz klucze półsłabe.
Funkcja f algorytmu
Jak działa algorytm? Permutacja początkowa Rozdzielenie bloku wejsciowego na dwie 32 bitowe części Wykonanie 16 cykli tych samych operacji zwanych funkcjami Feistela,podczas których dane łączone są z kluczem Po wykonaniu funkcji prawa i lewa strona łączona jest w 64 bitowy blok Dokonywana jest permutacja końcowa
3DES 3DES to algorytm szyfrowania symetrycznego polegający na trzykrotnym przetworzeniu wiadomości algorytmem DES: szyfrujemy pierwszym kluczem deszyfrujemy drugim kluczem szyfrujemy trzecim kluczem Długość klucza wynosi 168 bitów
IDEA International Data Encryption Algorithm szyfr blokowy, stworzony w 1990, operujący na 64-bitowych blokach wiadomości i wykorzystujący do szyfrowania 128-bitowy klucz.
Opis algorytmu IDEA wykorzystuje ten sam algorytm do procesu szyfrowania i deszyfrowania wiadomości. Tekst jawny szyfrowany jest z wykorzystaniem mieszania oraz rozpraszania. Operacje mieszania wykorzystywane w szyfrze to: Suma modulo 2 - oznaczone na schemacie blokowym jako Dodawanie modulo 2^16 - oznaczone Mnożenie modulo 2^16+1 (które jest liczbą pierwszą), przy czym liczba 0 jest traktowana jako 2^16 - oznaczone.
Szyfrowanie asymetryczne Inaczej nazywane kryptografią klucza publicznego, to rodzaj szyfrowania, w którym używa się zestawów dwu lub więcej powiązanych ze sobą kluczy, umożliwiających wykonywanie różnych czynności kryptograficznych. Jeden z kluczy może być udostępniony publicznie bez utraty bezpieczeństwa danych zabezpieczanych tym kryptosystemem
Najważniejsze zastosowania kryptografii asymetrycznej szyfrowanie i podpisy cyfrowe zakładają istnienie 2 kluczy prywatnego i publicznego, przy czym klucza prywatnego nie da się łatwo odtworzyć na podstawie publicznego. W niektórych innych zastosowaniach kluczy może być więcej
Krok 1: Krystyna wysyła do Jędrzeja swój klucz publiczny
Krok 2 i 3: Jędrzej szyfruje wiadomość kluczem publicznym Krystyny, która następnie otrzymuje zaszyfrowaną wiadomość i rozszyfrowuje ją kluczem prywatnym
RSA Jeden z pierwszych i obecnie najpopularniejszych asymetrycznych algorytmów kryptograficznych z kluczem publicznym, zaprojektowany w 1977. Pierwszy algorytm, który może być stosowany zarówno do szyfrowania jak i do podpisów cyfrowych. Bezpieczeństwo szyfrowania opiera się na trudności faktoryzacji dużych liczb złożonych.
Generowanie kluczy Wybieramy losowo dwie duże liczby pierwsze p i q Obliczamy wartość n = pq Obliczamy wartość funkcji Eulera dla n: φ(n)=(p-1)(q-1) Wybieramy liczbę e (1 < e < φ(n)) względnie pierwszą z φ(n) Znajdujemy liczbę d, gdzie jej różnica z odwrotnością liczby e jest podzielna przez φ(n) : d e 1 (mod φ(n)) Ta liczba może być też prościej określona wzorem: d e 1 (mod φ(n)) Klucz publiczny jest definiowany jako para liczb (n, e), natomiast kluczem prywatnym jest para (n, d).
Podpis cyfrowy Strona uwierzytelniająca wylicza skrót (ang. hash) podpisywanej wiadomości. Następnie szyfruje ten skrót swoim kluczem prywatnym i jako podpis cyfrowy dołącza do oryginalnej wiadomości. Dowolna osoba posiadająca klucz publiczny może sprawdzić autentyczność podpisu, poprzez odszyfrowanie skrótu za pomocą klucza publicznego nadawcy i porównanie go z własnoręcznie wyliczonym na podstawie wiadomości.
MD5 Message-Digest algorithm 5 - algorytm szyfrujący będący popularną kryptograficzna funkcją skrótu, która z ciągu danych o dowolnej długości generuje 128-bitowy skrót. Nie jest symetryczny ani asymetryczny.
Algorytm Doklejamy do wiadomości wejściowej bit o wartości 1 Doklejamy tyle zer ile trzeba żeby ciąg składał się z 512-bitowych bloków, i ostatniego niepełnego - 448-bitowego Doklejamy 64-bitowy (zaczynając od najmniej znaczącego bitu) licznik oznaczający rozmiar wiadomości. W ten sposób otrzymujemy wiadomość złożoną z 512-bitowych fragmentów. Ustawiamy stan początkowy na 0123456789abcdeffedcba9876543210 Uruchamiamy na każdym bloku (jest przynajmniej jeden blok nawet dla pustego wejścia) funkcję zmieniającą stan Po przetworzeniu ostatniego bloku zwracamy stan jako obliczony skrót wiadomości
TLS ang. Transport Layer Security przyjęte jako standard w Internecie rozwinięcie protokołu SSL (ang. Secure Socket Layer). TLS zapewnia poufność i integralność transmisji danych, a także uwierzytelnienie serwera, a niekiedy również klienta. Opiera się na szyfrowaniu asymetrycznym oraz certyfikatach X.509.
Wersje protokołu SSL 1 wersja miała poważną dziurę w bezpieczeństwie. Procedury uzgadniania szyfru nie były zabezpieczone, więc atakujący mógł wymusić używanie najsłabszego szyfru obsługiwanego przez komunikujących się, ze złamaniem którego mógł sobie poradzić znacznie łatwiej niż z szyfrem, który strony wybrałyby normalnie. SSL 2 wersja zmienia procedurę negocjacyjną. SSL 3 popularna wersja, obecnie wypierana przez TLS 1.0. TLS 1.0 rozwinięcie SSL 3 opisane w RFC 2246. TLS 1.1 opisana w RFC 4346, zalecana przez IETF jako standard i coraz częściej używana. Wyjaśnia ona pewne niejednoznaczności i dodaje nowe zalecenia wynikające z praktyki użycia opisano to w RFC 4366, RFC 4680 i RFC 4681. TLS 1.2 opisana w RFC 5246 i oparta o wcześniejszą wersję, czyli TLS 1.1.
Algorytmy SSL nie jest żadnym nowym algorytmem szyfrującym. To ustandaryzowany zestaw wcześniej znanych algorytmów, technik i schematów używanych do zapewnienia bezpieczeństwa. Wykorzystuje on algorytmy szyfrowania: Symetryczne i asymetryczne
SSL jest najczęściej kojarzony z protokołem HTTP (HTTPS), ale może służyć do zabezpieczania wielu innych protokołów, m.in.: Telnet, SMTP, POP, IMAP czy FTP, gdyż protokoły te same w sobie nie zapewniają szyfrowania transmisji. SSL składa się z dwóch podprotokołów, gdzie SSL Handshake, SSL Alert Protocol i SSL Change Cipher stanowią pierwszy podprotokół natomiast SSL Record Protocol stanowi osobny podprotokół SSL: SSL Handshake definiuje metody negocjowania parametrów bezpiecznej sesji, czyli algorytmów szyfrowania danych, algorytmów uwierzytelniania i integralności informacji SSL Change Cipher protokół zmiany specyfikacji szyfru SSL SSL Alert Protocol protokół alarmowy SSL
Długość klucza Krytycznym parametrem określającym siłę szyfrowania SSL jest długość użytych kluczy. Im dłuższy klucz, tym trudniej jest go złamać, a przez to odszyfrować transmisję. Dla kluczy asymetrycznych, zgodnie z zaleceniami organizacji NIST, długością sugerowaną jest obecnie 2048 bitów. Powszechnie używane są wyrażenia SSL 128 bitów oraz SSL 40 bitów określające długość użytego klucza symetrycznego.