8. MATEMATYCZNE PODSTAWY ALGORYTMÓW KRYPTOGRAFICZNYCH

Slides:



Advertisements
Podobne prezentacje
IDENTYFIKACJA UŻYTKOWNIKA W SIECI INTERNET
Advertisements

Funkcje tworzące są wygodnym narzędziem przy badaniu zmiennych losowych o wartościach całkowitych nieujemnych. Funkcje tworzące pierwszy raz badał de.
Analiza współzależności zjawisk
Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.
Szyfrowanie symetryczne 1
dr A Kwiatkowska Instytut Informatyki
KRYPTOGRAFIA A B C D E F G H I J K L Ł M N O P R S T U W X Y Z
KRYPTOLOGIA =KRYPTOGRAFIA+KRYPTOANALIZA
Badania operacyjne. Wykład 1
Badania operacyjne. Wykład 2
Podstawy kryptografii
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
Czyli czym się różni bit od qubitu
Liczby Pierwsze - algorytmy
Metody ataku na algorytmy kryptograficzne oparte na informacjach z ulotu elektromagnetycznego Robert Borzęcki.
Macierze Maria Guzik.
SZYFROWANIE DANYCH Kubas Andrzej Szlenk Marcin.
Kryptografia i kryptoanaliza
Magistrala & mostki PN/PD
Kryptografia – elementarz cześć I
Zapis informacji Dr Anna Kwiatkowska.
Techniczne aspekty realizacji podpisu cyfrowego z zastosowaniem algorytmu RSA mgr inż. Wojciech Psik Zespół Szkół Elektronicznych i Ogólnokształcących.
Ochrona danych wykład 2.
Ochrona danych wykład 3.
Dążenie do odkrywania tajemnic tkwi głęboko w naturze człowieka, a nadzieja dotarcia tam, dokąd inni nie dotarli, pociąga umysły najmniej nawet skłonne.
Metody Symulacyjne w Telekomunikacji (MEST) Wykład 4: Generowanie zdarzeń  Dr inż. Halina Tarasiuk p. 337, tnt.tele.pw.edu.pl.
Temat 3: Co to znaczy, że komputer ma pamięć? Czy można ją zmierzyć?
Matematyka.
Podstawy programowania
opracowanie: Agata Idczak
MATEMATYCZNE METODY SZYFROWANIA
Elementy Rachunku Prawdopodobieństwa i Statystyki
BADANIE STATYSTYCZNE Badanie statystyczne to proces pozyskiwania danych na temat rozkładu cechy statystycznej w populacji. Badanie może mieć charakter:
RODZAJE TRANSMISJI PRZESYŁANIE INFORMACJI W MODELU WARSTWOWYM
Elementy Rachunku Prawdopodobieństwa i Statystyki
Zastosowania ciągów.
ZASTOSOWANIE KRYPTOGRAFII W SZYFROWANIU DANYCH
Projekt AS KOMPETENCJI jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego Program Operacyjny Kapitał Ludzki.
Wybrane zagadnienia relacyjnych baz danych
Matematyka i system dwójkowy
Systemy operacyjne i sieci komputerowe
ZAPIS BLOKOWY ALGORYTMÓW
KARTY DŹWIĘKOWE.
Szyfrowanie i deszyfrowanie
Excel Filtrowanie Funkcje bazodanowe
Andrzej Majkowski informatyka + 1.
Wymiana podstawy oraz sprawdzanie autentyczności partnera. Algorytm wymiany małego klucza używaniem metody Diffiego - Hellmana.
SZYFROWANIE Kacper Nowak.
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
1 Kryptografia-0 -zachowanie informacji dla osób wtajemniczonych -mimo że włamujący się ma dostęp do informacji zaszyfrowanej -mimo że włamujący się zna.
Ruch jednowymiarowy Ruch - zmiana położenia jednych ciał względem innych, które nazywamy układem odniesienia. Uwaga: to samo ciało może poruszać się względem.
Warstwowe sieci jednokierunkowe – perceptrony wielowarstwowe
Model warstwowy ISO-OSI
K ODY ZMIENNEJ DŁUGOŚCI Alfabet Morsa Kody Huffmana.
9. IMPLEMENTACJE ALGORYTMÓW KRYPTOGRAFICZNYCH
7. PODSTAWY KRYPTOGRAFII
Przeprowadzenie badań niewyczerpujących, (częściowych – prowadzonych na podstawie próby losowej), nie daje podstaw do formułowania stanowczych stwierdzeń.
Liczbami naturalnymi nazywamy liczby 0,1,2,3,..., 127,... Liczby naturalne poznaliśmy już wcześniej; służą one do liczenia przedmiotów. Zbiór liczb.
PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES
SIECI KOMPUTEROWE WYKŁAD 8. BEZPIECZEŃSTWO SIECI
SIECI KOMPUTEROWE WYKŁAD 8. BEZPIECZEŃSTWO SIECI
Podstawy Informatyki.
Wstęp do Informatyki - Wykład 6
EWOLUCJA SIŁY SZYFRÓW ABCDEFGHIJKLMNOPQRSTUVWXYZ
Liczby pierwsze: szukanie, rozmieszczenie, zastosowanie, ciekawostki. Liczby pierwsze: szukanie, rozmieszczenie, zastosowanie, ciekawostki. Kinga Cichoń.
ALGORYTMY I STRUKTURY DANYCH
Kryptografia-0 -zachowanie informacji dla osób wtajemniczonych
Liczby pierwsze oraz kryptologia
SHA1 – Secure Hash Algorithm
Zapis prezentacji:

8. MATEMATYCZNE PODSTAWY ALGORYTMÓW KRYPTOGRAFICZNYCH Szyfrowanie polega na zamianie ciągu znaków (w przypadku sieci komputerowych zapisanego w postaci ciągu bitów) na inny ciąg znaków. Funkcja zamiany jest niezależna od wyższych jednostek syntaktycznych (słów, zdań) używanego języka. Zamianę całych słów na odpowiadające im (inne) ciągi znaków nazywamy kodowaniem. W dalszym ciągu będziemy zajmowali się wyłącznie metodami szyfrowania. Podstawową cechą dobrego algorytmu szyfrowania jest to, że tworzy on szyfrogramy w możliwie dużym stopniu przypominające ciągi losowe ( rozkłady prawdopodobieństwa wystąpienia zarówno pojedynczych znaków, jak i ich serii, są możliwie równomierne). Takie szyfrogramy nie poddają się analizie statystycznej (bazującej na znajomości rozkładów statystycznych w języku naturalnym). Istotnym elementem kryptografii jest umiejętność generowania ciągów losowych (lub pseudolosowych o wystarczająco dobrych własnościach).

Algorytm z kluczem jednorazowym Algorytmem z kluczem jednorazowym nazywany jest sposób szyfrowania, gdzie do celu zaszyfrowania / odszyfrowania pojedynczego komunikatu jest stosowany za każdym razem inny klucz (o długości równej długości szyfrowanego komunikatu). Przykład: Komunikat: 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1 0 Klucz: 0 1 0 0 1 1 1 0 1 0 0 0 1 1 0 1 Szyfrogram (suma modulo 2): 1 1 0 1 0 0 1 1 1 1 1 0 1 1 1 1 Takie szyfry są stosowane do przesyłania szczególnie tajnych, dość krótkich informacji. Klucze jednorazowe po użyciu powinny być zniszczone zarówno po stronie nadawcy, jak i po stronie odbiorcy (ich wpadnięcie w ręce przeciwnika może spowodować nie tylko odczytanie zaszyfrowanych nimi komunikatów, ale również odkrycie ogólnej zasady działania generatora liczb pseudolosowych, co z kolei umożliwi odczytywanie wszystkich kolejnych komunikatów).

Zalety: - jest szyfrem idealnym (nie do złamania), jeśli generowane klucze jednorazowe są wystarczająco losowe; - przekłamanie (zmiana wartości) pojedynczych bitów w szyfrogramie powoduje tylko błędne odczytanie odpowiadających im bitów w komunikacie. Wady: - trzeba generować dużo długich kluczy (w przypadku ożywionej komunikacji); - klucze trzeba przekazywać bezpośrednio, trzymać w ukryciu i niszczyć po jednokrotnym użyciu; - utracenie pojedynczego bitu w szyfrogramie powoduje błędne odczytanie całego dalszego ciągu komunikatu. Przekazywanie kluczy jednorazowych bywa czasem rozwiązywane przez ukrycie ich wewnątrz dużych plików (na przykład w pliku z filmem o objętości kilku GB lub pliku z dużym programem w postaci binarnej).

Szyfry podstawieniowe Szyfry podstawieniowe były używane już od starożytności (na przykład szyfr Cezara). Polegają na zastąpieniu każdego znaku (lub ciągu znaków) innym znakiem (lub ciągiem znaków). Przykład: Znaki komunikatu: A B C D E F G H ..... X Y Z Znaki szyfrogramu: D E F G H I J K ..... A B C Zależność znaków szyfrogramu od znaków komunikatu może być znacznie mniej oczywista, niż w powyższym przykładzie – osoby posługujące się tego rodzaju szyframi mogą dysponować odpowiednimi tabelami do szyfrowania i deszyfrowania (lub programami komputerowymi). Wyróżniane są cztery typy szyfrów podstawieniowych: - prosty szyfr podstawieniowy; - homofoniczny szyfr podstawieniowy; - wieloalfabetowy szyfr podstawieniowy; - poligramowy szyfr podstawieniowy.

Szyfr prosty (był użyty w powyższym przykładzie) opiera się na dowolnym, wzajemnie jednoznacznym odwzorowaniu alfabetu komunikatów na inny (lub ten sam) alfabet. Szyfr homofoniczny jest podobny do szyfru prostego, ale każdemu znakowi w alfabecie komunikatów odpowiada kilka alternatywnych znaków (na przykład używanych cyklicznie). Szyfr wieloalfabetowy również jest podobny do szyfru prostego, ale stosuje wiele tabel odwzorowań alfabetu komunikatów – do pierwszego znaku komunikatu jest stosowana pierwsza tabela, do drugiego – druga tabela itd., po użyciu wszystkich tabel ponownie jest używana pierwsza tabela itd. Szyfr poligramowy to taki szyfr, w którym zastępuje się nie pojedyncze znaki komunikatu, ale całe ich grupy – w najprostszym przypadku każda para sąsiadujących ze sobą znaków w komunikacie jest zastępowana inną parą znaków (zgodnie z podaną tabelą). Żaden z powyższych rodzajów szyfrów nie ma istotnych (poza „zabawowymi”) zastosowań w obecnych czasach z powodu dużej podatności na kryptoanalizę przy użyciu statystycznych własności języka komunikatów.

Szyfry przestawieniowe Szyfrogram utworzony przy użyciu szyfru przestawieniowego jest permutacją (jedną z wielu możliwych) ciągu znaków szyfrowanego komunikatu. Ponieważ komunikaty mogą mieć zmienną długość, potrzebny jest (dość prosty, ze względu na wydajność szyfrowania i deszyfrowania) sposób zdefiniowania takiej permutacji. Jednym z najczęściej stosowanych sposobów jest przestawianie kolumn liter w tekście (według ustalonego schematu). Przy ustalonej liczbie kolumn n tekst komunikatu jest wypisywany kolejnymi wierszami o długości n, na przykład (dla n = 4): T O J O J T E S T S T E T E K S Następnie kolumny są E S K T Ostateczny szyfrogram T K O przestawiane, np. 2, 4, 3, 1: O K T jest zapisywany kolumnami: M U N I U I N M OSE UAJ SOIU TKKNTTETTMK K A T U A U T K

Szyfry przestawieniowe w swojej „czystej postaci” również są dość łatwe do złamania w obecnych czasach. Oba rodzaje omówionych szyfrów, zarówno podstawieniowe, jak i przestawieniowe, występują jednak nadal jako elementy szyfrów złożonych (które można postrzegać jako złożenie wielu prostszych funkcji szyfrujących). Uwaga Podstawienia i przestawienia mogą być realizowane programowo, ale mogą też być (łatwo) realizowane sprzętowo (przez pojedynczy układ scalony lub kilka prostych elementów połączonych kaskadowo), co zapewnia większą prędkość działania. Jest to istotne na przykład w przypadku transmisji w czasie rzeczywistym (szyfrowane kanały telewizyjne itp.). Przykładem maszyny mechanicznej realizującej wiele podstawień i przestawień była maszyna Enigma (stosowana w czasie ostatniej wojny). Była rodzajem tak zwanej maszyny rotorowej. Jej szyfr został złamany przez matematyków polskich i angielskich.

Szyfry blokowe i strumieniowe Szyfrowanie blokowe polega na podziale tekstu jawnego na bloki jednakowej wielkości i szyfrowaniu każdego bloku oddzielnie. Typowa wielkość bloku to 64 bity (ale bywają też większe). Ostatni, zwykle niepełny blok powinien być dopełniony w sposób sprawiający wrażenie losowego. Tekst jawny: 1 2 3 4 5 Klucz Szyfrogram: 1 2 3 4 5 Jeśli fragment szyfrogramu odpowiadający pojedynczemu blokowi zależy jedynie od treści tego bloku oraz od użytego klucza, tryb szyfrowania nazywany jest trybem elektronicznej książki kodowej (electronic codebook, ECB) i taki szyfr jest dość łatwy do złamania. Zaletą (i zarazem wadą) trybu ECB jest to, że można odszyfrować pojedyncze fragmenty szyfrogramu nie znając pozostałych (na przykład w sytuacji wystąpienia zakłóceń w linii przesyłowej).

Jednym z możliwych sposobów na wzmocnienie szyfru blokowego jest uzależnienie zawartości bloku szyfrogramu nie tylko od zawartości bloku szyfrowanego, ale też od zawartości innych bloków (tak zwane wiązanie bloków). Przykład: i-ty blok szyfrogramu uzyskujemy przez zaszyfrowanie sumy modulo 2 i-tego bloku tekstu jawnego z (i  1)-szym blokiem szyfrogramu. Tekst jawny: 1 2 3 4 5 Wektor inicjujący Klucz Szyfrogram: 1 2 3 4 5 Wektor inicjujący (o wielkości jednego bloku) powinien być ciągiem bitów generowanym losowo oddzielnie dla każdego wysyłanego komunikatu (ale może być wysłany jawnym tekstem do odbiorcy). Zaletą (i wadą) powyższego sposobu szyfrowania jest uzależnienie każdego kolejnego bloku szyfrogramu od wszystkich wcześniej zaszyfrowanych bloków (jak dla szyfru strumieniowego).

Szyfrowanie strumieniowe w najprostszym przypadku polega na generowaniu po stronie nadawcy i po stronie odbiorcy takiego samego pseudolosowego ciągu bitów i używania go w charakterze klucza jednokrotnego (o zmiennej długości). NADAWCA ODBIORCA Klucz Generator Klucz Generator Tekst jawny Szyfrogram Tekst jawny Generatory po obu stronach powinny być dokładnie zsynchronizowane (zgubienie pojedynczego bitu uniemożliwia dalszy odbiór wiadomości). Klucze powinny być zmieniane co mniejszą liczbę bitów, niż wynosi cykl generatora pseudolosowego (liczba bitów, po której generowany ciąg zaczyna powtarzać się). Bardzo istotny wpływ na bezpieczeństwo ma jakość użytego generatora. Szyfry strumieniowe najlepiej nadają się do wysyłania długich komunikatów (albo całych ciągów komunikatów) w niezawodnych liniach transmisyjnych (czyli do szyfrowania ruchu w linii). Wymagają jednak okresowej wymiany kluczy (i związanej z tym ponownej synchronizacji linii).

Szyfrowanie z kluczem publicznym Idea szyfrowania z kluczem publicznym bazuje na istnieniu funkcji matematycznych, które są łatwe do obliczenia, ale co do których panuje przekonanie, że ich funkcje odwrotne są bardzo trudne do obliczenia. Przy odpowiednio dużej długości klucza obliczenie funkcji odwrotnej staje się praktycznie niemożliwe. Jest to prawdziwe w odniesieniu do obecnego stanu wiedzy matematycznej oraz techniki komputerowej, natomiast nie ma całkowitej gwarancji, że ten stan rzeczy nie zmieni się w przyszłości. Przykład (algorytm Diffi’ego – Hellmana uzgadniania współdzielonego klucza tajnego) Dane są dwie duże (co najmniej 512-bitowe) liczby naturalne n, g takie, że 1 < g < n, znane obu stronom procesu komunikacji (mogą być uzgodnione jawnie). Zalecane jest, żeby n oraz (n – 1)/2 były liczbami pierwszymi. Obie strony losują po jednej dużej liczbie całkowitej (oznaczamy je odpowiednio x, y), obliczają odpowiednio X = gx mod n oraz Y = gy mod n , a następnie wymieniają się (jawnie) tymi wartościami. Pierwsza ze stron oblicza Yx mod n, a druga – Xy mod n. Obie obliczone wartości są równe (wynoszą gxy mod n) i mogą służyć jako współdzielony tajny klucz. Uwaga: słabością tego algorytmu (stosowanego oddzielnie) jest brak uwierzytelnienia.

Generowanie liczb losowych i pseudolosowych Definicja pojęcia losowości jest problemem natury filozoficznej. Ogólnie chodzi tu o jak największą nieprzewidywalność wyniku losowania. Dobry generator losowy powinien posiadać następujące własności: - rozkłady prawdopodobieństwa wystąpienia zarówno pojedynczych bitów, jak i serii bitów o dowolnych długościach powinny być równomierne (czyli w generowanym ciągu liczb losowych, w miarę, jak długość tego ciągu rośnie, procentowe zawartości bitów 0 i 1 powinny dążyć do 50%, procentowe zawartości serii 00, 01, 10, 11 powinny dążyć do 25% itd.); - nie powinno być technicznie możliwe odtworzenie początkowych warunków pracy generatora tak dokładnie, aby zaczął generować taki sam ciąg liczb, jak poprzednio. Prawdziwe generatory losowe opierają swoje działanie na zjawiskach fizycznych, które dla człowieka są nieprzewidywalne, na przykład: - szumy cieplne w elementach półprzewodnikowych; - dokładna wartość ładunków elektrycznych w kondensatorach; - dokładne czasy dotykania klawiatury komputera przez użytkownika.

Generatory pseudolosowe są algorytmami (wykonywanymi na przykład przez komputer, urządzenie mechaniczne lub człowieka), które mają wystarczająco dobre własności statystyczne, aby trudno było je odróżnić od generatorów losowych. Ponieważ każda realizacja generatora pseudolosowego może być uważana za maszynę skończenie stanową (każdy komputer ma skończony zakres obliczeniowy i skończoną dokładność obliczeń), po pewnym czasie pracy stan generatora musi powtórzyć się i zacznie on generować ten sam ciąg od początku. Długość ciągu wygenerowanego pomiędzy dwoma jednakowymi stanami generatora nazywana jest okresem generatora. Z oczywistych powodów okres generatora pseudolosowego powinien być jak najdłuższy (w praktyce okres rzędu, na przykład, 2128 można z powodzeniem uznać za wystarczający). Przykład (liniowy generator kongruencyjny) Dla ustalonych liczb naturalnych a, b, m, X0 przyjmijmy następujący wzór rekurencyjny określający n-tą liczbę w ciągu pseudolosowym: Xn = (aXn-1 + b) mod m . Wartość X0 jest nazywana zarodkiem generatora pseudolosowego. Powyższy generator generuje ciąg liczb naturalnych z zakresu od 0 do m – 1. Ponieważ okres tego generatora wynosi (w najlepszym przypadku) m, nie ma on praktycznych zastosowań w obecnych czasach.

Generowanie dużych liczb pierwszych Zostało udowodnione, że liczb pierwszych jest nieskończenie wiele. Dla dużych wartości naturalnych N prawdopodobieństwo tego, że losowo wybrana liczba o długości N bitów okaże się liczbą pierwszą, jest rzędu 1 / ln N . O ile sprawdzenie ze stuprocentową pewnością, że duża liczba naturalna (na przykład 400-bitowa) jest liczbą pierwszą, byłoby bardzo czasochłonne (często w praktyce niewykonalne), o tyle istnieją testy pozwalające stwierdzić taki fakt z określonym prawdopodobieństwem (na przykład 50%) w dużo krótszym czasie. W praktyce stosowana jest następująca metoda: dla wylosowanej dużej liczby naturalnej przeprowadzanych jest n niezależnych testów – jeśli wszystkie one dadzą pozytywny wynik, wybrana liczba może być uznana za liczbę pierwszą z prawdopodobieństwem 1 – (1 – p)n, gdzie p jest prawdopodobieństwem słusznego stwierdzenia dla pojedynczego testu. Jeśli, na przykład, p = 0.5, a n = 128, wylosowana liczba jest uznawana za liczbę pierwszą z prawdopodobieństwem 1 – 1 / 2128 (w praktyce zupełnie wystarczającym).