Matematyka dyskretna

Podobne dokumenty
Matematyka dyskretna

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska

Twierdzenie Eulera. Kongruencje wykład 6. Twierdzenie Eulera

Matematyka dyskretna

Matematyka dyskretna

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

Algorytmy i struktury danych. Wykład 4

Przykładowe zadania z teorii liczb

Wybrane zagadnienia teorii liczb

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

Spis treści. Przedmowa... 9

Algorytmy w teorii liczb

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

Matematyka dyskretna

Odwrotne twierdzenie Fermata. Odwrotne twierdzenie Fermata

Kongruencje twierdzenie Wilsona

Matematyka dyskretna

Kongruencje pierwsze kroki

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

2. Liczby pierwsze i złożone, jednoznaczność rozkładu na czynniki pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność.

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Pierwiastki pierwotne, logarytmy dyskretne

Matematyka dyskretna. Wykład 5: Funkcje multiplikatywne. Gniewomir Sarbicki

0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3.

Jarosław Wróblewski Matematyka Elementarna, zima 2012/13

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 6a

Liczby pierwsze na straży tajemnic

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Analiza kongruencji. Kongruencje Wykład 3. Analiza kongruencji

Liczby pierwsze wielomianowo - ekstremalnie trudne?

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Logarytmy. Funkcje logarytmiczna i wykładnicza. Równania i nierówności wykładnicze i logarytmiczne.

Zadania do samodzielnego rozwiązania

Jarosław Wróblewski Matematyka Elementarna, lato 2012/13. W dniu 21 lutego 2013 r. omawiamy test kwalifikacyjny.

Wstęp do analizy matematycznej

Teoria liczb. Zajmuje się własnościami liczb, wszystkim całkowitych

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 5. Karol Tarnowski A-1 p.

Kongruencje oraz przykłady ich zastosowań

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

Sumy kwadratów kolejnych liczb naturalnych

1. Wykład NWD, NWW i algorytm Euklidesa.

LICZBY PIERWSZE. 14 marzec Jeśli matematyka jest królową nauk, to królową matematyki jest teoria liczb. C.F.

Luty 2001 Algorytmy (7) 2000/2001

Zastosowania arytmetyki modularnej. Zastosowania arytmetyki modularnej

MADE IN CHINA czyli SYSTEM RESZTOWY

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 5

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

Parametry systemów klucza publicznego

2. LICZBY RZECZYWISTE Własności liczb całkowitych Liczby rzeczywiste Procenty... 24

Kongruencje. Beata Łojan. Koło Naukowe Matematyków Uniwersytetu Śląskiego w Katowicach.

Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej.

3a. Wstęp: Elementarne równania i nierówności

Bezpieczeństwo systemów komputerowych

Matematyka dyskretna

Matematyka dyskretna

Zaawansowane algorytmy i struktury danych

Luty 2001 Algorytmy (8) 2000/2001

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Rozdział 1. Zadania. 1.1 Liczby pierwsze. 1. Wykorzystując sito Eratostenesa wyznaczyć wszystkie liczby pierwsze mniejsze niż 200.

Kongruencje i ich zastosowania

Podstawy systemów kryptograficznych z kluczem jawnym RSA

Projekt Era inżyniera pewna lokata na przyszłość jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

Równania i nierówności wykładnicze i logarytmiczne

Sumy kolejnych bikwadratów

1. Określenie pierścienia

Badanie pierwszości liczby, klasa NP i test Rabina

Matematyka Dyskretna Zestaw 2

Wielomiany. dr Tadeusz Werbiński. Teoria

Elementy metod numerycznych

1. LICZBY DZIAŁ Z PODRĘCZNIKA L.P. NaCoBeZu kryteria sukcesu w języku ucznia

Elementy teorii liczb. Matematyka dyskretna

Paweł Gładki. Algebra. pgladki/

Liczby pierwsze. Kacper Żurek, uczeń w Gimnazjum nr 1 im. Jana Pawła II w Giżycku.

0 + 0 = 0, = 1, = 1, = 0.

Projekt Era inżyniera pewna lokata na przyszłość jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Matematyka dyskretna

Równania wielomianowe

O MACIERZACH I UKŁADACH RÓWNAŃ

0.1 Pierścienie wielomianów

Luty 2001 Algorytmy (4) 2000/2001

Elementy teorii liczb i kryptografii Elements of Number Theory and Cryptography. Matematyka Poziom kwalifikacji: II stopnia

3. Macierze i Układy Równań Liniowych

Wykłady z matematyki Liczby zespolone

Metoda Lenstry-Shora faktoryzacji dużych liczb całkowitych

Kody blokowe Wykład 2, 10 III 2011

Tematyka do egzaminu ustnego z matematyki. 3 semestr LO dla dorosłych

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY MATEMATYKA STOSOWANA - KLASA II I. POWTÓRZENIE I UTRWALENIE WIADOMOŚCI Z ZAKRESU KLASY PIERWSZEJ

a)wykaż,żejeżeli2 n 1jestliczbapierwszą,to2 n 1 (2 n 1)jestliczbądoskonałą.

Zestaw 2. Definicje i oznaczenia. inne grupy V 4 grupa czwórkowa Kleina D n grupa dihedralna S n grupa symetryczna A n grupa alternująca.

Podstawowe struktury algebraiczne

Pierścień wielomianów jednej zmiennej

2 Kongruencje 5. 4 Grupy 9. 5 Grupy permutacji Homomorfizmy grup Pierścienie 16

WIELOMIANY I FUNKCJE WYMIERNE

2. Liczby pierwsze i złożone, jednoznaczność rozkładu na czynniki pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność. (c.d.

Przykładowe rozwiązania zadań. Próbnej Matury 2014 z matematyki na poziomie rozszerzonym

Transkrypt:

Matematyka dyskretna Wykład 10: Algorytmy teorii liczb Gniewomir Sarbicki

Literatura A. Chrzęszczyk Algorytmy teorii liczb i kryptografii w przykładach Wydawnictwo BTC 2010 N. Koblitz Wykład z teorii liczb i kryptografii WNT Warszawa 2006 N. Koblitz Algebraiczne aspekty kryptografii WNT Warszawa 2000

Algorytm kolejnych dzieleń Liczba n jeżeli jest złożona, posiada czynnik rozkładu n. Obliczamy n mod m dla wszystkich m {2,..., [ n]}. Jeżeli otrzymujemy 0, to liczba m jest dzielnikiem liczby n. Kontynuujemy poszukiwania dzielników dla n m. Algorytm nadaje się do poszukiwania małych dzielników pierwszych. Szybkość algorytmu można zwiększyć biorąc za m tylko liczby pierwsze (tablicując je, lub tworząc ich tablicę jak w sicie Eratostenesa).

Algorytm Fermata Jeżeli liczba nieparzysta n jest iloczynem dwóch liczb p i q, p q, to n = pq = (x + y)(x y) = x 2 y 2 dla x = p+q 2, y = p q 2. Ponieważ p i q są nieparzyste, to x, y Z. Przyjmujemy x = n (całkowite przybliżenie górne) i rozważamy ciąg potencjalnych y 2 : ( ) n + 1 2 x 2 n, (x + 1) 2 n, (x + 2) 2 n,..., n 2 Jeżeli w ciągu tym wystąpi kwadrat liczby naturalnej zanim osiągniemy ostatni wyraz, to mamy znalezioną parę dzielników. W przeciwym wypadku n jest liczbą pierwszą. Dla każdego dzielnika z tej pary powtarzamy procedurę.

Metoda p 1 Pollarda tw. Fermata: p P p a = a p 1 = 1 (mod p). Zatem p a p 1 1, więc również p a k 1, gdzie k - dowolna wielokrotność p 1. Liczymy NWD(a k 1, n) - jeżeli k jest iloczynem wielu liczb pierwszych, duża szansa że ma wspólny dzielnik z n! Za a wybiera się 2, natomiast k powinno być wielokrotnością nieznanej liczby, czyli iloczynem możliwie dużej ilości czynników pierwszych (ich potęg). Wybieramy ograniczenie B Za k bierze się NWW (1, 2,..., B) lub B! lub iloczyn potęg liczb pierwszych mniejszych od B, tak że każda potęga nie przekracza B.

Metoda szybkiego potęgowania Ile mnożeń trzeba wykonać, żeby obliczyć wartość liczby 7 223? 223 = b11011111. Obliczamy wartości: 7, 7 2, 7 4,... 7 128 (siedem razy wykonujemy podnoszenie do kwadratu) i zapamiętujemy je. Następnie mnożymy te z nich, które wchodzą w rozwinięcie binarne wykładnika: (tutaj 6 mnożeń) 7 223 = 7 128 7 64 7 16 7 8 7 4 7 2 7 1 Maksymalnie dla n-bitowego wykładnika wykonamy (n 1) 2 mnożeń. Naiwnie mnożąc byłoby to 2 n 2.

Metoda ρ Pollarda Jeżeli liczba n ma dzielnik pierwszy d, to Z n rozpadnie się na n/d klas abstrakcji kongruencji różnienia się o wielokrotność d. Losując odpowiednio dużo liczb x k, dwie z nich znajdą się w tej samej klasie abstrakcji, więc NWD tej różnicy i liczby n będzie równy wielokrotności d. Ciąg x 1,... x k znajdujemy wybierając dowolnie pierwszy element, a kolejny znajdujemy z poprzedniego działając funkcją wielomianową: x i+1 = f (x i ). Wystarczy wielomian stopnia 2. Szukamy NWD(x i x j, n) dla tego ciągu. Wszystkie możliwe wartości uzyskamy rozważając NWD(x 2j x j, n).

Metoda ρ Pollarda Przykład: n = 221(= 15 17), x 0 = 3, x k+1 = x 2 k + 1 Skąd nazwa metoda ρ? x k NWD(x 2k x k, 221) 3 221 10 101 13 36 192 179 218 10 101.

Metoda sita kwadratowego i metoda ECM Wybieramy ograniczenie B i generujemy zbiór liczb pierwszych P B nie większych od B. Szukamy par liczb x = y mod n, o czynnikach pierwszych w zbiorze P B. Generujemy takich par więcej niż #P B. Mnożąc stronami odpowiednie wiersze układu równań, dostaniemy równość a 2 = b 2 mod n (a b)(a + b) = kn. Sprawdzamy, czy liczby po lewej stronami są dzielnikami n. General number field sieve oraz Special number field sieve są ulepszeniami tej metody. Usprawniony jest sposób generowania par x, y. Są to najszybsze algorytmy faktoryzacji.

Złożoność czasowa algorytmów faktoryzacji algorytm rok największy sukces złożoność czasowa kolejnych dzieleń staroż. 2 31 1 L n (1, 1 2 ) = n Fermata L n (1, 1 3 ) = 3 n p 1 1974 32-cyfrowy czynnik O(B logb log 2 n) QS 1981 129-cyfrowa liczba L n ( 1 2, 1) ECM 1985 47-cyfrowy czynnik L p ( 1 2, 2) SNFS 1988 180-cyfrowa liczba L n ( 1 3, 3 32 9 ) GNFS 1993 130-cyfrowa liczba L n ( 1 3, 3 64 9 ) gdzie n jest rozmiarem liczby na wejściu algorytmu. Oznaczenie L n (a, b) oznacza złożoność e cn(log n)a (log log n) 1 a, lim c n = b n Złożoność czasowa tych wszystkich algorytmów w funkcji rozmiaru danych wejściowych (w bitach) jest wykładnicza.

Test Leibnitza Z twierdzenia Fermata, wiemy że jeżeli dla liczby pierwszej p, p a, to a p 1 = 1 (mod p). Chcemy sprawdzić, czy dana liczba nieparzysta n jest liczbą pierwszą. Jeżeli dla pewnej liczby b {2,..., n 1} b n 1 1 (mod n), to liczba n jest liczbą złożoną, a liczbę b nazywamy świadkiem złożoności liczby n. jeżeli b {2,..., n 1} b n 1 = 1, to liczba n jest liczbą pierwszą. Liczby pseudopierwsze Liczba złożona, nie wykrywana przez świadka b, nazywana jest liczbą pseudopierwszą względem podstawy b.

Test Millera-Rabina Liczba n 1 jest liczbą parzystą, zatem można ją zapisać jako 2 k q. Z twierdzenia Fermata wiemy, że b 2kq = 1 (mod n). Niech j k będzie najmniejszym wykładnikiem, dla którego b 2j q = 1 (mod n). Jeżeli j > 0 to ( ) ( ) b 2j 1q 1 b 2j 1q + 1 = 0 ( mod n) liczba b 2j 1q nie może być równa 1 (mod n) (na mocy wyboru j), zatem b 2j 1q = 1 ( mod n) jeżeli natomiast j = 0, to b q = 1 (mod n). Zatem w ciągu reszt modulo n wyrazów b q, b 2q, b 22q,..., b 2k q pierwsza reszta jest równa 1, lub jest przynajmniej jedna 1.

Test Millera-Rabina Kolejną resztę w ciągu oblicza się podnosząc poprzednią do kwadratu (i dzieląc modulo n). Jeżeli pierwsza reszta jest różna od 1, a następne są wszystkie różne od 1, to liczba na pewno jest złożona. W sytuacji przeciwnej test nie rostrzyga o pierwszości Przykład: Weźmy liczbę 25 i podstawę 7. n 1 = 24 = 2 3 3. Szukamy reszt {7 3, 7 6, 7 12, 7 24 } modulo 25: 7 3 = 343 = 7 49 = 1 mimo, że liczba 25 jest liczbą złożoną. Definicja: Liczby złożone, których nie wykrywa test Millera-Rabina przy podstawie b nazywamy silnie pseudopierwszymi przy podstawie b

Test Millera-Rabina Twierdzenie Rabina: Liczba nieparzysta n jest silnie pseudopierwsza dla co najwyżej 1/4 podstaw z przedziału {1, n 1}. Twierdzenie to pozwala stwierdzać pierwszość liczby z prawdopodobieństwem dowolnie bliskim 1 (losując odpowiednio dużo postaw) Przykład: Najmniejszą liczbą pseudopierwszą względem podstaw 2, 3, 5 jest liczba 25 326 001. Najmniejszą liczbą pseudopierwszą względem podstaw 2, 3, 5, 7 jest liczba 3 215 031 751.

Test Lucasa pierwszości Twierdzenie:(test Lucasa pierwszości) Niech n-nieparzysta liczba naturalna, b {2,..., n 1}. Jeżeli dla dowolnej liczby pierwszej p dzielącej n 1 zachodzi b n 1 1 ( mod p) b n 1 p 1 ( mod p), to n jest liczbą pierwszą. Dowód: Z założenia wynika, że rzędem elementu b w grupie Z n jest n 1, więc #Z n = n 1. Test ten ma sens dla liczb dla których znamy rozkład n 1 na czynniki pierwsze, np. dla liczb Fermata 2 2n + 1 Skuteczność testu zależy od wyboru liczby b.

Metoda Gaussa znajdowania rzędu elementu Będziemy szukać rzędu elementu a Z p. Wiemy że a φ(p) = 1. Niech liczba φ(p) ma rozkład na czynniki pierwsze q e 1 1... qen n. Wyznaczamy pierwszy wyraz równy 1 w ciągu a qe 2 2...qn en, a q 1 q e 2 2...q en a q2 1 qe 2 2...qn en,..., a qe 1 1 q e 2 2...qn en. Niech będzie to a qr 1 1 q e 2 2...qn en (wyraz n-ty dostajemy podnosząc poprzedzający do potęgi q 1 modulo p). Zminimalizowaliśmy wartość wykładnika przy q 1. W ten sam sposób zmniejszamy w niej teraz wykładnik przy q 2. Ostatecznie dostajemy liczbę q r 1 elementu a. 1 qr 2 2... qrn n, która jest rzędem n,

Metoda Gaussa znajdowania rzędu elementu Ćwiczenie: Sprawdzić, czy 2 jest generatorem Z 11. 10 = 2 1 5 1. Rozważamy ciąg (2 5, 2 10 ): 2 5 = 32 = 1 1. Jedynka pojawi się dla wykładnika 1 przy 2 w rozkładzie φ(11). Podobnie sprawdzamy dla 5: 2 2 = 4 (2 2 ) 5 = 1024 = 990 + 33 + 1 = 1, zatem jedynka się pojawia też dla wykładnika 1 przy 5 w rozkładzie φ(11). Rząd elementu to najmniejszy wykładnik, dla którego 2 2r 1 5 r 2 = 1 i wynosi on 2 1 5 1 = 10, zatem dwójka jest generatorem w Z 11.

Metoda Gaussa znajdowania rzędu elementu Ćwiczenie: Sprawdzić, czy 2 jest generatorem Z 41. φ(41) = 40 = 2 3 5. Rozważamy ciąg (2 5, 2 10, 2 20, 2 40 ): 2 5 = 32 1024 = 25 41 1 = 1 1. Jedynka pojawi się dla wykładnika 2 przy 2 w rozkładzie φ(41). Podobnie sprawdzamy dla 5: 2 8 = 32 = 9 (2 8 ) 5 = 81 = 2 41 1 = 1, zatem jedynka się pojawia też dla wykładnika 1 przy 5 w rozkładzie φ(41). Rząd elementu to najmniejszy wykładnik, dla którego 2 2r 1 5 r 2 = 1 i wynosi on 2 2 5 1 = 20, zatem 2 nie jest generatorem w Z 41.

Metody wyznaczania logarytmu dyskretnego Najprostszą metodą jest systematyczne przeszukiwanie. W każdym kroku wykonujemy mnożenie przez podstawę logarytmu (jak robiliśmy to przy wypełnianiu tabelki logarytmu). Trzeba wykonać o jedno mnożenie mniej niż wynosi wartość logarytmu, w najgorszym przypadku φ(n) mnożeń. (znów złożoność wykładnicza w liczbie bitów!)

Metoda Shanksa Metodą poprawiającą metodę systematycznego przeszukiwania jest metoda Schanksa. Niech x = log γ (α) (mod n), a m = n. Wtedy x = qm + r oraz (γ m ) q = α(1/γ) r ( mod n) Poszukujemy pary (q, r) dla której obie strony są równe. Najpierw tablicujemy prawą stronę dla wszystkich r Z m, a następnie przeszukujemy wartości lewej strony. W najgorszym przypadku wykonujemy 2 n mnożeń, ale potrzeba zająć pamięć na przechowanie tablicy n elementów.

Metoda ρ Pollarda Szukamy rozwiązania równania γ n = α (mod n). Badamy ciąg trójek (e i, f i, x i ). Za zerowy element bierzemy (0, f 0, γ f 0 ), gdzie f 0 wybieramy losowo ze zbioru {0,..., n 2}. Element i + 1 definijemy indukcyjnie: e i+1 f i+1 x i+1 = e i + 1 ( mod n 1) f i x i α ( mod n) 2e i ( mod n 1) 2f i ( mod n 1) x 2 i ( mod n) e i f i + 1 ( mod n 1) x i γ ( mod n) dla x i = 1 ( mod 3) dla x i = 2 ( mod 3) dla x i = 0 ( mod 3)

Metoda ρ Pollarda Takie określenie ciągu zapewnia, że i x i = α e i γ f i. Ciąg ten może przyjmować tylko skończoną liczbę wartości, więc od pewnego miejsca jest okresowy (kształt litery ρ). Jeżeli znajdziemy dwie równe wartości, to γ n(e i e j ) = γ f j f i Zatem n(e i e j ) = f j f i, bo logarytm jest funkcją różnowartościową. Pozostaje rozwiązać kongruencję liniową sn = t(mod φ(n)). Da ona możliwe wartości logarytmu, które trzeba będzie systematycznie sprawdzić.

Metoda Pohlinga-Hellmana Zakładamy, że φ(n) jest iloczynem potęg liczb pierwszych. Dla każdej liczby pierwszej występującej w rozkładzie definiujemy jej resztę n p = n/p e(p), gdzie e(p) oznacza krotność czynnika rozkładu. Dla każdego czynnika pierwszego rozwiązujemy zagadnienie logarytmu w mniejszej grupie (o rzędzie p): γ x(p) p = α p ( mod n), γ p = γ np, α p = α np a następnie znajdujemy x(p) z chińskiego twierdzenia o resztach. Przykład: Chcąc wyznaczyć log 2 (7) (mod 181), gdzie 180 = 2 2 3 2 5 rozwiązujemy trzy równania: 162 x(2) = 19, 43 x(3) = 132, 59 x(5) = 1 ( mod 181) Trzeba znać rozkład n 1. Wtedy n 1 = p e(p 1) 1 pn e(pn) mnożeń redukuje się do p 1 1 + + p n 1 mnożeń i zastosowania ch.tw. o resztach.