Pozostałe tematy Barbara Przebieracz 04.06.2016
Spis treści 1 2
Podstawowe pojęcia Kryptografia to nauka o metodach przesyłania wiadomości w zakamuflowanej postaci tak, aby tylko adresat mógł odrzucić ten kamuflaż i odczytać wiadomość Tekst jawny to wiadomość, która chcemy przesłać kryptogram lub tekst zaszyfrowany, to wiadomość w zakamuflowanej postaci
Tekst jawny i kryptogram zapisane sa za pomoca pewnego alfabetu składajacego się z pewnej liczby N znaków. Szyfrowanie to proces przekształcania teksu jawnego w zaszyfrowany. Rozszyfrowanie to proces odwrotny. Tekst jawny i kryptogram sa podzielone na jednostki tekstu. Jednostka tekstu może być pojedyńcza litera, para liter (digram), trójka liter (trigram), itd. Przekształcenie szyfrujace jest to funkcja, która każdej jednostce tekstu otwartego przyporzadkowuje jednostkę tekstu zaszyfrowanego. Funkcja f 1 to przekształcenie deszyfrujace. Systemem kryptograficznym nazwiemy zbiory P, C jednostek tekstu jawnego i zaszyfrowanego i funkcje f : P C i f 1 : C P, szyfujac a i deszyfujac a.
Przykłady Alfabet angielski: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 Alfabet angielski ze spacja i ewentualnie innymi znakami specjalnymi: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Przykłady Alfabet angielski: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 Digramy: np. TH 19 26 + 7 = 501 Trigramy: np. THE 19 26 2 + 7 26 + 4
Przykłady Alfabet angielski: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 f przesunięcie f (x) = (x + b) mod 26, f 1 (y) = (y b) mod 26 np. z b = 6 : ILOVEYOU f ORUBKEUA f 1 ILOVEYOU np. na digramach z b = 6 parametr b to Klucz szyfrujacy f (x) = (x + 6) mod(26 26) : IL OV EY OU = 8 26 + 11 14 26 + 21 4 26 + 24 14 26 + 20 = = 219 385 128 384 225 391 134 390 = IR PB FE PA
Przykłady Alfabet angielski: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 f przesunięcie f (x) = (x + b) mod 26, f 1 (y) = (y b) mod 26 np. z b = 6 : ILOVEYOU f ORUBKEUA f 1 ILOVEYOU np. na digramach z b = 6 parametr b to Klucz szyfrujacy f (x) = (x + 6) mod(26 26) : IL OV EY OU = 8 26 + 11 14 26 + 21 4 26 + 24 14 26 + 20 = = 219 385 128 384 225 391 134 390 = IR PB FE PA
Przykłady Alfabet angielski: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 f przesunięcie f (x) = (x + b) mod 26, f 1 (y) = (y b) mod 26 np. z b = 6 : ILOVEYOU f ORUBKEUA f 1 ILOVEYOU np. na digramach z b = 6 parametr b to Klucz szyfrujacy f (x) = (x + 6) mod(26 26) : IL OV EY OU = 8 26 + 11 14 26 + 21 4 26 + 24 14 26 + 20 = = 219 385 128 384 225 391 134 390 = IR PB FE PA
Przykłady Alfabet angielski: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 f przekształcenie afiniczne f (x) = (ax + b) mod 26, zakładamy, że NWD(a, 26) = 1, f 1 (y) = (a 1 y a 1 b) mod 26 dla a = 5, b = 3: IAMTIRED= (8; 0; 12; 19; 8; 17; 4; 3) f (x)=5x+3 (43; 3; 63; 98; 43; 88; 23; 18) mod 26 =RDLURKXS f 1 (y)=21y+15 IAMTIRED
Przykłady Alfabet angielski: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 f przekształcenie afiniczne f (x) = (ax + b) mod 26, zakładamy, że NWD(a, 26) = 1, f 1 (y) = (a 1 y a 1 b) mod 26 dla a = 5, b = 3: IAMTIRED= (8; 0; 12; 19; 8; 17; 4; 3) f (x)=5x+3 (43; 3; 63; 98; 43; 88; 23; 18) mod 26 =RDLURKXS f 1 (y)=21y+15 IAMTIRED
Przykłady Alfabet angielski: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 Powiedzmy, że wiemy, A D, a T U, czyli f (0) = 3, f (19) = 20. { a 0 + b = 3 mod 26 Dostajemy układ równań: a 19 + b = 20 mod 26 { b = 3 Rozwiazujemy, go a 19 = 17 mod 26 Przypomnę rozwiazanie drugiego równania:
Rozwiazujemy 19a = 17 mod 26 Szukamy 19 1 w Z 26, czyli szukamy rozwiazań równania Algorytm Euklidesa: więc 19x + 26y = 1 26 = 19 1 + 7; 19 = 7 3 2; 7 = 2 3 + 1 1 = 7 2 3 = 7 (7 3 19) 3 = 7 ( 8) + 19 3 = = (26 19) ( 8) + 19 3 = 26 ( 8) + 19 11 Zatem 19 1 = 11 w Z 26 Mnożymy stronami równanie przez 11, dostajemy a = 17 11 = 187 = 5 mod 26
Przykłady Alfabet angielski: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 Można też od razu szukać f 1, wiemy, że A f 1 D, a T f 1 U, czyli f 1 (3) = 0, f 1 (20) = 19. { a 3 + b Dostajemy układ równań: = 0 mod 26 a 20 + b = 19 mod 26 { b Rozwiazujemy, go = a 3 a 17 = 19 mod 26 Rozwiazujemy, dostajemy f 1 (y) = 21y + 15.
Algebra liniowa -przypomnienie Jak mnożymy macierze: [ [ a b x1... x k c d y 1... y k [ ax1 + by = 1... ax k + by k cx 1 + dy 1... cx k + dy k Wyznacznik macierzy 2 2: [ a b D = det = ad cb. c d [ a b Macierz odwrotna do macierzy A = c d [ D A 1 = 1 d D 1 b D 1 c D 1 a, to. Mamy AA 1 = A 1 A = [ 1 0 0 1.
Macierze szyfrujace Alfabet angielski ze spacja: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z - 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Szyfrujemy [ tekst KONIEC-TEGO-PODROZDZIALU za pomoca 1 3 macierzy : 5 8 [ [ 1 3 K N E E O P D O D I L = 5 8 O I C T G O R Z Z A U [ 10 2 22 11 3 0 8 24 8 17 5 12 14 8 25 16 0 26 13 26
Macierze szyfrujace Alfabet angielski ze spacja: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z - 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Szyfrujemy [ tekst KONIEC-TEGO-PODROZDZIALU za pomoca 1 3 macierzy : 5 8 [ [ 1 3 10 13 4 26 4 14 15 3 14 3 8 11 = 5 8 14 8 2 19 6 26 14 17 25 25 0 20 [ 10 2 22 11 3 0 8 24 8 17 5 12 14 8 25 16 0 26 13 26
Macierze szyfrujace Alfabet angielski ze spacja: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z - 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Szyfrujemy [ tekst KONIEC-TEGO-PODROZDZIALU za pomoca 1 3 macierzy : 5 8 [ [ 1 3 10 13 4 26 4 14 15 3 14 3 8 11 = 5 8 14 8 2 19 6 26 14 17 25 25 0 20 [ 10 + 3 14 13 + 3 8 10 2 22 11 3 0 8 24 8 5 10 + 8 14 5 13 + 8 8 5 12 14 8 25 16 0 26 13
Macierze szyfrujace Alfabet angielski ze spacja: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z - 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Szyfrujemy [ tekst KONIEC-TEGO-PODROZDZIALU za pomoca 1 3 macierzy : 5 8 [ [ 1 3 10 13 4 26 4 14 15 3 14 3 8 11 = 5 8 14 8 2 19 6 26 14 17 25 25 0 20 [ 25 10 10 2 22 11 3 0 8 24 8 17 0 21 5 12 14 8 25 16 0 26 13 26
[ 1 3 Wyznaczmy macierz odwrotna do A = 5 8 D = 1 8 5 3 = 7 = 20 mod 27. więc A 1 = [ D 1 8 D 1 3 D 1 5 D 1 1 = : [ 22 12 20 23 Obliczamy D 1 : skad 27 = 20 1 + 7; 20 = 7 3 1 1 = 7 3 20 = (27 20) 3 20 = 27 3 20 4 4 = 23 mod 27, więc 20 1 = 23
[ 1 3 Wyznaczmy macierz odwrotna do A = 5 8 D = 1 8 5 3 = 7 = 20 mod 27. więc A 1 = [ D 1 8 D 1 3 D 1 5 D 1 1 = : [ 22 12 20 23 Obliczamy D 1 : skad 27 = 20 1 + 7; 20 = 7 3 1 1 = 7 3 20 = (27 20) 3 20 = 27 3 20 4 4 = 23 mod 27, więc 20 1 = 23
[ 1 3 Wyznaczmy macierz odwrotna do A = 5 8 D = 1 8 5 3 = 7 = 20 mod 27. więc A 1 = [ D 1 8 D 1 3 D 1 5 D 1 1 = : [ 22 12 20 23 Obliczamy D 1 : skad 27 = 20 1 + 7; 20 = 7 3 1 1 = 7 3 20 = (27 20) 3 20 = 27 3 20 4 4 = 23 mod 27, więc 20 1 = 23
[ 1 3 Wyznaczmy macierz odwrotna do A = 5 8 D = 1 8 5 3 = 7 = 20 mod 27. więc A 1 = [ D 1 8 D 1 3 D 1 5 D 1 1 = : [ 22 12 20 23 Obliczamy D 1 : skad 27 = 20 1 + 7; 20 = 7 3 1 1 = 7 3 20 = (27 20) 3 20 = 27 3 20 4 4 = 23 mod 27, więc 20 1 = 23
[ 1 3 Wyznaczmy macierz odwrotna do A = 5 8 D = 1 8 5 3 = 7 = 20 mod 27. więc A 1 = [ D 1 8 D 1 3 D 1 5 D 1 1 = : [ 22 12 20 23 Obliczamy D 1 : skad 27 = 20 1 + 7; 20 = 7 3 1 1 = 7 3 20 = (27 20) 3 20 = 27 3 20 4 4 = 23 mod 27, więc 20 1 = 23
[ 1 3 Wyznaczmy macierz odwrotna do A = 5 8 D = 1 8 5 3 = 7 = 20 mod 27. więc A 1 = [ D 1 8 D 1 3 D 1 5 D 1 1 = : [ 22 12 20 23 Obliczamy D 1 : skad 27 = 20 1 + 7; 20 = 7 3 1 1 = 7 3 20 = (27 20) 3 20 = 27 3 20 4 4 = 23 mod 27, więc 20 1 = 23
[ 1 3 Wyznaczmy macierz odwrotna do A = 5 8 D = 1 8 5 3 = 7 = 20 mod 27. więc A 1 = [ 23 8 23 3 23 5 23 1 = : [ 22 12 20 23 Obliczamy D 1 : skad 27 = 20 1 + 7; 20 = 7 3 1 1 = 7 3 20 = (27 20) 3 20 = 27 3 20 4 4 = 23 mod 27, więc 20 1 = 23
[ 1 3 Wyznaczmy macierz odwrotna do A = 5 8 D = 1 8 5 3 = 7 = 20 mod 27. więc A 1 = [ 23 8 23 3 23 5 23 1 = : [ 22 12 20 23 Obliczamy D 1 : skad 27 = 20 1 + 7; 20 = 7 3 1 1 = 7 3 20 = (27 20) 3 20 = 27 3 20 4 4 = 23 mod 27, więc 20 1 = 23
Alfabet angielski ze spacja: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z - 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Rozszyfrujmy zatem: [ [ 22 12 25 10 10 2 22 11 3 0 8 24 8 17 20 23 0 21 5 12 14 8 25 16 0 26 13 26 = [ 10 13 4 26 4 14 15 3 14 3 8 11 14 8 2 19 6 26 14 17 25 25 0 20
Alfabet angielski ze spacja: A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z - 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Rozszyfrujmy zatem: [ [ 22 12 25 10 10 2 22 11 3 0 8 24 8 17 20 23 0 21 5 12 14 8 25 16 0 26 13 26 = [ K N E E O P D O D I L O I C T G O R Z Z A U
Kryptosystem z kluczem publicznym to system (P, C, f, K K, K D ), gdzie K K i K D sa odpowiednio kluczem kodujacym i dekodujacym, w którym K K jest powszechnie dostępny; K D jest zachowywany w tajemnicy, znajomość K K pozwala na szybkie kodowanie jednostki tekstu, czyli obliczanie f (P) dla P P, znajomość K K nie pozwala (bez znajomości K D ) na szybkie dekodowanie jednostki szyfrogramu, czyli obliczanie f 1 (C) dla C C, znajomość K D daje możliwość szybkiego zdekodowania jednostki szyfrogramu. Szukamy więc funkcji f, która w jedna stronę liczy się relatywnie szybko na podstawie znajomości K K. Natomiast jej odwrotna f 1 jest bardzo trudna do policzenia bez dodatkowej informacji K D.
Kryptosystem RSA Nazwa kryptosystemu pochodzi od pierwszych liter nazwisk jego trzech pomysłodawców: Rivest, Shamir i Adelman. Choć jest to jeden z najstarszych kryptosystemów z kluczem publicznym (wynaleziony w 1977 roku) wciaż jest szeroko stosowany.jedynie długości kluczy rosna wraz ze wzrostem mocy obliczeniowej komputerów.
Opis działania RSA Wybierz losowo dwie bardzo duże różne liczby pierwsze p i q. To jak duże maja być to liczby zależy właśnie od mocy obliczeniowej komputerów. Oczywiście, im większe liczby tym trudniej złamać kod (obliczyć K D ) ale jednocześnie, im większe liczby, tym dłużej trwa proces kodowania i dekodowania wiadomości. To, że liczba ma być wybrana losowo oznacza, że jest uzyskana z pomoca generatora liczb pseudo-losowych. Ale co to oznacza wybrać (pseudo)losowo liczbę pierwsza? Wylosuj odpowiednio duża liczbę m. Jeśli jest ona parzysta to podstaw m := m + 1. Zaaplikuj testy pierwszości ( omówimy je jeszcze w kolejnej części wykładu) do m. Jeśli okaże się złożona podstaw m := m + 2 i tak aż do znalezienia liczby pierwszej.z Twierdzenia o Liczbach Pierwszych wiemy, że częstotliwość występowania liczb pierwszych w pobliżu liczby m wynosi 1 ln m, a więc możemy oczekiwać że po O(lg m) próbach test pierwszości zwróci wynik pozytywny. Poznamy test pierwszości działajacy w czasie O(lg 3 m). A więc oczekiwany czas "wylosowania" liczby pierwszej w pobliżu m wynosi O(lg 4 m). Uwaga: jest to oczekiwany czas działania, a nie maksymalny (pesymistyczny).
Niech n = p q. Wtedy ϕ(n) = ϕ(p) ϕ(q) = (p 1) (q 1). Wybierz losowo e {1, 2, 3,..., ϕ(n) 1} względnie pierwsze z ϕ(n). Niech d {1,..., ϕ(n) 1} będzie takie, że e d 1 mod ϕ(n). Podobnie jak wcześniej szukaliśmy losowo liczb pierwszych teraz możemy szukać liczby e. Zamiast aplikować test pierwszości sprawdzamy algorytmem Euklidesa względna pierwszość z ϕ(n). Kiedy uda nam sie trafić rozszerzony algorytm Euklidesa wyznaczy nam d. Opublikuj klucz publiczny: K K = (n, e) i zachowaj do własnego użytku klucz dekodujacy K D = (n, d).
zbiór jednostek wiadomości to Z n = {0, 1,..., n 1}, funkcja kodujaca: funkcja dekodujaca: f (P) = P e mod n, dla P Z n. f 1 (C) = C d mod n, dla C Z n.
Poprawność tego kryptosystemu Należy sprawdzić, że czyli, że f 1 (f (P)) = P, dla dowolnego P Z n P ed P mod n, dla dowolnego P Z n. Dowód: Ponieważ ed 1 mod ϕ(n) mamy ed = aϕ(n) + 1, dla pewnego a. Rozważmy dwa przypadki. 1. Załóżmy najpierw, że NWD(P, n) = 1. Wtedy z Twierdzenia Eulera dostajemy P ϕ(n) 1 mod n, a zatem P ed = P aϕ(n)+1 P mod n.
Poprawność tego kryptosystemu Należy sprawdzić, że czyli, że f 1 (f (P)) = P, dla dowolnego P Z n P ed P mod n, dla dowolnego P Z n. Dowód: Ponieważ ed 1 mod ϕ(n) mamy ed = aϕ(n) + 1, dla pewnego a. Rozważmy dwa przypadki. 1. Załóżmy najpierw, że NWD(P, n) = 1. Wtedy z Twierdzenia Eulera dostajemy P ϕ(n) 1 mod n, a zatem P ed = P aϕ(n)+1 P mod n.
2.Jeśli zaś NWD(P, n) > 1, to p P lub q P. Załóżmy, bez straty ogólności, że q P, czyli P = bq dla pewnego 0 < b < p, bo bq = P < n = pq. Na mocy Małego Twierdzenia Fermata mamy: b p 1 1 mod p, q p 1 1 mod p, skad: b a(p 1)(q 1) 1 mod p, i dalej q a(p 1)(q 1) 1 mod p, b (bq) a(p 1)(q 1) b mod p. Mnożac obie strony ostatniej kongruencji przez q dostajemy czyli bq (bq) a(p 1)(q 1) bq mod pq P ed = (bq) a(p 1)(q 1)+1 = (bq) (bq) a(p 1)(q 1) bq = P mod n, co było do udowodnienia.
We współczesnej kryptografii w wielu sytuacjach wymagana jest duża losowa liczba pierwsza. Omówiony właśnie kryptosystem RSA jest takim przykładem. Test pierwszości to algorytm determinujacy, czy liczba podana na wejściu jest pierwsza. Wszystkie testy pierwszości szukaja, tak naprawdę, świadka na złożoność liczby. Jeśli go nie znajda odpowiadaja, że liczba jest pierwsza. Powszechnie rozważane sa dwa rodzaje testów pierwszości: deterministyczne - wydaja certyfikat pierwszości ; odpowiadaja że podana na wejściu liczba n jest pierwsza wtedy i tylko wtedy, gdy naprawdę tak jest, probabilistyczne - przepuszczaja pewne liczby złożone (stwierdzajac ich pierwszość), nigdy jednak nie myla się na liczbach pierwszych. Jest istotna różnica pomiędzy stwierdzeniem, że liczba jest złożona (poprzez brak zaliczenia testu pierwszości), a wskazaniem jej rozkładu (faktoryzacja). W szczególności istnieje efektywny (wielomianowy) algorytm testujacy pierwszość natomiast dotychczas poznane algorytmy faktoryzujace sa o wiele wolniejsze.
Naiwny test pierwszości To najprostszy deterministyczny test pierwszości. Dana na wejściu liczbę n dziel kolejno przez m = 2, 3,..., m. Jeśli przy którymkolwiek dzieleniu reszta równa jest 0 test zwraca, że n jest złożona w przeciwnym wypadku, że n jest pierwsza. Zwróćmy uwagę, że jeśli n okaże się złożona, to znajdziemy także nietrywialny jej dzielnik. Niestety jest to bardzo wolna metoda sprawdzania pierwszości - wymaga O( n lg 2 n) kroków.
Liczby pseudopierwsze i test Fermata Małe Twierdzenia Fermata mówi, że jeśli n jest pierwsza, to dla dowolnego b {1, 2,..., n 1} zachodzi b n 1 1 mod n. Powyższe zdanie może być prawdziwe dla pewnych złożonych n i pewnych 1 < b < n. Jeśli jednak dla danego n i pewnego 1 < b < n, równość b n 1 1 mod n nie zachodzi, to n jest złożona i b jest świadkiem złożoności. Liczba pseudopierwsza przy podstawie b to złożona liczba nieparzysta n taka, że b n 1 1 mod n. Liczba b jest względnie pierwsza z n.
Przykład Liczba 91 = 7 13 jest pseudopierwsza przy podstawie 3. NWD(3, 91) = 1, ϕ(91) = ϕ(7) ϕ(13) = 6 12 = 72, z Twierdzenia Eulera mamy 3 90 91 3 1 72+18 91 3 18, liczymy 3 18 mod 91 metoda szybkiego potęgowania: 18 = (10010) 2, 3 2 = 9, 3 4 = 9 9 = 81, 3 8 = 81 81 = 6561 91 9, lub (prościej) 3 8 = ( 10) ( 10) 100 91 9, 3 16 91 9 9 = 81. 3 18 = 3 16 3 2 91 81 9 = 729 91 1. Zatem 3 90 91 1, czyli 91 jest pseudopierwsze przy podstawie 3.
Przykład Liczba 91 = 7 13 jest pseudopierwsza przy podstawie 3. NWD(3, 91) = 1, ϕ(91) = ϕ(7) ϕ(13) = 6 12 = 72, z Twierdzenia Eulera mamy 3 90 91 3 1 72+18 91 3 18, liczymy 3 18 mod 91 metoda szybkiego potęgowania: 18 = (10010) 2, 3 2 = 9, 3 4 = 9 9 = 81 91 ( 10), 3 8 = 81 81 = 6561 91 9, lub (prościej) 3 8 = ( 10) ( 10) 100 91 9, 3 16 91 9 9 = 81 91 ( 10). 3 18 = 3 16 3 2 91 81 9 = 729 91 1.(lub 3 18 ( 10) 9 = ( 90) 91 1) Zatem 3 90 91 1, czyli 91 jest pseudopierwsze przy podstawie 3.
Przykład Sprawdźmy, czy 91 jest również pseudopierwsze przy podstawie 2. NWD(2, 91) = 1 a zatem znów z Twierdzenia Eulera 2 90 91 2 18, liczymy 2 18 mod 91 metoda szybkiego potęgowania: 18 = (10010) 2, 2 2 = 4, 2 4 = 4 4 = 16, 2 8 = 16 16 = 256 91 74, 2 16 91 74 74 = 5476 91 16. 2 18 = 2 16 2 2 91 16 2 = 32. Zatem 2 90 91 1. Gdybyśmy nie wiedzieli, że 91 jest złożona, byłby to dowód tego faktu (2 jest świadkiem złożoności 91).
Test pierwszości Fermata Jeśli n ma świadka złożoności, to przynajmiej połowa elementów w b {1,..., n 1} jest świadkiem złożoności. Na podstawie ostatnich rozważań opiszemy probabilistyczny test pierwszości, znany jako test pierwszości Fermata. Majac dana na wejściu liczbę n: Wylosuj b {1, 2,..., n 1}. Sprawdź algorytmem Euklidesa (O(lg 3 n)) czy d = NWD(b, n) > 1. Jeśli tak, to n jest złożona, co więcej d jest nietrywialnym dzielnikiem n. Jeśli nie, to sprawdź czy b n 1 n 1. Metoda szybkiego potęgowania można to zrobić w czasie O(lg 3 n). Jeśli nie, to n jest złożona i b jest świadkiem złożoności n. Jeśli tak, to n przechodzi test. Załóżmy, że wykonaliśmy k powtórzeń. Wtedy szansa na to, że n nie ma świadka 1 złożoności wynosi 2k. To jednak nie oznacza, że z tak a szans a n jest pierwsza. Okazuje się, że istnieja liczby które nie maja świadka złożoności, a mimo to sa złożone.
Liczby Carmichaela Liczba Carmichaela to liczba złożona, która nie ma świadków złożoności. Zatem: liczba n jest liczba Carmichaela, jeśli n jest złożona, dla dowolnego b {1,..., n 1} takiego, że NWD(b, n) = 1 zachodzi b n 1 n 1. Oto lista kilku pierwszych liczb Carmichaela: 561, 1105, 1729, 2465, 2821, 6601, 8911,.... Twierdzenie [Korselt 1899 Liczba złożona n jest liczba Carmichaela wtedy i tylko wtedy, gdy n nie jest podzielna przez żaden kwadrat liczby pierwszej i dla wszystkich dzielników pierwszych p liczby n zachodzi p 1 n 1. Wniosek Liczba Carmichaela jest iloczynem przynajmniej trzech różnych liczb pierwszych.
Test pierwszości Millera-Rabina Test Millera-Rabina bazuje na koncepcji silnej pseudopierwszości, która zdefiniujemy poniżej. Niech n będzie pseudopierwsza przy podstawie b, czyli b n 1 n 1. Jeśli n jest pierwsza, to w ciagu b (n 1)/2 mod n, b (n 1)/4 mod n,... b (n 1)/2s mod n, gdzie s jest tak dobrane że (n 1)/2 s jest nieparzysta, pierwsza wartość modulo n różna od 1 to -1. W praktyce ciag ten analizowany jest z drugiej strony. Niech n 1 = 2 s t, gdzie t jest nieparzysta. Najpierw obliczamy b t mod n później (jeśli otrzymaliśmy coś różnego jest od 1) obliczamy b 2t mod n, później b 4t mod n, aż otrzymamy wartość 1. Wtedy jeśli poprzednia wartość jest różna od -1, to n jest złożona.
Liczby silnie pseudopierwsze Niech n będzie nieparzysta liczba złożona i niech n 1 = 2 s t, gdzie t jest nieparzysta, b {1, 2,..., n 1}. Jeśli b t n 1 lub istnieje r takie, że 0 r < s i b 2r t n 1, to n jest silnie pseudopierwsza przy podstawie b. Oczywiście, wprost z definicji, każda liczba silnie pseudopierwsza przy podstawie b jest też pseudopierwsza przy podstawie b. Sformułujemy teraz algorytm testu pierwszości Millera-Rabina, po kilku jego powtórzeniach - z bardzo dużym prawdopodobieństwem - odróżni on liczbę pierwsza od złożonej. Test ten nie ma żadnych wyjatków typu liczby Carmichaela w teście Fermata.
Test pierwszości Millera -Rabina Dla danej na wejściu liczby nieparzystej n: Wylicz liczbę nieparzysta t taka, że n 1 = 2 s t, Wylosuj liczbę b {2,..., n 1}, Oblicz b t mod n,(metoda szybkiego potęgowania w O(lg 3 n)) jeśli otrzymałeś ±1, to n przechodzi test, w przeciwnym przypadku licz kolejno b 2t mod n, b 22t mod n, b 23t mod n,..., b 2s 1t mod n, aż otrzymasz -1 lub 1. Jeśli uzyskałeś -1, to n przechodzi test. Jeśli zaś -1 nie wystapiło w obliczonym ciagu, to n jest złożona i b jest świadkiem złożoności. Jeśli liczac kolejne wyrazy b 2t mod n, b 22t mod n, b 23t mod n,... otrzymamy na którymś miejscu 1 (a wcześniej nie było -1), to n jest złożona. Zatem wykonanych będzie co najwyżej O(lg n) kroków i w każdym kroku przeprowadzamy szybkie potęgowanie w O(lg 3 n), czyli sumaryczny czas to O(lg 4 n).
Przykład Wykonajmy test Millera-Rabina dla n=561 (jest to najmniejsza liczba Carmichaela, nieodróżnialna od liczb pierwszych testem Fermata): n 1 = 561 1 = 2 4 35, czyli s = 4 i t = 35, wykonajmy test dla b = 2: 2 35 561?, 35 = (100011) 2, 2 2 = 4, 2 4 = 16, 2 8 = 256, 2 16 = 65536 561 460, 2 32 561 460 460 = 211600 561 103, 2 35 = 2 32 2 2 2 1 561 103 4 2 561 263. Ponieważ 2 35 561 ±1 sprawdzamy kolejne potęgi... 2 70 561 263 263 = 166, 2 140 561 166 166 = 67, 2 280 561 67 67 = 1. W sekwencji tej znalazła się wartość 1, a przed nia nie było -1. Zatem 2 jest świadkiem złożoności 561 w teście Millera - Rabina.
Test Millera - Rabina Jeśli n jest nieparzysta liczba złożona, to n jest silnie pseudopierwsze dla co najwyżej 25% liczb b {1,..., n 1}. Jeśli więc liczba nieparzysta n przeszła k testów Millera-Rabina to liczba n jest złożona z prawdopodobieństwem jedynie 1 4 k. A więc po 10 testach Millera-Rabina n jest złożona z prawdopodobieństwem 0.0000009.
Protokół Diffiego -Hellmana to protokół uzgadniania kluczy szyfrujacych (wspólnego tajnego klucza przy użyciu publicznych środków komunikacji), opracowany przez Witfielda Diffiego oraz Martina Hellmana w 1976 roku. Jego siła oparta jest na trudności obliczenia logarytmów dyskretnych w ciałach skończonych. Klucz uzgodniony za pomoca tego algorytmu może zostać wykorzystany do szyfrowania komunikacji.
Schemat działania Alicja i Bob uzgadniaja liczbę p oraz g.(p duża liczba pierwsza, g może być małe) Alicja losuje naturalna liczbę a i wysyła g a mod p Bobowi. Bob losuje naturalna liczbę b i wysyła g b mod p Alicji. Alicja oblicza (g b ) a = g ab mod p. Bob oblicza (g a ) b = g ab mod p. Oboje posiadaja teraz element g ab, który może posłużyć jako tajny klucz.
zadanie 1 Ćwiczenie 1 Przechwyciłeś zakodowana wiadomość i pragniesz poznać jej treść. Oto kod wiadomości: 24,28,17,39,14,42,24,18,10,40,38,15,10,26,27,40,18,10,46,17,20, 14,26,18,10,45,28,17,15,14,46,12,14,26,37,18,10,14,28,14,43,23,45, 17,36,42,31,40,6,18,15,10,26,14,12,24,28,17,14,6,10,14, 46,6,18,10,14,31,6,12,29,10,29,14,13,45,12,37,18,14,45,42,45,17,27, 45,12,28,34,38,24,28,14,29,38,40,38,20,0,39,38,4,14,46,28,18,6,37, 17,14,46,12,14,28,18,10,26,18,14,26,37,18,10,14,34,45,28,17,13,18, 15,0. Wiadomo, że użyto kryptosystemu afinicznego o następujacych parametrach:
symbole alfabetu, tak jak i numeracja jest taka sama jak w tabeli: A A B C Ć D E E F G H I J K L Ł 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 M N Ń O Ó P R S Ś T U W Y Z Ż Ź 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31.?! 0 1 2 3 4 5 6 7 8 9, 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 jednostka wiadomości składa się z jednego symbolu; funkcja kodujaca f jest postaci f (P) = (ap + b) mod 47, gdzie a, b Z 47 sa nieznanymi Ci kluczami. Złam te klucze i poznaj treść wiadomości!
Zadanie 2 Otrzymałeś wiadomość w kryptosystemie RSA następujacej postaci: UGAC Wiadomość jest zakodowana przy następujacych założeniach: symbole alfabetu, tak jak i numeracja jest taka sama jak w tabeli z Zadania 1, jednostka wiadomości składa się z dwu symboli, odpowiedniość między jednostkami wiadomości, a kolejnymi liczbami jest następujaca: (x, y) x 47 + y, gdzie x, y sa wzięte z tabeli z zadania 1, zbiór jednostek wiadomości to Z 2279 ( bo 2279 jest iloczynem dwu liczb pierwszych), przy czym wartości większe od 2208 nie sa wykorzystywane, klucz kodujacy to (2279,1517). Odczytaj otrzymana wiadomość.
Systemy reprezentantów Mamy zbiory A 1, A 2,..., A n X. Czy można wybrać po jednym elemencie z każdego zbioru, tak, aby wybrane elementy były parami różne? a 1, a 2,..., a n nazywamy systemem reprezentantów, gdy a i A i, dla i = 1, 2,..., n, oraz a i a j dla i j, i, j {1, 2,..., n}.
Przykład Wojtek lubi Anię, Basię i Kasię Paweł lubi Basię i Zosię Szymon lubi Basię i Kasię Piotr lubi Basię i Anię Dawid lubi Basię, Anię i Zosię Bartek lubi Monikę, Gosię i Basię Chca zaprosić miłe im dziewczę na bal, czy da się to zrobić?
Warunek Halla Dla każdego J {1, 2,..., n} liczba elementów w sumie zbiorów i J musi być nie mniejsza niż liczba elementów zbioru J To jest warunek konieczny na istnienie systemu reprezetantów. A i
Dla każdego J {1, 2,..., n} liczba elementów w sumie zbiorów musi być nie mniejsza niż liczba elementów zbioru J To jest także warunek wystarczajacy na istnienie systemu reprezentantów. i J A i
Zadanie 3 O sześć stanowisk pracy: murarza (m), stolarza (s), betoniarza (b), dekarza (d), cieśli (c) i instalatora (i) stara się pięciu kandydatów: A,B,C,D,E. Kandydat A ma uprawnienia stolarza i instalatora (s,i), kandydat B- (s,d), C-(s,d), D-(m,s,c,i), E-(b,i). Czy można tak dopasować kandydatów do stanowisk pracy, by każdy otrzymał pracę zgodna ze swoimi uprawnieniami? Na ile sposobów można ich dopasować?