210 likes | 474 Views
Technologie informacyjne. mgr inż. Marek Malinowski Zakład Matematyki i Fizyki Wydz. BMiP PW Płock. Nowa klasyfikacja algorytmów. Algorytmy sekwencyjne Algorytmy równolegle, współbieżne (nieustające problemy) Algorytmy probabilistyczne. Rozpatrujemy ze względu na: poprawę wydajności
E N D
Technologie informacyjne mgr inż. Marek Malinowski Zakład Matematyki i Fizyki Wydz. BMiP PW Płock
Nowa klasyfikacja algorytmów Algorytmy sekwencyjne Algorytmy równolegle, współbieżne (nieustające problemy) Algorytmy probabilistyczne • Rozpatrujemy ze względu na: • poprawę wydajności • rosnącą liczbę systemów współbieżnych jeśli odejdziemy od “świętej” reguły, że rozwiązanie problemu musi być poprawne dla wszystkich możliwych danych Dopuszczenie, by algorytmy były nie zawsze poprawne,ale niepoprawność można bezpiecznie zlekceważyć
Algorytmy probabilistyczne Problem – czy liczba jest pierwsza ? 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, . . . • Jak sprawdzać czy liczba jest pierwsza? • Prosty algorytm – liczbę N podziel przez wszystkie liczby od 2 do N-1. • Jeśli jakaś z nich dzieli N bez reszty – liczba N nie jest pierwsza. • Sprawność algorytmu – ponadwykładnicza. • Ulepszenia – dzielenie przez liczby nieparzyste do pierwiastek z N - nie zmieniają skali złożoności.
Algorytmy probabilistyczne • Wybrane rezultaty badań w dziedzinie teorii liczb: • szacowanie ilości liczb pierwszych mniejszych od liczby N n / log N • wśród wszystkich liczb naturalnych 100-cyfrowych na każde 300 jedna jest pierwsza200-cyfrowych na każde 600 jedna jest pierwsza
Algorytmy probabilistyczne - przykłady Schemat probabilistycznego algorytmu sprawdzania czy liczba jest pierwsza oparty na własności, że jeśli N jest liczbą złożoną, to więcej niż połowa liczb między 1 a n –1 jest świadectwem złożoności dane N nadaj K losową wartość między 1 a N - 1 Sprawdź, czy K jest świadectwem złożoności N Jeśli to jest odpowiedzią, to jest to prawdą z prawdopodobieństwem 1 – 1 / 2 200 K nie jest świadectwem K jest świadectwem czy już sprawdzono 200 razy K? NIE, N nie jest liczbą pierwszą TAK, N jest liczbą pierwszą
Algorytmy probabilistyczne - przykłady Problem dopasowywania wzorca – t.j. sprawdzanie czy dany ciąg symboli (o długości M) występuje w pewnym tekście (o długości N). Przykład: Wzorzec:boli_występ ( M = 11 ) Tekst:Przypuśćmy,_że_chcemy_stwierdzić,_czy_ dany_wzorzec_symboli_występuje_w_ pewnym_długim_tekście. ( N = 93 ) Naiwny algorytm – złożoność O ( N x M )
Algorytmy probabilistyczne - przykłady • Zamiast porównywania wzorca symbol po symbolu z każdym możliwym • blokiem M kolejnych symboli w tekście, używa się funkcji odciskania palca, • która wiąże z każdym ciągiem symboli długości M jedną liczbę. • Wymogi: - liczba wyrażająca odcisk musi być znacznie krótsza niż M • - odcisk bloku złożonego z Msymboli musi dać się obliczyć w czasie krótszym niż O ( M ) Realizacja algorytmu wybieramy losowo liczbę pierwszą K o ok. log N cyfrach dwójkowych, a jako odcisk bloku B o M symbolach resztę z cyfrowej wersji B modulo K Algorytm może się jednak mylić – jeśli odciski są nierówne, rzeczywiste ciągi muszą być także różne – odwrotnie niekoniecznie jest prawdą.
Algorytmy probabilistyczne - przykłady Historyjka o jaskini – jaskinia zawiera tajemnicę. Ktoś znający czarodziejskie zaklęcie może otworzyć tajemne drzwi między C i D. Dla każdej innej osoby oba przejścia kończą się ślepo. Alicja zna tajemnicę jaskini. Pragnie wykazać się swoją wiedzą przed Karolem, ale nie chce ujawnić zaklęcia. Jak może przekonać Karola, że rzeczywiście zna zaklęcie? (1) Karol stoi w punkcie A (2) Alicja przechodzi całą drogę w jaskini do C albo D (3) Kiedy Alicja znika w jaskini, Karol przechodzi do B (4) Karol krzyczy do Alicji, żądając od niej aby:a) wyszła z lewego korytarza albo b) wyszła z prawego korytarza (5) Alicja stosuje się do polecenia, używając zaklęcia do otwarcia tajemnych drzwi (6) Karol i Alicja n-krotnie powtarzają kroki od (1) do (5)
Oryginalny tekst jawny Tekst jawny Szyfrogram Szyfrowanie Deszyfrowanie D ( C ) = P E ( P ) = C Kryptologia – podstawowe pojęcia
Kryptologia – podstawowe pojęcia Algorytm kryptograficzny (szyfr) = algorytm szyfrujący + algorytm deszyfrujący • Dwie kategorie algorytmów kryptograficznych: • algorytm ograniczony (bezpieczeństwo oparte na utrzymaniu w tajemnicy istoty algorytmu) • algorytm z kluczem ( bezpieczeństwo oparte na utrzymaniu w tajemnicy klucza). Klucz może przyjmować jedną z wielu wartości, najlepiej duże.
Kryptografia – algorytmy komputerowe DES(Data Encryption Standard) - algorytm symetryczny RSA - algorytm z kluczem jawnym DSA (Digital Signature Algorithm) - z kluczem jawnym, tylko do podpisów elektronicznych Bezpieczeństwo systemów kryptograficznych Wszystkie algorytmy są teoretycznie możliwe do złamania (poza algorytmem z kluczem jednorazowym) Algorytm, który nie jest możliwy do złamania w praktyce (lub rozsądnym czasie) może być uznany za bezpieczny
Klasyczna kryptografia Szyfry podstawieniowe łatwo złamać, bo m. in. zachowują statystyczne własności języka wiadomości. Mechaniczne metody szyfrowania algorytmami podstawieniowymi – maszyna ENIGMA
Kryptografia - protokoły Protokół – szereg kroków, obejmujących dwie lub więcej stron, podejmowanych w celu realizacji zadania. Protokół kryptograficzny wykorzystuje kryptografię Celem stosowania protokołów kryptograficznych jest zapewnienie uczciwości i bezpieczeństwa. • Cechy protokołów: • każdy użytkownik musi znać protokół i wykonywać kolejno wszystkie kroki • każda ze stron musi zgodzić się na jego stosowanie • protokół musi być niemylący (żaden krok nie może dopuszczać wystąpienia nieporozumienia) • protokół musi być kompletny (każda możliwa sytuacja musi być opisana)
Protokół samowymuszający Protokół arbitrażowy (po fakcie) dowód dowód Protokół rozjemczy Kryptografia – kategorie protokołów
Kryptografia – wymiana informacji Protokoły samowymuszające ideałem, ale brak protokołów tego typu na każdą sytuację
Protokół samowymuszający Kryptografia – wymiana informacji Protokoły samowymuszające ideałem, ale brak protokołów tego typu na każdą sytuację Protokół z kluczem jawnym rozwiązuje problem dystrybucji klucza Klucze mogą być udostępniane w bazie danych Trzeba jednak rozwiązać problem uwierzytelniania
Kryptografia – podpis elektroniczny • Istota podpisu - podpis stanowi dowód autorstwa • Podpis jest niepodrabialny • Podpis jest autentyczny • Podpis nie nadaje się do powtórnego użycia (jest częścią dokumentu) • Podpisany dokument jest niezmienialny • Nie można wyprzeć się podpisu Kryptografia – algorytmy i protokoły - umożliwiają realizację bezpiecznej i uwierzytelnionej wymiany informacji w systemach komputerowych