P O L I T E C H N I K A S Z C Z E C IŃSKA W Y D Z I A Ł I N F O R M A T Y K I

Wielkość: px
Rozpocząć pokaz od strony:

Download "P O L I T E C H N I K A S Z C Z E C IŃSKA W Y D Z I A Ł I N F O R M A T Y K I"

Transkrypt

1 P O L I T E C H N I K A S Z C Z E C IŃSKA W Y D Z I A Ł I N F O R M A T Y K I K A T E D R A T E C H N I K P R O G R A M O W A N I A mgr inŝ. Dariusz Burak Metoda automatycznego zrównoleglenia wy branych algorytmów szyfrowania R o z p r a w a d o k t o r s k a P R O M O T O R : prof. dr hab. inŝ. Włodzimierz Bielecki SZCZECIN 2007

2 STRESZCZENIE Szybkość szyfrowania i deszyfrowania danych jest najwaŝniejszą po bezpieczeństwie cechą funkcjonalną algorytmów szyfrowania. UmoŜliwienie coraz szybszego szyfrowania oraz deszyfrowania wiąŝe się ściśle z zastosowaniem do tego celu nowoczesnego sprzętu o olbrzymich mocach obliczeniowych. Nieustanny postęp technologiczny w dziedzinie architektur procesorów doprowadził do powszechnego stosowania w takich przypadkach komputerów równoległych ze wspólną pamięcią charakteryzujących się większymi mocami obliczeniowymi w porównaniu z maszynami sekwencyjnymi. Algorytmy sekwencyjne naleŝy zrównoleglić, aŝeby efektywnie wykorzystywać moc obliczeniową tego typu komputerów. Metoda automatycznego zrównoleglenia wybranych algorytmów szyfrowania, będąca tematem niniejszej rozprawy doktorskiej polega na zrównolegleniu poszczególnych algorytmów szyfrowania w procesie kompilacji kodu źródłowego, a zatem prowadzone badania zmierzają do utworzenia kompilatora zrównoleglającego wyspecjalizowanego na algorytmy szyfrowania, który umoŝliwiać ma przekształcenie sekwencyjnego kodu źródłowego algorytmów szyfrowania w kod równoległy przy jednoczesnym zapewnieniu dotychczasowego poziomu bezpieczeństwa operacji szyfrowania i deszyfrowania danych, gdyŝ Ŝaden z istniejących kompilatorów zrównoleglających ogólnego przeznaczenia z uwagi na swoje ograniczenia nie moŝe być zastosowany do efektywnego zrównoleglenia algorytmów szyfrowania Opracowano i szczegółowo opisano trzy procedury zrównoleglenia pętli odnoszące się do poszczególnych typów algorytmów szyfrowania, które w powiązaniu z techniką kompilacji iteracyjnej umoŝliwiają efektywne zrównoleglenia wybranych algorytmów szyfrowania.

3 Streszczenie Opracowaną metodę zweryfikowano w dwóch aspektach, poprawności szyfrowania i deszyfrowania danych z zastosowaniem algorytmów równoległych oraz efektywności ich przetwarzania załączając wyniki przeprowadzonych badań eksperymentalnych. Niniejsza praca zawiera bibliotekę kodów źródłowych zrównoleglonych algorytmów szyfrowania w standardzie OpenMP. Słowa kluczowe: kompilatory zrównoleglające, kompilacja iteracyjna, algorytmy szyfrowania, analiza zaleŝności danych, OpenMP Adres autora: D a r i u s z B u r a k P o l i t e c h n i k a S z c z e c ińska Wydział Informatyki Katedra Technik Programowania ul. śołnierska 49, Szczecin dburak@wi.ps.pl

4 Pragnę najserdeczniej podziękować mojemu promotorowi Panu profesorowi Włodzimierzowi Bieleckiemu za cenną pomoc merytoryczną w realizacji pracy naukowej

5 S P I S T R EŚCI SPIS RYSUNKÓW... VI SPIS TABEL...VII 1. WSTĘP STAN PROBLEMU CEL I TEZA BADAWCZA PRACY STRUKTURA PRACY ALGORYTMY SZYFROWANIA BLOKOWE ALGORYTMY SZYFROWANIA Algorytm DES Algorytm Triple DES Algorytm IDEA Algorytm Rijndael (AES) Algorytm RC Algorytm Blowfish Algorytm GOST Algorytm LOKI TRYBY PRACY SZYFRÓW BLOKOWYCH SZYFRY STRUMIENIOWE Algorytm SEAL SZYFRY ASYMETRYCZNE Algorytm RSA IMPLEMENTACJE ALGORYTMÓW SZYFROWANIA PODSUMOWANIE i

6 Spis treści 3. PROBLEMATYKA ZRÓWNOLEGLENIA ALGORYTMÓW SZYFROWANIA ARCHITEKTURY MASZYN RÓWNOLEGŁYCH Architektura systemów z pamięcią wspólną PARADYGMATY PROGRAMOWANIA RÓWNOLEGŁEGO KOMPILATORY ZRÓWNOLEGLAJĄCE ZaleŜności w pętlach Wykrywanie zaleŝności Petit Transformacje pętli Przegląd współczesnych kompilatorów zrównoleglających ŚRODOWISKA PROGRAMOWANIA RÓWNOLEGŁEGO OpenMP Miary efektywności zrownoleglenia PODSUMOWANIE METODA AUTOMATYCZNEGO ZRÓWNOLEGLENIA WYBRANYCH ALGORYTMÓW SZYFROWANIA STRATEGIE ZRÓWNOLEGLENIA ALGORYTMÓW SEKWENCYJNYCH STRATEGIE ZRÓWNOLEGLENIA ALGORYTMÓW SZYFROWANIA KONCEPCJA KOMPILACJI ALGORYTMÓW SZYFROWANIA ZAŁOśENIA WSTĘPNE METODY PROCEDURA PROCEDURA PROCEDURA KOMPILACJA ITERACYJNA Z ZASTOSOWANIEM PROCEDUR ZRÓWNOLEGLENIA PĘTLI Profiler kodu Kontroler transformacji kodu Moduł transformacji kodu PODSUMOWANIE ii

7 Spis treści 5. ALGORYTMY AUTOMATYCZNEGO ZRÓWNOLEGLENIA ALGORYTMÓW SZYFROWANIA STRATEGIA ZRÓWNOLEGLENIA ALGORYTMÓW SZYFROWANIA ALGORYTM DES Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej Postać równoległa pętli ALGORYTM TRIPLE DES Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej Postać równoległa pętli ALGORYTM IDEA Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej Postać równoległa pętli ALGORYTM RIJNDAEL (AES) Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej Postać równoległa pętli ALGORYTM RC Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej Postać równoległa pętli ALGORYTM BLOWFISH iii

8 Spis treści Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej Postać równoległa pętli ALGORYTM GOST Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej Postać równoległa pętli ALGORYTM LOKI Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej Postać równoległa pętli ALGORYTM CTR Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej Postać równoległa pętli ALGORYTM CBC Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej Postać równoległa pętli ALGORYTM CFB Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej iv

9 Spis treści Postać równoległa pętli ALGORYTM OFB Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej ALGORYTM SEAL Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej Postać równoległa pętli ALGORYTM RSA Dane wejściowe Pierwszy przebieg kompilacji iteracyjnej Kolejne przebiegi kompilacji iteracyjnej Postać równoległa pętli PODSUMOWANIE BADANIA EKSPERYMENTALNE ALGORYTMÓW RÓWNOLEGŁYCH WNIOSKI PODSUMOWANIE WNIOSKI KOŃCOWE DODATEK A. POSTAĆ MATEMATYCZNA WYBRANYCH ALGORYTMÓW SZYFROWANIA DODATEK B. CHARAKTERYSTYKA WYKORZYSTYWANEGO SPRZĘTU 167 DODATEK C. KODY ŹRÓDŁOWE ZRÓWNOLEGLONYCH ALGORYTMÓW SZYFROWANIA BIBLIOGRAFIA v

10 SPIS RYSUNKÓW Rysunek 2.1. Schemat struktury ogólnej szyfrów blokowych Rysunek 2.2. Schemat struktury ogólnej szyfrów strumieniowych Rysunek 3.1. Architektura systemów wieloprocesorowych z pamiecią wspólną Rysunek 3.2. Architektura systemów wieloprocesorowych z pamiecią rozproszoną Rysunek 3.3. Model fork-and-join Rysunek 4.1. Schemat działania tradycyjnego kompilatora optymalizującego Rysunek 4.2. Schemat działania iteracyjnego kompilatora optymalizującego Rysunek 4.3. Schemat iteracyjnej kompilacji optymalizującej algorytmów szyfrowania Rysunek 4.4.a. Schemat sposobu profilowania kodu w pierwszej iteracji kompilacji Rysunek 4.4.b. Schemat sposobu profilowania kodu w ostatniej iteracji kompilacji Rysunek 4.5. Schemat funkcjonowania transformatora kodu Rysunek 4.6.a Transformacje cząstkowe. Procedura Rysunek 4.6.b Transformacje cząstkowe. Procedura Rysunek 4.6.c Transformacje cząstkowe. Procedura vi

11 SPIS TABEL Tabela 2.1. Cechy charakterystyczne wybranych szyfrów blokowych Tabela 3.1. Cechy charakterystyczne kompilatorów zrównoleglających: SUIF, Parafrase-2 oraz Polaris Tabela 4.1. Transformacje pętli- podsumowanie Tabela 5.1. Przebieg kompilacji iteracyjnej algorytmu DES Tabela 5.2. Przebieg kompilacji iteracyjnej algorytmu Triple DES Tabela 5.3. Przebieg kompilacji iteracyjnej algorytmu IDEA Tabela 5.4. Przebieg kompilacji iteracyjnej algorytmu Rijndael (AES) Tabela 5.5. Przebieg kompilacji iteracyjnej algorytmu RC Tabela 5.6. Przebieg kompilacji iteracyjnej algorytmu Blowfish Tabela 5.7. Przebieg kompilacji iteracyjnej algorytmu GOST Tabela 5.8. Przebieg kompilacji iteracyjnej algorytmu LOKI Tabela 5.9. Wyniki kompilacji iteracyjnej zrównoleglonych algorytmów szyfrowania Tabela 6.1. Przyspieszenia pracy operacji szyfrowania dla pliku file_large.dat Tabela 6.2. Przyspieszenia pracy operacji deszyfrowania dla pliku file_large.dat Tabela 6.3. Przyspieszenia pracy algorytmów szyfrowania dla pliku file_large.dat Tabela 6.4. Przyspieszenia pracy operacji szyfrowania dla pliku file_small.dat Tabela 6.5. Przyspieszenia pracy operacji deszyfrowania dla pliku file_small.dat Tabela 6.6. Przyspieszenia pracy algorytmów szyfrowania dla pliku file_small.dat Tabela A.1. Charakterystyka systemu SGI Altix vii

12 1 1. WSTĘP Rozdział niniejszy stanowi wprowadzenie do obranej problematyki badawczej. W punkcie 1.1. przedstawiono uzasadnienie podjęcia tematu wraz ze skrótowym opisem obecnego stanu wiedzy w zakresie tematyki prowadzonych badań. W punkcie 1.2. postawiono tezę badawczą pracy, zdefiniowano cel pracy, wyznaczając przy tym zakres prowadzonych badań oraz prezentując narzędzia programowe niezbędne do ich realizacji, jak i metodykę prowadzonych badań, a takŝe sposób ich weryfikacji. Punkt 1.3. poświęcono przedstawieniu struktury pracy wraz z krótkim opisem treści poszczególnych jej rozdziałów Stan problemu NajwaŜniejszą po bezpieczeństwie cechą funkcjonalną algorytmów szyfrowania z punktu widzenia uŝytkownika jest szybkość szyfrowania oraz deszyfrowania danych. W dobie społeczeństwa informacyjnego wraz z gwałtownym rozprzestrzenianiem się i rozwojem sieci komputerowych, zarówno globalnych, jak i korporacyjnych, a w następstwie tego lawinowym zwiększeniem ilości przesyłanych informacji poprzez pojedynczego uŝytkownika sieci, zapewnienie odpowiedniej prędkości szyfrowania oraz deszyfrowania informacji, czyli de facto skracanie czasu potrzebnego na jej zaszyfrowanie oraz odszyfrowanie jest bardzo istotnym problemem mającym duŝe znaczenie praktyczne. W związku z tym nawet niewielka róŝnica pomiędzy prędkościami poszczególnych szyfrów lub implementacji danego szyfru przy identycznym poziomie ich bezpieczeństwa moŝe spowodować wybór przez 1

13 Wstęp uŝytkownika szyfru szybszego. W celu sprostania wymogom stawianym współczesnym systemom bezpieczeństwa sieci komputerowych w aspekcie prędkości ich działania prowadzone są prace w kierunku zwiększenia szybkości szyfrowania oraz deszyfrowania danych zarówno w warstwie sprzętowej, jak i programowej. W dziedzinie sprzętowej moŝliwości są następujące: zwiększenie mocy obliczeniowej procesora przetwarzającego dane, zastosowanie specjalizowanych komponentów sprzętowych. Wada główna pierwszego rozwiązania wiąŝe się z istnieniem nieusuwalnego ograniczenia mocy obliczeniowej pojedynczej jednostki przetwarzającej, która moŝe nie sprostać wymogom czasu rzeczywistego. Inne ograniczenia spowodowane są wzrostem ciepła wytwarzanego przez tranzystory przypadającego na jednostkę powierzchni dla procesorów o olbrzymich mocach obliczeniowych, jak równieŝ wielkością oraz szybkością pamięci, która musi być dostosowana do parametrów działania procesorów. Istnieje natomiast szereg prac opisujących skuteczne zastosowanie zarówno programowalnych matryc bramek (FPGAs), jak i rzadziej występujących wskutek braku elastyczności w odniesieniu do algorytmu specjalizowanych układów scalonych (ASICs) dla zwiększenia szybkości szyfrowania oraz deszyfrowania poszczególnych algorytmów szyfrowania (np. DES, IDEA, AES, RSA), między innymi [1], [2], [3], [4], [5], [6]. Oprócz implementacji sprzętowych zaprojektowanych dla tradycyjnych komputerów sekwencyjnych moŝliwe są równieŝ wyspecjalizowane implementacje sprzętowe z wykorzystaniem wielu procesorów, opisane np. w [7], [8]. Tego typu rozwiązania naleŝy potraktować jako alternatywne w stosunku do podejścia zaproponowanego w ramach niniejszej pracy. Opcje dostępne w dziedzinie programowej to: zwiększenie szybkości algorytmów sekwencyjnych, zrównoleglenie algorytmów szyfrowania. Zwiększenie szybkości algorytmów sekwencyjnych jest moŝliwe poprzez opracowanie nowych algorytmów, szybszych od dotychczas stosowanych (istotną wadą jest w tym przypadku duŝa czasochłonność opracowania, weryfikacji oraz wdroŝenia nowych algorytmów), albo poprzez optymalizację kodu źródłowego istniejących algorytmów poprzez np. wbudowanie w niego instrukcji napisanych w języku niskiego poziomu (tj. w języku Asembler). 2

14 Wstęp Ostatnia z opcji, czyli zrównoleglenie algorytmów szyfrowania stanowi obszar, w którego obrębie prowadzone są badania w ramach niniejszej pracy. O aktualności wykorzystania maszyn wieloprocesorowych z pamięcią dzieloną świadczy dodatkowo zaobserwowany na przestrzeni ostatnich kilku lat ogromny postęp technologiczny w dziedzinie architektury komputerów równoległych. Objawia się on między innymi wprowadzeniem na rynek oprócz udoskonalanych z kaŝdą nową wersją maszyn wieloprocesorowych z procesorami jednordzeniowymi, równieŝ maszyn wieloprocesorowych z procesorami wielordzeniowymi, w przypadku których jednostki obliczeniowe pracują w ramach większego układu i w związku z tym opóźnienia w komunikacji pomiędzy nimi istotnie maleją. Dynamiczny rozwój technologii sprzętowej nie przekłada się niestety w sposób bezpośredni na znaczące zwiększenie szybkości szyfrowania i deszyfrowania informacji, poniewaŝ obecnie stosowane algorytmy szyfrowania to typowe algorytmy sekwencyjne zaprojektowane i zaimplementowane pod kątem rozwiązań technologicznych starszego typu, ukierunkowane początkowo jedynie na implementacje sprzętowe (DES), mające nierzadko po kilkanaście, a nawet kilkadziesiąt lat (np. algorytm DES został przyjęty jako standard federalny w 1976 roku (FIPS PUB46) [9]). Nie uwzględniają one specyfiki oraz uwarunkowań związanych z nowymi technologiami komputerowymi, a w efekcie nie wykorzystują w pełni ich moŝliwości obliczeniowych. Wynikająca stąd potrzeba ulepszenia obecnego oprogramowania w zakresie algorytmów szyfrowania była jednym z decydujących impulsów do rozpoczęcia badań w ramach niniejszej pracy. MoŜliwe są dwa odmienne podejścia do zrównoleglenia algorytmów: metody ręcznego zrównoleglenia, metody automatycznego zrównoleglenia. Metody ręcznego zrównoleglenia polegają na zrównolegleniu kodu źródłowego stanowiącego implementację algorytmu sekwencyjnego w oparciu o szczegółową analizę tego kodu. Zagadnienie to jest skomplikowane, gdyŝ w przypadku architektur komputerów równoległych program moŝe być niedeterministyczny, jeśli nie zostaną uwzględnione zaleŝności danych, w przeciwieństwie do architektur komputerów sekwencyjnych. Wyrazem tego jest to, Ŝe kaŝde uruchomienie programu napisanego dla takiej architektury moŝe mieć inny przebieg, a efektem jest istotne skomplikowanie procesu uruchomienia (debugowania), poniewaŝ powtarzalność wyników ma w tym przypadku fundamentalne znaczenie. W związku z powyŝszym 3

15 Wstęp istotnymi wadami tego podejścia jest znaczna czasochłonność zrównoleglenia, co przekłada się na spore koszty, przy czym istotnym wymogiem są tu równieŝ duŝe doświadczenie i wysokie kwalifikacje programisty. Metoda automatycznego zrównoleglenia podjęta w ramach niniejszej pracy polega na zrównolegleniu sekwencyjnych algorytmów szyfrowania w procesie kompilacji kodu źródłowego danego algorytmu. W związku z tym, z załoŝenia jest to metoda szybka, tania oraz prosta w obsłudze. Jak juŝ wcześniej wspomniano istnieją rozmaite implementacje sprzętowe poszczególnych algorytmów szyfrowania z wykorzystaniem wielu procesorów, brakuje natomiast analogicznych, efektywnych implementacji programowych. Prowadzone w ramach niniejszej pracy badania zorientowane są na wypełnienie tej luki poznawczej poprzez zastosowanie dynamicznie rozwijanych od początku lat 90-ych ubiegłego wieku metod zrównoleglenia pętli programowych, opisanych w wielu publikacjach, między innymi w [10], [11], [12], na podstawie których zostały utworzone kompilatory maszyn równoległych ogólnego przeznaczenia, zarówno akademickie, m.in. SUIF (Stanford University) [13], Parafrase-2 (University of Illinois) [14], Polaris (University of Illinois) [16], PARADIGM (University of Illinois) [15], CHAOS/PARTI (University of Maryland) [17], jak i komercyjne, np. PGHPF (Portland Group Inc.) [18], ORC (Intel) [19]. Wszystkie wymienione wyŝej kompilatory posiadają jednak powaŝne wady, co ma swoje przełoŝenie na stosunkowo niską jakość generowanego przez nie kodu równoległego, przy czym w części z nich brak jest ponadto zorientowania na popularne obecnie języki programowania, C lub C++. Niniejsza praca leŝy w dziedzinie nauk technicznych i dotyczy dyscypliny informatyka. Problematyka w niej poruszana mieści się w zakresie kryptografii, przetwarzania równoległego oraz technik kompilacji. Kompilator jest to program odczytujący kod źródłowy napisany w języku źródłowym i tłumaczący go na równowaŝny program docelowy, działający w fazach, które po kolei przekształcają program z jednej postaci w inną, a do jego typowych elementów zalicza się [97], [99]: analizator leksykalny, analizator syntaktyczny, analizator semantyczny, generator kodu pośredniego, 4

16 Wstęp optymalizator kodu (kompilator optymalizujący), generator kodu. W praktyce jednak, niektóre fazy mogą być łączone [97], a ponadto optymalizator kodu moŝe występować dodatkowo równieŝ w ramach preprocesora. Wyniki otrzymane w ramach niniejszej pracy dotyczą optymalizatora kodu, gdyŝ obszar uzyskanej nowej wiedzy mieści się w zakresie: analizy przepływu sterowania, analizy przepływu danych, przekształceń (transformacji) kodu wynikających z tejŝe analizy stanowiąc rozwinięcie zagadnienia automatycznego zrównoleglenia algorytmów sekwencyjnych w obszarze algorytmów szyfrowania Cel i teza badawcza pracy Istnieją dziesiątki metod zrównoleglenia pętli programowych [71], z których kaŝda posiada pewne ograniczenia, a co za tym idzie, zakres ich efektywnego zastosowania sprowadza się do pewnych, ściśle określonych typów pętli. Brak jest natomiast metody uniwersalnej, efektywnej dla pętli o dowolnej postaci. Wynika to z olbrzymiej ilości problemów do rozwiązania oraz ich duŝej złoŝoności w przypadku tak postawionego zagadnienia, a jednym z dotkliwie odczuwalnych skutków jest dotychczasowy brak, pomimo licznych prób, skutecznego kompilatora maszyn równoległych ogólnego przeznaczenia. Ograniczenie dziedziny problemu do algorytmów szyfrowania pozwala w znacznej mierze uprościć zagadnienie i dokonać trafnego doboru najbardziej adekwatnych metod zrównoleglenia pętli do poszczególnych konstrukcji kodu źródłowego algorytmów szyfrowania, dla których wymagane jest efektywne zrównoleglenie. W związku z powyŝszym celem niniejszej pracy jest opracowanie oraz weryfikacja metody i algorytmów automatycznego zrównoleglenia algorytmów szyfrowania reprezentatywnych dla kryptografii symetrycznej i asymetrycznej zapisanych w postaci kodów źródłowych w języku C. Prowadzone badania słuŝą wykazaniu prawdziwości następującej tezy badawczej: 5

17 Wstęp MoŜliwe jest opracowanie metody i algorytmów automatycznego zrównoleglenia algorytmów szyfrowania reprezentatywnych dla kryptografii symetrycznej i asymetrycznej zapisanych w postaci kodów źródłowych w języku C pozwalających zmniejszyć czas i koszty tworzenia programów równoległych oraz uzyskać wystarczającą w praktyce jakość kodu. Algorytmy automatycznego zrównoleglenia poszczególnych algorytmów szyfrowania opisano w [20], [21], [22], [23], [24], [25], [26], [27], [28], [29] i utworzono w oparciu o analizę zaleŝności danych, dobór metod redukcji, bądź usuwania zaleŝności iteracyjnych oraz dobór procedur automatycznego zrównoleglenia pętli programowych, natomiast zarys metody przedstawiono w [30], [108]. RóŜnica pomiędzy metodą automatycznego zrównoleglenia algorytmów szyfrowania oraz algorytmem ich automatycznego zrównoleglenia tkwi w tym, Ŝe w przypadku metody (zgodnie z definicją prof. Tadeusza Kotarbińskiego [96]) mamy do czynienia z zaplanowanym systemem postępowania, którego celem w danym przypadku jest zrównoleglenie algorytmu szyfrowania polegającym na określonym doborze i układzie jego działań składowych i nadającym się do wielokrotnego zastosowania (tj. przeznaczonym dla dowolnego algorytmu szyfrowania, zgodnie z przyjętym zakresem stosowalności metody), natomiast w przypadku algorytmu mamy do czynienia ze sformalizowanym ciągiem logicznie powiązanych instrukcji, których wykonanie pozwoli na przetworzenie danych wejściowych (tj. sekwencyjnego algorytmu szyfrowania) w dane wyjściowe (tj. zrównoleglony program implementujący dany algorytm). Opracowana metoda ma szeroki zakres stosowalności zarówno w odniesieniu do typów algorytmów szyfrowania, trybów pracy algorytmów szyfrowania (wzięto pod uwagę popularne obecnie algorytmy szyfrowania: szyfry blokowe: DES, Triple DES, IDEA, AES, RC5, Blowfish LOKI91, GOST, szyfr strumieniowy SEAL, szyfr asymetryczny RSA oraz standardowe tryby pracy szyfrów blokowych: ECB, CBC, CFB, CTR), jak równieŝ typów maszyn wieloprocesorowych (od komputerów o duŝych mocach obliczeniowych- klasy SGI, Sun, Cray do komputerów klasy PC opartych na architekturze wieloprocesorowej lub wielordzeniowej zawierających róŝną ilość procesorów oraz rdzeni). Dane wejściowe zarówno metody, jak i algorytmów automatycznego zrównoleglenia algorytmów szyfrowania stanowi kod źródłowy sekwencyjnego algorytmu szyfrowania zaimplementowany w języku C. Zaproponowana metoda, jak 6

18 Wstęp równieŝ poszczególne algorytmy zawierają ściśle określony zestaw kroków, których realizacja pozwala w pierwszej kolejności przeprowadzić analizę zaleŝności danych dla pętli, następnie usunąć zaleŝności danych blokujące przetwarzanie równoległe, a w końcu w efektywny sposób zrównoleglić kod źródłowy otrzymany na wejściu. Analiza zaleŝności danych była wspomagana tam, gdzie było to moŝliwe specjalnym narzędziem do wyznaczania zaleŝności iteracyjnych- programem Petit [31], będącym jednym z komponentów Project Omega opracowanego w University of Maryland [32]. Wszystkie algorytmy równoległe zaimplementowano zgodnie ze standardem programowania dla maszyn równoległych OpenMP [33], [34]. Weryfikacja algorytmów zrównoleglonych posiada dwa aspekty: poprawność obliczeń oraz zwiększenie ich wydajności w porównaniu z aplikacjami sekwencyjnymi i dokonana jest w oparciu o dane uzyskane dla maszyny wieloprocesorowej zawierającej rozmaitą ilość wątków (dwa, cztery, osiem oraz szesnaście wątków) dla danych wejściowych o zróŝnicowanym rozmiarze, od rozmiaru danych rzędu kilkuset kilobajtów do rzędu kilku megabajtów Struktura pracy Struktura rozprawy przedstawia się następująco. Rozdział 1 jest wprowadzeniem do tematyki poruszanej w ramach niniejszej pracy i przedstawiono w nim uzasadnienie wyboru tematu, tło omawianych zagadnień, cel, tezę badawczą oraz strukturę pracy. W rozdziale 2 poruszono zagadnienia teoretyczne z dziedziny kryptografii związane z algorytmami szyfrowania uwzględniając między innymi ich procedury szyfrowania oraz deszyfrowania, cechy charakterystyczne oraz implementacje, w celu lepszego zrozumienia procesu zrównoleglenia omówionego w rozdziale 4 oraz rozdziale 5. W rozdziale 3 przedstawiono zagadnienia teoretyczne związane z przetwarzaniem równoległym w aspekcie zarówno sprzętowym jak i programowym. Omówiono zagadnienia związane z kompilatorami zrównoleglającymi, przedstawiono środowiska programowania równoległego ze szczególnym uwzględnieniem standardu OpenMP oraz stosowane miary oceny efektywności aplikacji równoległych. W rozdziale 4 podano szczegółowy opis wraz z załoŝeniami wstępnymi metody automatycznego zrównoleglenia wybranych algorytmów szyfrowania. Metoda 7

19 Wstęp oparta jest na autorskich procedurach zrównoleglenia algorytmów szyfrowania opracowanych zgodnie z przyjętą strategią zrównoleglenia algorytmów sekwencyjnych uwzględniającą specyfikę algorytmów szyfrowania oraz technice kompilacji iteracyjnej. W rozdziale 5 opisano proces automatycznego zrównoleglenia rozpatrywanych w ramach zakresu niniejszej pracy algorytmów szyfrowania wraz z podziałem na kolejne jego etapy, zgodnie z opracowaną metodą ich zrównoleglenia przedstawioną w rozdziale 4. W kolejnym rozdziale poświęconym przeprowadzonym badaniom eksperymentalnym przedstawiono wyniki wszystkich badań eksperymentalnych z zastosowaniem równoległych algorytmów szyfrowania wraz z wnioskami z tych badań. W rozdziale 7 sformułowano wnioski końcowe dotyczące realizacji podjętych w pracy zagadnień. Praca niniejsza zawiera ponadto trzy dodatki: dodatek A, w którym przedstawiono postać matematyczną poszczególnych algorytmów szyfrowania, dodatek B zawierający dane techniczne sprzętu wykorzystanego do przeprowadzenia badań eksperymentalnych oraz dodatek C (na płycie CD), gdzie zgromadzono kody źródłowe algorytmów zrównoleglonych. 8

20 2 2. ALGORYTMY SZYFROWANIA W celu zrozumienia specyficznych wymagań stawianych współczesnym aplikacjom słuŝącym do szyfrowania oraz deszyfrowania danych uŝytecznym jest przedstawienie niezbędnych podstaw teoretycznych dotyczących algorytmów szyfrowania, zastrzegając przy tym jednocześnie, Ŝe dostarczone w ramach niniejszej pracy informacje mają charakter zwięzły i nie wyczerpują poruszanych zagadnień, natomiast bardziej szczegółowy ich opis znaleźć moŝna, między innymi w następujących monografiach: [35], [36] i [37]. Utajnianie cennych informacji jest naturalną potrzebą człowieka Ŝyjącego w społeczności ludzkiej. Nauką bazującą na tej elementarnej potrzebie ludzkiej jest kryptografia (gr. kryptós- ukryty, gráphein- pisać) będąca sztuką zabezpieczania wiadomości [35]. Kryptograficzne metody zabezpieczenia wiadomości polegają zazwyczaj na jej zaszyfrowaniu, czyli zapisaniu w postaci niezrozumiałej dla osób postronnych, a jednocześnie łatwo dostępnej dla osób upowaŝnionych. Podstawowym narzędziem słuŝącym do tego celu jest algorytm szyfrowania zwany równieŝ szyfrem (hebr. saphar- liczyć). Istnieje znaczna ilość rozmaitych szyfrów, które moŝna podzielić na szyfry klasyczne oraz szyfry współczesne. Badania przeprowadzone w ramach niniejszej pracy poświęcono jedynie szyfrom współczesnym, z uwagi na to, Ŝe mają obecnie szerokie zastosowanie oraz obiecujące perspektywy na przyszłość. Nowoczesna kryptografia zgodnie z regułą Kerckhoffa rozwiązuje kwestie bezpieczeństwa nie za pomocą tajnego algorytmu, ale za pomocą tajnego klucza (oznaczanego zwykle literą K), który moŝe przyjąć jedną z wielu wartości ze swojej 9

21 Algorytmy szyfrowania przestrzeni kluczy (ang. key space) w celu szyfrowania lub deszyfrowania wiadomości [35]. Istnieją dwie grupy współczesnych algorytmów szyfrowania, w których stosuje się klucze [35]: algorytmy symetryczne, algorytmy asymetryczne. Podstawowa róŝnica pomiędzy nimi dotyczy sposobu uŝywania kluczy. W przypadku algorytmów symetrycznych operujemy kluczem (lub kluczami) prywatnym (tajnym), który nie moŝe dostać się w niepowołane ręce, gdyŝ na jego tajności opiera się bezpieczeństwo algorytmu, natomiast w przypadku algorytmów asymetrycznych mamy do czynienia z dwoma kluczami, jednym dostępnym dla kaŝdego, zwanym kluczem publicznym (jawnym), drugim- kluczem prywatnym (tajnym) [35]. Szyfry symetryczne dzielą się z kolei na [37]: szyfry blokowe szyfry strumieniowe. RóŜnica pomiędzy szyframi blokowymi i strumieniowymi polega na tym, Ŝe szyfry blokowe operują na stałym przekształceniu duŝych bloków tekstu jawnego, podczas gdy szyfry strumieniowe operują na zmieniającym się w czasie przekształceniu na pojedynczych znakach tekstu jawnego [38]. W kolejnych punktach pracy zostaną oddzielnie omówione szyfry blokowe, tryby pracy szyfrów blokowych, szyfry strumieniowe, szyfry asymetryczne oraz implementacje algorytmów szyfrowania Blokowe algorytmy szyfrowania Blokowy algorytm szyfrowania przekształca poszczególne bloki bitów o długości n reprezentujące strumień informacji do zaszyfrowania (tekst jawny) w odpowiadające im bloki bitów takiej samej długości reprezentujące strumień szyfrogramu, zaleŝne od parametru K będącego równieŝ ciągiem bitów (klucz prywatny) o długości k. Odwzorowanie powyŝsze moŝna zapisać w postaci matematycznej: F } n n K ( ) :{0,1} {0,1, [2.1] 10

22 Algorytmy szyfrowania przy czym naleŝy zaznaczyć, Ŝe odwzorowanie to jest bijekcją (posiada odwzorowanie odwrotne F 1 ( ) ). K Zgodnie ze wzorem 2.1 parametrami operacyjnymi szyfru blokowego są: blok wiadomości jawnej X (w przypadku szyfrowania) lub szyfrogramu C (w przypadku deszyfrowania)- długości n-bitów (zwykle długości 64 lub 128 bitów), k-bitowy klucz prywatny K. Szyfrowanie oraz deszyfrowanie przebiegają w ramach następujących kroków: wybór klucza sesyjnego K, podział tekstu jawnego (szyfrogramu) na bloki o długości n-bitów (w przypadku, gdy ostatni blok ma mniejszą długość konieczne jest jego uzupełnienie do pełnej długości), {X 1,, X t }- w przypadku szyfrowania, {C 1,, C t }- w przypadku deszyfrowania, szyfrowanie (deszyfrowanie) właściwe polegające na wykonywaniu funkcji F ( ) ( F 1 ( ) w przypadku deszyfrowania) dla kaŝdego K K bloku tekstu jawnego (w przypadku deszyfrowania- dla kaŝdego bloku szyfrogramu) oparte na zastosowaniu jednego z trybów pracy szyfrów blokowych (omówionych w ramach punktu 2.2 niniejszej pracy). Bezpieczeństwo szyfrów blokowych realizowane jest nie tylko poprzez stosowanie kluczy prywatnych, ale takŝe poprzez dostatecznie skomplikowane i ogólnie dostępne funkcje F ( ). Zgodnie z powszechnie przyjętą zasadą budowy szyfrów K blokowych głównym komponentem funkcji F ( ) jest r-krotne (r jest liczbą rund danego algorytmu) złoŝenie pewnego przekształcenia f ( ), gdzie i= 1, 2,,r, zwanego funkcją rundową [37]. Funkcja rundowa posiada zatem r parametrów w postaci kluczy rundowych K i otrzymywanych z klucza K za pomocą specjalnego algorytmu generowania kluczy rundowych. Funkcja rundowa f ( ) działająca na kolejne bloki wejściowe X 1,,X t stanowi złoŝenie szeregu prostych operacji: nieliniowych (oznaczanych S i )- podstawień (zastępowania ciągu bitów podbloków bloku X i innymi ciągami bitów) zwykle zwanych skrzynkami podstawieniowymi (ang. S-box), liniowych (oznaczanych L i )- permutacji bitów bloku X i. K K i K i 11

23 Algorytmy szyfrowania Skomplikowana funkcja F ( ) stanowi wynik wielokrotnego złoŝenia K stosunkowo prostej funkcji f ( ) będącej z kolei odpowiednim złoŝeniem podstawień K i i permutacji bitów w ramach bloków. Bezpieczeństwo szyfru blokowego zaleŝy nie tylko od operacji wykonywanych w ramach warstwy nieliniowej oraz liniowej funkcji f ( ), ale równieŝ od trzeciego parametru operacyjnego szyfrów blokowych- ilości wykonywanych rund. Więcej rund algorytmu oznacza większe jego bezpieczeństwo, jak równieŝ dłuŝszy czas wykonywania operacji szyfrowania oraz deszyfrowania danych. Schemat struktury ogólnej blokowego algorytmu szyfrowania przedstawiono na rys K i blok wejściowy klucz prywatny 1... r F i ( ) 1 algorytm funkcja rundowa... generowania... kluczy rundowych r blok wyjściowy Rysunek 2.1. Schemat struktury ogólnej szyfrów blokowych PoniŜej przedstawiono opis działania ośmiu szyfrów blokowych uwaŝanych za algorytmy mocne kryptograficznie, wielokrotnie poddawanych kryptoanalizie, wyselekcjonowanych pod kątem ich reprezentatywności, przy czym w ramach dokonywanego wyboru kierowano się następującymi czynnikami: obecna popularność zastosowań, specyficzne cechy budowy, dostępność implementacji programowych. Wszystkie z prezentowanych poniŝej algorytmów szyfrowania spełniają powyŝsze kryteria. 12

24 Algorytmy szyfrowania Algorytm DES Data Encryption Standard (DES) to wieloletni standard szyfrowania danych opracowany w IBM, zdefiniowany w normie FIPS PUB 46-3 [39], przyjęty przez NIST w 1976 roku, zastąpiony przez nowy standard szyfrowania AES w 2002 roku. Algorytm DES stanowi modelowy przykład algorytmu blokowego o strukturze sieci Feistela, stanowiąc jednocześnie wzorzec dla projektowania nowszych szyfrów (np. Triple DES, DES-X, G-DES), jak równieŝ bardzo popularny wzorzec do porównań z nowo opracowywanymi szyframi. Obecnie uŝywany jest w aplikacjach, dla których nie są wymagane najmocniejsze zabezpieczenia. Postać matematyczną algorytmu DES przedstawiono w dodatku A (punkt A.1.) Algorytm Triple DES Algorytm Triple DES to standard szyfrowania zdefiniowany w normie FIPS PUB 46-3 [39] w 1999 roku. Algorytm Triple DES oparty jest na algorytmie DES i stanowi modelowy przykład zastosowania techniki wielokrotnego (w tym przypadku trzykrotnego) szyfrowania bloku danych. Triple DES jest obecnie bardzo popularny i słuŝy między innymi do szyfrowania danych w ramach standardu płatności elektronicznych EMV [40]. Główną wadą algorytmu jest stosunkowo mała szybkość szyfrowania [38]. Postać matematyczną algorytmu Triple DES przedstawiono w dodatku A (punkt A.2.) Algorytm IDEA Algorytm IDEA (ang. International Data Encryption Algorithm) to obecnie bardzo popularny i jeden z najbezpieczniejszych algorytmów blokowych opracowany w ETH Zürich w latach przez Xuejia Lai i Jamesa Masseya. Algorytm IDEA stanowi modelowy przykład algorytmu blokowego opartego w części o nowatorsko uogólnioną sieć Feistela [37]. Obecnie algorytm stosowany jest między innymi do 13

25 Algorytmy szyfrowania szyfrowania danych oraz wiadomości przesyłanych pocztą elektroniczną w komercyjnych wersjach programu PGP (ang. Pretty Good Privacy) [41]. Postać matematyczną algorytmu IDEA przedstawiono w dodatku A (punkt A.3.) Algorytm Rijndael (AES) Algorytm Rijndael jest aktualnym (od 2002 roku) standardem szyfrowania danych AES (ang. Advanced Encryption Standard) zdefiniowanym w normie FIPS-197 [42]. Algorytm został opracowany przez Joana Daemena i Vincenta Rijmena i szczegółowo opisany, jako propozycja do ogłoszonego w 1997 roku konkursu na nowy standard szyfrowania danych [43]. Jest to algorytm oparty na sieci przestawieniowopodstawieniowej (ang. substitution-permutation network (SPN)) o zmiennej długości bloku danych oraz klucza (dostępne są wszystkie kombinacje długości bloku i klucza spośród: 128, 192 oraz 256 bitów). Popularność algorytmu jest obecnie bardzo duŝa, a stosowany jest on, między innymi w wielu rozmaitych protokołach szyfrowania, np. w standardzie WPA2. Zasadę działania algorytmu Rijndael (AES) przedstawiono w dodatku A (punkt A.4.) Algorytm RC5 Algorytm RC5 jest opracowanym przez Rona Rivesta popularnym obecnie szyfrem blokowym z duŝą liczbą parametrów: długość bloku, długość klucza i ilość rund opartym na strukturze zbliŝonej do sieci Feistela (ang. Feistel-like network). Algorytm RC5 stosowany jest między innymi w protokołach bezpieczeństwa WTLS (ang. Wireless Transport Leser Security) technologii WAP. Stanowi on przykład bardzo elastycznego szyfru z moŝliwością optymalizacji pod kątem stosowanego sprzętu [35], [37], [45]. Postać matematyczną algorytmu RC5 przedstawiono w dodatku A (punkt A.5.). 14

26 Algorytmy szyfrowania Algorytm Blowfish Zaprojektowany w 1993 roku przez Bruce a Schneiera algorytm Blowfish to przykład szyfru blokowego o strukturze sieci Feistela, charakteryzujący się znaczną szybkością, prostotą, małymi wymaganiami odnośnie rozmiaru pamięci (nie więcej niŝ 5 kilobajtów) oraz zmienną długością klucza. Algorytm Blowfish stosowany jest w wielu komercyjnych produktach, między innymi w Norton Your Eyes Only i PCCrypto [35], [46]. Postać matematyczną algorytmu Blowfish przedstawiono w dodatku A (punkt A.6.) Algorytm GOST Algorytm GOST został przyjęty jako państwowy standard szyfrowania danych o numerze w 1989 roku w byłym Związku Radzieckim stanowiąc tam odpowiednik standardu DES. Budowa algorytmu GOST oparta jest na sieci Feistela [35]. Zasada działania algorytmu GOST została przedstawiona w dodatku A (punkt A.7.) Algorytm LOKI91 Algorytm LOKI91 został opracowany w 1991 roku w Australii i opisany w [48]. Budowa algorytmu LOKI91 oparta jest na sieci Feistela, a sam algorytm stanowi alternatywę dla algorytmu DES [35]. Zasada działania algorytmu LOKI91 została przedstawiona w dodatku A (punkt A.8.). Cechy charakterystyczne zaprezentowanych powyŝej algorytmów zostały przedstawione w tab

27 Algorytmy szyfrowania Tabela 2.1 Cechy charakterystyczne wybranych szyfrów blokowych Nazwa szyfru Rozmiar bloku Ilość Rozmiar klucza Parametry [bit] rund [bit] zmienne DES brak Triple DES brak IDEA brak Rijndael długość bloku długość klucza ilość rund RC długość bloku długość klucza ilość rund Blowfish brak GOST brak LOKI brak 2.2. Tryby pracy szyfrów blokowych Bezpieczeństwo szyfrowanych danych nie jest jedynie funkcją samego algorytmu szyfrowania, ale równieŝ trybu jego pracy. Szyfry blokowe mogą pracować w róŝnych trybach pracy, w zaleŝności od ich zastosowania. Standardowe tryby pracy szyfrów blokowych są następujące [50]: - tryb elektronicznej ksiąŝki kodowej (ang. electronic codebook (ECB) mode) - tryb wiązania bloków zaszyfrowanych (ang. cipher block chaining (CBC) mode) - tryb sprzęŝenia zwrotnego szyfrogramu (ang. cipher feedback (CFB) mode) - tryb sprzęŝenia zwrotnego wyjściowego (ang. output feedback (OFB) mode) - tryb licznikowy (ang. counter (CTR) mode). Postać matematyczna standardowych trybów pracy szyfrów blokowych została przedstawiona w dodatku A (punkty A.9. A.13.). 16

28 Algorytmy szyfrowania 2.3. Szyfry strumieniowe Szyfry strumieniowe będące klasą szyfrów symetrycznych działają na ciągach tekstu jawnego i szyfrogramu o wielkości jednego bitu lub jednego bajtu [35]. Wymagają one utworzenia specjalnego klucza strumieniowego z = z 1 z 2 z t. Do wygenerowania i-tego elementu klucza strumieniowego stosuje się funkcję f i, której wartość zaleŝy od klucza szyfrującego K oraz od pierwszych i-1 elementów tekstu jawnego [36]: z i = f i (K, m 1,m 2,, m i-1 ). [2.2] i-ty element klucza strumieniowego (z i ) uŝywa się do szyfrowania i-tego elementu wiadomości jawnej (m i ): c i = e Zi (m i ), [2.3] jak równieŝ do deszyfrowania i-tego elementu szyfrogramu (c i ): m i = e Zi (c i ). [2.4] Parametrami operacyjnymi szyfrów strumieniowych są: długość klucza szyfrującego, ilość rund. Współczesne szyfry strumieniowe oparte są z reguły na liniowych rejestrach przesuwających ze sprzęŝeniem zwrotnym (ang. Linear Feedback Shift Registers (LFSRs)) (np. szyfr A5) i dobrze nadają się do efektywnych implementacji sprzętowych. Innym popularnym podejściem jest zaprojektowanie ich specjalnie pod kątem szybkiej implementacji programowej, jak to ma miejsce w przypadku szyfru SEAL [37]. Schemat struktury ogólnej szyfrów strumieniowych przedstawiono na rys W kolejnych punktach niniejszego rozdziału przedstawiono opis działania reprezentatywnego szyfru strumieniowego- SEAL, przy którego wyborze kierowano się tymi samymi aspektami, jak w przypadku wyboru szyfrów blokowych: reprezentatywnością, obecną popularnością zastosowań, specyficznymi cechami budowy oraz dostępnością implementacji programowych. 17

29 Algorytmy szyfrowania klucz szyfrujący klucz strumieniowy algorytm generowania klucza strumieniowego XOR szyfrogram tekst jawny Rysunek 2.2. Schemat struktury ogólnej szyfrów strumieniowych Algorytm SEAL Algorytm SEAL (ang. Software-Optimized Encryption Algorithm) to szyfr strumieniowy autorstwa Philipa Rogawaya i Dona Coppersmitha (IBM) opisany w [52], zaprojektowany specjalnie pod kątem wydajnych implementacji programowych na komputerach 32-bitowych. Algorytm SEAL jest przedstawicielem rodziny funkcji pseudolosowych (ang. pseudo-random function family) i stosowany jest między innymi do szyfrowania dysków [35]. Zasadę działania algorytmu SEAL przedstawiono w dodatku A (punkt A.14.) Szyfry asymetryczne Fundamentalna idea kryptografii asymetrycznej została opublikowana w 1976 roku przez Whitfielda Diffie ego i Martina Hellmana w artykule [53]. Zgodnie z tą ideą szyfry asymetryczne zwane takŝe szyframi z kluczem publicznym wykorzystują dwa róŝne klucze (w przeciwieństwie do szyfrów symetrycznych), klucz tajny uŝywany do deszyfrowania szyfrogramu oraz klucz jawny wykorzystywany do szyfrowania tekstu jawnego, przy czym zgodnie z załoŝeniem tego algorytmu niemoŝliwe jest uzyskanie jednego klucza na podstawie znajomości drugiego. Bezpieczeństwo szyfrowania z zastosowaniem szyfrów asymetrycznych jest oparte na jednym z problemów teorii liczb- trudnym obliczeniowo, naleŝącym do klasy problemów NP-zupełnych, jak 18

30 Algorytmy szyfrowania faktoryzacja wielkich liczb (szyfr RSA) czy obliczanie algorytmów dyskretnych (algorytm ElGamal) [35], [37] Algorytm RSA Algorytm RSA jest najpopularniejszym obecnie szyfrem asymetrycznym. Algorytm został odkryty przez Rona Rivesta, Adi Shamira i Leonarda Adlemana w 1977 roku i został opisany w [54]. Bezpieczeństwo szyfrowania w przypadku algorytmu RSA oparte jest na rozkładzie dostatecznie duŝych liczb na czynniki pierwsze, tak aŝeby zadanie to okazało się w praktyce niewykonalne. W algorytmie RSA para kluczy (klucz jawny oraz klucz tajny) jest funkcją pary duŝych liczb pierwszych, zatem uzyskanie tekstu jawnego na podstawie szyfrogramu przy znajomości klucza publicznego jest równoznaczne zadaniu faktoryzacji iloczynu wybranych liczb pierwszych. Algorytm RSA składa się z trzech powiązanych ze sobą elementów: procedury generowania pary kluczy, procedury szyfrowania tekstu jawnego z zastosowaniem klucza publicznego, procedury deszyfrowania szyfrogramu z zastosowaniem klucza tajnego, które przedstawiono w dodatku A (punkt A.15.). Algorytm RSA moŝna usprawnić stosując pewne metody i algorytmy z dziedziny teorii liczb, np. metodę łańcuchowania dodawań (ang. addition chaining) [55], metodę Montgomery ego [56], algorytm Barretta [57], algorytm Euklidesa [55], uogólnienie Eulera małego twierdzenia Fermata [35], chińskie twierdzenie o resztach [35], [37], [55] czy algorytm mnoŝenia Karacuby [58] Implementacje algorytmów szyfrowania Algorytmy szyfrowania mogą być implementowane zarówno programowo, jak i sprzętowo, przy czym oba sposoby implementacji mają właściwe sobie zalety oraz wady. Główną zaletą sprzętowych implementacji algorytmów szyfrowania jest większa ich wydajność niŝ w przypadku implementacji programowych. Implementacje programowe są natomiast stosunkowo tanie, proste w uŝyciu, łatwe do aktualizacji, przenośne oraz elastyczne. Mając na uwadze zalety implementacji programowych, a takŝe ze względu na fakt istnienia pewnych ograniczeń ich wydajności zdecydowano się na badania dotyczące zwiększenia wydajności implementacji programowych 19

31 Algorytmy szyfrowania algorytmów szyfrowania, przy czym za priorytet uznano równieŝ zachowanie dotychczasowych ich zalet- elastyczności oraz niskich kosztów implementacji. Wykorzystano implementacje poszczególnych algorytmów zapisane w języku C mając na uwadze to, Ŝe język C stanowi domyślny standard programowania, co przekłada się na największą ilość implementacji algorytmów szyfrowania wykonanych w tym języku, z uwagi na znaczną efektywność kodu wynikowego programów napisanych w tym języku (porównywalną z efektywnością kodu wynikowego języków niskiego poziomu, np. języka Asembler, a znacznie wyŝszą niŝ w przypadku innych popularnych obecnie języków programowania, jak język Java, C#, C++) przy zaletach języka wysokiego poziomu, takich jak łatwość projektowania oraz przenośność oprogramowania. Istnieją rozmaite implementacje poszczególnych algorytmów szyfrowania, gdyŝ realizacja określonego celu, którym jest w danym przypadku szyfrowanie oraz deszyfrowanie danych zgodnie z zasadą działania danego szyfru nie implikuje ściśle określonego kodu źródłowego, a w związku z tym mogą się one róŝnić od siebie. Z uwagi na szereg rozmaitych moŝliwości implementacyjnych poszczególnych algorytmów szyfrowania konieczny był ich wybór. Zastosowano następujące kryteria wyboru implementacji poszczególnych algorytmów szyfrowania: efektywność, popularność, wiarygodność prostota. Preferowano rozwiązania efektywne, popularne, wiarygodne oraz proste w implementacji. Interesujące z punktu widzenia prowadzonych badań fragmenty kodów źródłowych rozpatrywanych algorytmów szyfrowania przedstawiono w rozdziale Podsumowanie Rozdział 2 poświęcono zagadnieniom teoretycznym z dziedziny kryptografii, a w szczególności algorytmom szyfrowania z uwzględnieniem ich podziału na szyfry blokowe, szyfry strumieniowe, szyfry asymetryczne oraz tryby pracy szyfrów blokowych. Przedstawiono w skrócie dziesięć reprezentatywnych, często obecnie uŝywanych algorytmów szyfrowania zarówno symetrycznych, jak i asymetrycznych 20

32 Algorytmy szyfrowania oraz pięć standardowych trybów pracy szyfrów blokowych (zasadę ich działania w postaci matematycznej podano w dodatku A niniejszej pracy), z uwagi na to, Ŝe będą zastosowane do zrównoleglenia kodu za pomocą autorskiej metody automatycznego zrównoleglenia wybranych algorytmów szyfrowania (opisanej w rozdziale 4 niniejszej pracy). Zaprezentowano ponadto zalety oraz wady implementacji programowych oraz sprzętowych algorytmów szyfrowania, jak równieŝ kryteria wyboru poszczególnych algorytmów szyfrowania oraz ich implementacji programowych. 21

33 3 3. PROBLEMATYKA ZRÓWNOLEGLENIA ALGORYTMÓW SZYFROWANIA UmoŜliwienie coraz szybszego szyfrowania oraz deszyfrowania danych wiąŝe się ściśle z zastosowaniem do tego celu nowoczesnego sprzętu o olbrzymich mocach obliczeniowych. Dotyczy to szczególnie konieczności przetwarzania w czasie rzeczywistym danych o znaczących rozmiarach pamięci, gdzie konieczność zastosowania znacznych nakładów obliczeniowych jest rzeczą oczywistą. Nieustanny postęp technologiczny w dziedzinie architektur procesorów doprowadził do powszechnego stosowania w takich przypadkach komputerów równoległych charakteryzujących się większymi mocami obliczeniowymi w porównaniu z maszynami sekwencyjnymi. Algorytmy sekwencyjne naleŝy zrównoleglić, aŝeby efektywnie wykorzystywać moc obliczeniową komputerów równoległych. Zrównoleglenie algorytmów wymaga z jednej strony zastosowania odpowiedniego sprzętu pozwalającego wykonywać obliczenia w sposób równoległy, a z drugiej opracowania algorytmu charakteryzującego się duŝym stopniem równoległości. Zagadnieniom tym poświęcony jest kolejny rozdział pracy Architektury maszyn równoległych System wieloprocesorowy (ang. multiprocessor system) zwany równieŝ wieloprocesorem (ang. multiprocessor) został zdefiniowany w 1970 roku przez 22

34 Problematyka zrównoleglenia algorytmów szyfrowania Amerykański Państwowy Instytut Normalizacji (ANSI) jako maszyna cyfrowa złoŝona z dwu lub więcej jednostek przetwarzania sterowanych centralnie [59]. Rozwijając powyŝszą definicję naleŝy stwierdzić, Ŝe system wieloprocesorowy jest to komputer, zawierający co najmniej dwa procesory, które charakteryzują się zazwyczaj zbliŝonymi właściwościami i moŝliwościami obliczeniowymi, pracujący pod kontrolą jednego systemu operacyjnego zapewniającego współpracę pomiędzy procesorami na róŝnych poziomach [59]. Podstawą współdziałania procesorów jest komunikacja pomiędzy nimi i moŝliwa dzięki niej synchronizacja ich pracy. Odbywa się ona albo poprzez dostęp do wspólnej (dzielonej) pamięci operacyjnej (ang. shared memory), albo poprzez przesyłanie komunikatów (ang. message passing) [59]. Wynika stąd podział systemów wieloprocesorowych na: Systemy z pamięcią wspólną (dzieloną) (ang. shared memory, w skrócie SM). Architekturę tego systemu ilustruje rys.3.1. Systemy z przesyłaniem komunikatów (ang. message passing) lub systemy z pamięcią rozproszoną (ang. distributed memory, w skrócie DM). Schemat tego systemu przedstawiono na rys.3.2. Pamięć... Sieć połączęń... CPU 1 CPU 2 CPU p Rysunek 3.1. Architektura systemów wieloprocesorowych z pamięcią wspólną 23

35 Problematyka zrównoleglenia algorytmów szyfrowania Sieć połączeń... CPU 1 CPU 2... CPU p Pamięć 1 Pamięć 2 Pamięć p Rysunek 3.2. Architektura systemów wieloprocesorowych z pamięcią rozproszoną Systemy wieloprocesorowe ze wspólną pamięcią w ujęciu teoretycznym cechują się stosunkowo szybkim mechanizmem synchronizacji i komunikacji międzyprocesorowej. W praktyce jednakŝe, fakt dostępu wszystkich procesorów do jednej pamięci szybkość tę w znacznym stopniu moŝe ograniczać. Z tego względu minimalizuje się dostęp do wspólnej pamięci wykorzystując pamięci lokalne, a sieci połączeń projektuje w taki sposób, aŝeby zapewniały duŝą przepustowość. Zastosowanie pamięci lokalnych powoduje odciąŝenie pamięci wspólnej jedynie dla obliczeń lokalnych, tzn. nie korzystających z wyników pracy innych procesorów i nie generujących wyników będących danymi wejściowymi dla innych procesorów [59]. W systemach wieloprocesorowych z pamięcią rozproszoną kaŝdy procesor ma własną, jedynie jemu dostępną pamięć. Komunikacja pomiędzy procesorami odbywa się za pomocą specjalnych komunikatów przesyłanych poprzez sieć połączeń, w których występują dane potrzebne do wykonania obliczeń. Mechanizmy synchronizacji i komunikacji obarczone są większymi narzutami czasowymi niŝ w przypadku systemów ze wspólną pamięcią [59], dlatego efektywność takich systemów tym jest wyŝsza, im mniej jest powiązań pomiędzy realizowanymi procesami. Istnieją równieŝ systemy w formie pośredniej w stosunku do wyŝej wymienionych zawierające rozproszoną pamięć współdzieloną (ang. distributed shared memory, w skrócie DSM). Zawierają one model programowania wspólnej przestrzeni adresowej z fizycznie rozproszoną pamięcią oraz spójnym duplikowaniem zasobów systemowych [61]. 24

Kryptografia na procesorach wielordzeniowych

Kryptografia na procesorach wielordzeniowych Kryptografia na procesorach wielordzeniowych Andrzej Chmielowiec andrzej.chmielowiec@cmmsigma.eu Centrum Modelowania Matematycznego Sigma Kryptografia na procesorach wielordzeniowych p. 1 Plan prezentacji

Bardziej szczegółowo

2 Kryptografia: algorytmy symetryczne

2 Kryptografia: algorytmy symetryczne 1 Kryptografia: wstęp Wyróżniamy algorytmy: Kodowanie i kompresja Streszczenie Wieczorowe Studia Licencjackie Wykład 14, 12.06.2007 symetryczne: ten sam klucz jest stosowany do szyfrowania i deszyfrowania;

Bardziej szczegółowo

Zarys algorytmów kryptograficznych

Zarys algorytmów kryptograficznych Zarys algorytmów kryptograficznych Laboratorium: Algorytmy i struktury danych Spis treści 1 Wstęp 1 2 Szyfry 2 2.1 Algorytmy i szyfry........................ 2 2.2 Prosty algorytm XOR......................

Bardziej szczegółowo

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Wprowadzenie Problemy bezpieczeństwa transmisji Rozwiązania stosowane dla

Bardziej szczegółowo

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Wprowadzenie Problemy bezpieczeństwa transmisji Rozwiązania stosowane dla

Bardziej szczegółowo

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Algorytmy kryptograficzne BSK_2003

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Algorytmy kryptograficzne BSK_2003 Bezpieczeństwo systemów komputerowych Algorytmy kryptograficzne (1) mgr Katarzyna Trybicka-Francik kasiat@zeus.polsl.gliwice.pl pok. 503 Algorytmy kryptograficzne Przestawieniowe zmieniają porządek znaków

Bardziej szczegółowo

n = p q, (2.2) przy czym p i q losowe duże liczby pierwsze.

n = p q, (2.2) przy czym p i q losowe duże liczby pierwsze. Wykład 2 Temat: Algorytm kryptograficzny RSA: schemat i opis algorytmu, procedura szyfrowania i odszyfrowania, aspekty bezpieczeństwa, stosowanie RSA jest algorytmem z kluczem publicznym i został opracowany

Bardziej szczegółowo

Bezpieczeństwo systemów komputerowych

Bezpieczeństwo systemów komputerowych Bezpieczeństwo systemów komputerowych Wprowadzenie do kryptologii Aleksy Schubert (Marcin Peczarski) Instytut Informatyki Uniwersytetu Warszawskiego 16 listopada 2016 Jak ta dziedzina powinna się nazywać?

Bardziej szczegółowo

Laboratorium nr 1 Szyfrowanie i kontrola integralności

Laboratorium nr 1 Szyfrowanie i kontrola integralności Laboratorium nr 1 Szyfrowanie i kontrola integralności Wprowadzenie Jedną z podstawowych metod bezpieczeństwa stosowaną we współczesnych systemach teleinformatycznych jest poufność danych. Poufność danych

Bardziej szczegółowo

Szyfrowanie informacji

Szyfrowanie informacji Szyfrowanie informacji Szyfrowanie jest sposobem ochrony informacji przed zinterpretowaniem ich przez osoby niepowołane, lecz nie chroni przed ich odczytaniem lub skasowaniem. Informacje niezaszyfrowane

Bardziej szczegółowo

PuTTY. Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Inne interesujące programy pakietu PuTTY. Kryptografia symetryczna

PuTTY. Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Inne interesujące programy pakietu PuTTY. Kryptografia symetryczna PuTTY Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP Marcin Pilarski PuTTY emuluje terminal tekstowy łączący się z serwerem za pomocą protokołu Telnet, Rlogin oraz SSH1 i SSH2. Implementuje

Bardziej szczegółowo

Wprowadzenie do PKI. 1. Wstęp. 2. Kryptografia symetryczna. 3. Kryptografia asymetryczna

Wprowadzenie do PKI. 1. Wstęp. 2. Kryptografia symetryczna. 3. Kryptografia asymetryczna 1. Wstęp Wprowadzenie do PKI Infrastruktura klucza publicznego (ang. PKI - Public Key Infrastructure) to termin dzisiaj powszechnie spotykany. Pod tym pojęciem kryje się standard X.509 opracowany przez

Bardziej szczegółowo

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

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś   Wykład 5 Kryptografia z elementami kryptografii kwantowej Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas Wykład 5 Spis treści 9 Algorytmy asymetryczne RSA 3 9.1 Algorytm RSA................... 4 9.2 Szyfrowanie.....................

Bardziej szczegółowo

Podpis elektroniczny

Podpis elektroniczny Podpis elektroniczny Powszechne stosowanie dokumentu elektronicznego i systemów elektronicznej wymiany danych oprócz wielu korzyści, niesie równieŝ zagroŝenia. Niebezpieczeństwa korzystania z udogodnień

Bardziej szczegółowo

Algorytmy asymetryczne

Algorytmy asymetryczne Algorytmy asymetryczne Klucze występują w parach jeden do szyfrowania, drugi do deszyfrowania (niekiedy klucze mogą pracować zamiennie ) Opublikowanie jednego z kluczy nie zdradza drugiego, nawet gdy można

Bardziej szczegółowo

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi. 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

Bardziej szczegółowo

Architektury akceleratorów kryptograficznych opartych o układy programowalne. Marcin Rogawski

Architektury akceleratorów kryptograficznych opartych o układy programowalne. Marcin Rogawski Architektury akceleratorów kryptograficznych opartych o układy programowalne. Marcin Rogawski rogawskim@prokom.pl Plan referatu: Budowa akceleratora kryptograficznego; Struktura programowalna element fizyczny;

Bardziej szczegółowo

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA Grzegorz Bobiński Uniwersytet Mikołaja Kopernika Toruń, 22.05.2010 Kodowanie a szyfrowanie kodowanie sposoby przesyłania danych tak, aby

Bardziej szczegółowo

Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Marcin Pilarski

Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Marcin Pilarski Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP Marcin Pilarski PuTTY PuTTY emuluje terminal tekstowy łączący się z serwerem za pomocą protokołu Telnet, Rlogin oraz SSH1 i SSH2. Implementuje

Bardziej szczegółowo

Szyfry Strumieniowe. Zastosowanie wybranych rozwiąza. zań ECRYPT do zabezpieczenia komunikacji w sieci Ethernet. Opiekun: prof.

Szyfry Strumieniowe. Zastosowanie wybranych rozwiąza. zań ECRYPT do zabezpieczenia komunikacji w sieci Ethernet. Opiekun: prof. Szyfry Strumieniowe Zastosowanie wybranych rozwiąza zań ECRYPT do zabezpieczenia komunikacji w sieci Ethernet Arkadiusz PłoskiP Opiekun: prof. Zbigniew Kotulski Plan prezentacji Inspiracje Krótkie wprowadzenie

Bardziej szczegółowo

1.1. Standard szyfrowania DES

1.1. Standard szyfrowania DES 1.1. Standard szyrowania DES Powstał w latach siedemdziesiątych i został przyjęty jako standard szyrowania przez Amerykański Narodowy Instytut Standaryzacji (ang. American National Standards Institute

Bardziej szczegółowo

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

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś  Wykład 8 Kryptografia z elementami kryptografii kwantowej Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas Wykład 8 Spis treści 13 Szyfrowanie strumieniowe i generatory ciągów pseudolosowych 3 13.1 Synchroniczne

Bardziej szczegółowo

II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI

II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI STEGANOGRAFIA Steganografia jest nauką o komunikacji w taki sposób by obecność komunikatu nie mogła zostać wykryta. W odróżnieniu od kryptografii

Bardziej szczegółowo

Bezpieczeństwo danych, zabezpieczanie safety, security

Bezpieczeństwo danych, zabezpieczanie safety, security Bezpieczeństwo danych, zabezpieczanie safety, security Kryptologia Kryptologia, jako nauka ścisła, bazuje na zdobyczach matematyki, a w szczególności teorii liczb i matematyki dyskretnej. Kryptologia(zgr.κρυπτός

Bardziej szczegółowo

2.1. System kryptograficzny symetryczny (z kluczem tajnym) 2.2. System kryptograficzny asymetryczny (z kluczem publicznym)

2.1. System kryptograficzny symetryczny (z kluczem tajnym) 2.2. System kryptograficzny asymetryczny (z kluczem publicznym) Dr inż. Robert Wójcik, p. 313, C-3, tel. 320-27-40 Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska E-mail: Strona internetowa: robert.wojcik@pwr.edu.pl google: Wójcik

Bardziej szczegółowo

Opis efektów kształcenia dla modułu zajęć

Opis efektów kształcenia dla modułu zajęć Nazwa modułu: Kryptografia Rok akademicki: 2032/2033 Kod: IIN-1-784-s Punkty ECTS: 3 Wydział: Informatyki, Elektroniki i Telekomunikacji Kierunek: Informatyka Specjalność: - Poziom studiów: Studia I stopnia

Bardziej szczegółowo

Marcin Szeliga Dane

Marcin Szeliga Dane Marcin Szeliga marcin@wss.pl Dane Agenda Kryptologia Szyfrowanie symetryczne Tryby szyfrów blokowych Szyfrowanie asymetryczne Systemy hybrydowe Podpis cyfrowy Kontrola dostępu do danych Kryptologia Model

Bardziej szczegółowo

Zastosowania informatyki w gospodarce Wykład 5

Zastosowania informatyki w gospodarce Wykład 5 Instytut Informatyki, Automatyki i Robotyki Zastosowania informatyki w gospodarce Wykład 5 Podstawowe mechanizmy bezpieczeństwa transakcji dr inż. Dariusz Caban dr inż. Jacek Jarnicki dr inż. Tomasz Walkowiak

Bardziej szczegółowo

Programowanie współbieżne Wykład 2. Iwona Kochańska

Programowanie współbieżne Wykład 2. Iwona Kochańska Programowanie współbieżne Wykład 2 Iwona Kochańska Miary skalowalności algorytmu równoległego Przyspieszenie Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas

Bardziej szczegółowo

16. Taksonomia Flynn'a.

16. Taksonomia Flynn'a. 16. Taksonomia Flynn'a. Taksonomia systemów komputerowych według Flynna jest klasyfikacją architektur komputerowych, zaproponowaną w latach sześćdziesiątych XX wieku przez Michaela Flynna, opierająca się

Bardziej szczegółowo

Szyfry kaskadowe. Szyfry kaskadowe

Szyfry kaskadowe. Szyfry kaskadowe Szyfry kaskadowe Szyfrem kaskadowym nazywamy szyfr, który jest złożeniem funkcji szyfrujących. W stosowanych w praktyce szyfrach kaskadowych jako funkcje składowe najczęściej stosowane są podstawienia

Bardziej szczegółowo

Authenticated Encryption

Authenticated Encryption Authenticated Inż. Kamil Zarychta Opiekun: dr Ryszard Kossowski 1 Plan prezentacji Wprowadzenie Wymagania Opis wybranych algorytmów Porównanie mechanizmów Implementacja systemu Plany na przyszłość 2 Plan

Bardziej szczegółowo

Zadanie 1: Protokół ślepych podpisów cyfrowych w oparciu o algorytm RSA

Zadanie 1: Protokół ślepych podpisów cyfrowych w oparciu o algorytm RSA Informatyka, studia dzienne, inż. I st. semestr VI Podstawy Kryptografii - laboratorium 2010/2011 Prowadzący: prof. dr hab. Włodzimierz Jemec poniedziałek, 08:30 Data oddania: Ocena: Marcin Piekarski 150972

Bardziej szczegółowo

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

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1 Ataki na RSA Andrzej Chmielowiec andrzej.chmielowiec@cmmsigma.eu Centrum Modelowania Matematycznego Sigma Ataki na RSA p. 1 Plan prezentacji Wprowadzenie Ataki algebraiczne Ataki z kanałem pobocznym Podsumowanie

Bardziej szczegółowo

Szyfry kaskadowe. permutacyjnej (SPP).

Szyfry kaskadowe. permutacyjnej (SPP). Szyfry kaskadowe Szyfrem kaskadowym nazywamy szyfr, który jest złożeniem funkcji szyfrujących. W stosowanych w praktyce szyfrach kaskadowych jako funkcje składowe najczęściej stosowane są podstawienia

Bardziej szczegółowo

Laboratorium nr 5 Podpis elektroniczny i certyfikaty

Laboratorium nr 5 Podpis elektroniczny i certyfikaty Laboratorium nr 5 Podpis elektroniczny i certyfikaty Wprowadzenie W roku 2001 Prezydent RP podpisał ustawę o podpisie elektronicznym, w która stanowi że podpis elektroniczny jest równoprawny podpisowi

Bardziej szczegółowo

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz Programowanie równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 23 października 2009 Spis treści Przedmowa...................................................

Bardziej szczegółowo

Projektowanie. Projektowanie mikroprocesorów

Projektowanie. Projektowanie mikroprocesorów WYKŁAD Projektowanie mikroprocesorów Projektowanie układ adów w cyfrowych - podsumowanie Algebra Boole a Bramki logiczne i przerzutniki Automat skończony System binarny i reprezentacja danych Synteza logiczna

Bardziej szczegółowo

Zadania badawcze prowadzone przez Zakład Technik Programowania:

Zadania badawcze prowadzone przez Zakład Technik Programowania: Zadania badawcze prowadzone przez Zakład Technik Programowania: - Opracowanie metod zrównoleglania programów sekwencyjnych o rozszerzonym zakresie stosowalności. - Opracowanie algorytmów obliczenia tranzytywnego

Bardziej szczegółowo

Szyfrowanie RSA (Podróż do krainy kryptografii)

Szyfrowanie RSA (Podróż do krainy kryptografii) Szyfrowanie RSA (Podróż do krainy kryptografii) Nie bójmy się programować z wykorzystaniem filmów Academy Khana i innych dostępnych źródeł oprac. Piotr Maciej Jóźwik Wprowadzenie metodyczne Realizacja

Bardziej szczegółowo

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski Struktura systemu operacyjnego Schemat budowy systemu operacyjnego model warstwowy Schemat budowy systemu operacyjnego części składowe Większość systemów operacyjnych opiera się o koncepcję jądra, która

Bardziej szczegółowo

Wasze dane takie jak: numery kart kredytowych, identyfikatory sieciowe. kradzieŝy! Jak się przed nią bronić?

Wasze dane takie jak: numery kart kredytowych, identyfikatory sieciowe. kradzieŝy! Jak się przed nią bronić? Bezpieczeństwo Danych Technologia Informacyjna Uwaga na oszustów! Wasze dane takie jak: numery kart kredytowych, identyfikatory sieciowe czy hasła mogą być wykorzystane do kradzieŝy! Jak się przed nią

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Spis treści. Przedmowa... 9

Spis treści. Przedmowa... 9 Spis treści Przedmowa... 9 1. Algorytmy podstawowe... 13 1.1. Uwagi wstępne... 13 1.2. Dzielenie liczb całkowitych... 13 1.3. Algorytm Euklidesa... 20 1.4. Najmniejsza wspólna wielokrotność... 23 1.5.

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 12: Wstęp

Bardziej szczegółowo

Technologie informacyjne - wykład 12 -

Technologie informacyjne - wykład 12 - Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski

Bardziej szczegółowo

Jednostki informacji. Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles).

Jednostki informacji. Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles). Wykład 1 1-1 Informatyka nauka zajmująca się zbieraniem, przechowywaniem i przetwarzaniem informacji. Informacja obiekt abstrakcyjny, który w postaci zakodowanej moŝe być przechowywany, przesyłany, przetwarzany

Bardziej szczegółowo

Wprowadzenie do zagadnień bezpieczeńśtwa i kryptografii

Wprowadzenie do zagadnień bezpieczeńśtwa i kryptografii Wprowadzenie do zagadnień bezpieczeńśtwa i kryptografii Patryk Czarnik Bezpieczeństwo sieci komputerowych MSUI 2009/10 Zagadnienia bezpieczeństwa Identyfikacja i uwierzytelnienie Kontrola dostępu Poufność:

Bardziej szczegółowo

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ (INT) Inżynieria internetowa 1.Tryby komunikacji między procesami w standardzie Message Passing Interface. 2. HTML DOM i XHTML cel i charakterystyka. 3. Asynchroniczna komunikacja serwerem HTTP w technologii

Bardziej szczegółowo

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 2. Pamięć rzeczywista 3. Pamięć wirtualna

Bardziej szczegółowo

1. Maszyny rotorowe Enigma

1. Maszyny rotorowe Enigma Połączenie podstawowych metod szyfrowania, czyli pojedynczych podstawień lub przestawień, daje szyfr złoŝony nazywany szyfrem kaskadowym lub produktowym (ang. product cipher). Szyfry takie są połączeniem

Bardziej szczegółowo

WSIZ Copernicus we Wrocławiu

WSIZ Copernicus we Wrocławiu Bezpieczeństwo sieci komputerowych Wykład 4. Robert Wójcik Wyższa Szkoła Informatyki i Zarządzania Copernicus we Wrocławiu Plan wykładu Sylabus - punkty: 4. Usługi ochrony: poufność, integralność, dostępność,

Bardziej szczegółowo

Wykład 4 Temat: Algorytm symetryczny Twofish: cele projektowane, budowa bloków, opis algorytmu, wydajność algorytmu.

Wykład 4 Temat: Algorytm symetryczny Twofish: cele projektowane, budowa bloków, opis algorytmu, wydajność algorytmu. Wykład 4 Temat: Algorytm symetryczny Twofish: cele projektowane, budowa bloków, opis algorytmu, wydajność algorytmu. W roku 1972 Narodowe Biuro Standardów (obecnie Narodowy Instytut Standardów i Technologii

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

Wykład 4 Bezpieczeństwo przesyłu informacji; Szyfrowanie

Wykład 4 Bezpieczeństwo przesyłu informacji; Szyfrowanie Wykład 4 Bezpieczeństwo przesyłu informacji; Szyfrowanie rodzaje szyfrowania kryptografia symetryczna i asymetryczna klucz publiczny i prywatny podpis elektroniczny certyfikaty, CA, PKI IPsec tryb tunelowy

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część pierwsza Od języka symbolicznego do języka wysokiego poziomu Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót

Bardziej szczegółowo

Zarządzanie pamięcią w systemie operacyjnym

Zarządzanie pamięcią w systemie operacyjnym Zarządzanie pamięcią w systemie operacyjnym Cele: przydział zasobów pamięciowych wykonywanym programom, zapewnienie bezpieczeństwa wykonywanych procesów (ochrona pamięci), efektywne wykorzystanie dostępnej

Bardziej szczegółowo

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

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś  Wykład 7 Kryptografia z elementami kryptografii kwantowej Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas Wykład 7 Spis treści 11 Algorytm ElGamala 3 11.1 Wybór klucza.................... 3 11.2 Szyfrowanie.....................

Bardziej szczegółowo

Programowanie w języku C++ Grażyna Koba

Programowanie w języku C++ Grażyna Koba Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad

Bardziej szczegółowo

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (http://www.amu.edu.pl/~mtanas)

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (http://www.amu.edu.pl/~mtanas) Hosting WWW Bezpieczeństwo hostingu WWW Dr Michał Tanaś (http://www.amu.edu.pl/~mtanas) Szyfrowana wersja protokołu HTTP Kiedyś używany do specjalnych zastosowań (np. banki internetowe), obecnie zaczyna

Bardziej szczegółowo

WYKORZYSTANIE WEWNĘTRZNYCH GENERATORÓW RC DO TAKTOWANIA MIKROKONTROLERÓW AVR

WYKORZYSTANIE WEWNĘTRZNYCH GENERATORÓW RC DO TAKTOWANIA MIKROKONTROLERÓW AVR kpt. mgr inŝ. Paweł HŁOSTA kpt. mgr inŝ. Dariusz SZABRA Wojskowy Instytut Techniczny Uzbrojenia WYKORZYSTANIE WEWNĘTRZNYCH GENERATORÓW RC DO TAKTOWANIA MIKROKONTROLERÓW AVR W niektórych aplikacjach mikroprocesorowych,

Bardziej szczegółowo

INFORMATYKA Pytania ogólne na egzamin dyplomowy

INFORMATYKA Pytania ogólne na egzamin dyplomowy INFORMATYKA Pytania ogólne na egzamin dyplomowy 1. Wyjaśnić pojęcia problem, algorytm. 2. Podać definicję złożoności czasowej. 3. Podać definicję złożoności pamięciowej. 4. Typy danych w języku C. 5. Instrukcja

Bardziej szczegółowo

OPTYMALIZACJA HARMONOGRAMOWANIA MONTAŻU SAMOCHODÓW Z ZASTOSOWANIEM PROGRAMOWANIA W LOGICE Z OGRANICZENIAMI

OPTYMALIZACJA HARMONOGRAMOWANIA MONTAŻU SAMOCHODÓW Z ZASTOSOWANIEM PROGRAMOWANIA W LOGICE Z OGRANICZENIAMI Autoreferat do rozprawy doktorskiej OPTYMALIZACJA HARMONOGRAMOWANIA MONTAŻU SAMOCHODÓW Z ZASTOSOWANIEM PROGRAMOWANIA W LOGICE Z OGRANICZENIAMI Michał Mazur Gliwice 2016 1 2 Montaż samochodów na linii w

Bardziej szczegółowo

Dr inż. hab. Siergiej Fialko, IF-PK,

Dr inż. hab. Siergiej Fialko, IF-PK, Dr inż. hab. Siergiej Fialko, IF-PK, http://torus.uck.pk.edu.pl/~fialko sfialko@riad.pk.edu.pl 1 Osobliwości przedmiotu W podanym kursie główna uwaga będzie przydzielona osobliwościom symulacji komputerowych

Bardziej szczegółowo

Wersja dokumentacji1.01. TeleToken API

Wersja dokumentacji1.01. TeleToken API Wersja dokumentacji1.01 TeleToken API Spis treści STATUS ZWRACANY PRZEZ FUNKCJE...1 OGÓLNE ZASADY...1 INTERPRETACJA STATUSU...1 FUNKCJE BIBLIOTEKI...3 TVTTAPI_INITIALIZE...3 TVTTAPI_RANDOMIZE...3 TVTTAPI_RAND...3

Bardziej szczegółowo

PLAN ZARZĄDZANIA WYMAGANIAMI PROJEKT <NAZWA PROJEKTU> WERSJA <NUMER WERSJI DOKUMENTU>

PLAN ZARZĄDZANIA WYMAGANIAMI PROJEKT <NAZWA PROJEKTU> WERSJA <NUMER WERSJI DOKUMENTU> Załącznik nr 4.4 do Umowy nr 35-ILGW-253-.../20.. z dnia... MINISTERSTWO FINANSÓW DEPARTAMENT INFORMATYKI PLAN ZARZĄDZANIA WYMAGANIAMI PROJEKT WERSJA numer wersji

Bardziej szczegółowo

Bezpieczeństwo informacji w systemach komputerowych

Bezpieczeństwo informacji w systemach komputerowych Bezpieczeństwo informacji w systemach komputerowych Andrzej GRZYWAK Rozwój mechanizmów i i systemów bezpieczeństwa Szyfry Kryptoanaliza Autentyfikacja Zapory Sieci Ochrona zasobów Bezpieczeństwo przechowywania

Bardziej szczegółowo

Praktyczne aspekty wykorzystania nowoczesnej kryptografii. Wojciech A. Koszek <dunstan@freebsd.czest.pl>

Praktyczne aspekty wykorzystania nowoczesnej kryptografii. Wojciech A. Koszek <dunstan@freebsd.czest.pl> Praktyczne aspekty wykorzystania nowoczesnej kryptografii Wojciech A. Koszek Wprowadzenie Kryptologia Nauka dotycząca przekazywania danych w poufny sposób. W jej skład wchodzi

Bardziej szczegółowo

Numeryczna algebra liniowa

Numeryczna algebra liniowa Numeryczna algebra liniowa Numeryczna algebra liniowa obejmuje szereg algorytmów dotyczących wektorów i macierzy, takich jak podstawowe operacje na wektorach i macierzach, a także rozwiązywanie układów

Bardziej szczegółowo

Szyfrowanie danych w SZBD

Szyfrowanie danych w SZBD Szyfrowanie danych w SZBD dr inż. Maciej Nikodem Instytut Informatyki, Automatyki i Robotyki maciej.nikodem@pwr.wroc.pl 1 Czy potrzebujemy szyfrowania w SZBD? prawo, kontrola dostępu, ochrona przed: administratorem,

Bardziej szczegółowo

Historia modeli programowania

Historia modeli programowania Języki Programowania na Platformie.NET http://kaims.eti.pg.edu.pl/ goluch/ goluch@eti.pg.edu.pl Maszyny z wbudowanym oprogramowaniem Maszyny z wbudowanym oprogramowaniem automatyczne rozwiązywanie problemu

Bardziej szczegółowo

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania, Przetwarzanie równoległe PROJEKT OMP i CUDA Temat projektu dotyczy analizy efektywności przetwarzania równoległego realizowanego przy użyciu komputera równoległego z procesorem wielordzeniowym z pamięcią

Bardziej szczegółowo

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Szyfry przestawieniowe

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Szyfry przestawieniowe Bezpieczeństwo systemów komputerowych Algorytmy kryptograficzne Algorytmy kryptograficzne (1) Przestawieniowe zmieniają porządek znaków według pewnego schematu, tzw. figury Podstawieniowe monoalfabetyczne

Bardziej szczegółowo

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności. Procesory wielordzeniowe (multiprocessor on a chip) 1 Procesory wielordzeniowe 2 Procesory wielordzeniowe 3 Konsekwencje prawa Moore'a 4 Procesory wielordzeniowe 5 Intel Nehalem 6 Architektura Intel Nehalem

Bardziej szczegółowo

DOBÓR ŚRODKÓW TRANSPORTOWYCH DLA GOSPODARSTWA PRZY POMOCY PROGRAMU AGREGAT - 2

DOBÓR ŚRODKÓW TRANSPORTOWYCH DLA GOSPODARSTWA PRZY POMOCY PROGRAMU AGREGAT - 2 InŜynieria Rolnicza 14/2005 Michał Cupiał, Maciej Kuboń Katedra InŜynierii Rolniczej i Informatyki Akademia Rolnicza im. Hugona Kołłątaja w Krakowie DOBÓR ŚRODKÓW TRANSPORTOWYCH DLA GOSPODARSTWA PRZY POMOCY

Bardziej szczegółowo

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ (INT) Inżynieria internetowa 1. Tryby komunikacji między procesami w standardzie Message Passing Interface 2. HTML DOM i XHTML cel i charakterystyka 3. Asynchroniczna komunikacja serwerem HTTP w technologii

Bardziej szczegółowo

Bezpieczeństwo kart elektronicznych

Bezpieczeństwo kart elektronicznych Bezpieczeństwo kart elektronicznych Krzysztof Maćkowiak Karty elektroniczne wprowadzane od drugiej połowy lat 70-tych znalazły szerokie zastosowanie w wielu dziedzinach naszego życia: bankowości, telekomunikacji,

Bardziej szczegółowo

Wykład 3 Bezpieczeństwo przesyłu informacji; Szyfrowanie

Wykład 3 Bezpieczeństwo przesyłu informacji; Szyfrowanie Wykład 3 Bezpieczeństwo przesyłu informacji; Szyfrowanie rodzaje szyfrowania kryptografia symetryczna i asymetryczna klucz publiczny i prywatny podpis elektroniczny certyfikaty, CA, PKI IPsec tryb tunelowy

Bardziej szczegółowo

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie

Bardziej szczegółowo

Bezpieczeństwo danych i elementy kryptografii - opis przedmiotu

Bezpieczeństwo danych i elementy kryptografii - opis przedmiotu Bezpieczeństwo danych i elementy kryptografii - opis przedmiotu Informacje ogólne Nazwa przedmiotu Bezpieczeństwo danych i elementy kryptografii Kod przedmiotu 11.3-WI-INFP-BDEK Wydział Kierunek Wydział

Bardziej szczegółowo

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz Obliczenia równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 15 czerwca 2001 Spis treści Przedmowa............................................

Bardziej szczegółowo

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych. Instytut Telekomunikacji Zakład Podstaw Telekomunikacji

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych. Instytut Telekomunikacji Zakład Podstaw Telekomunikacji POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji Kamil Krawczyk Metody optymalizacji soft-procesorów NIOS Opiekun naukowy: dr

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Projektowanie systemów za pomocą języków wysokiego poziomu ESL

Projektowanie systemów za pomocą języków wysokiego poziomu ESL Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie Wydział IET Katedra Elektroniki Projektowanie systemów za pomocą języków wysokiego poziomu ESL Ćwiczenie 2 Implementacja funkcji Hash z użyciem

Bardziej szczegółowo

Czym jest kryptografia?

Czym jest kryptografia? Szyfrowanie danych Czym jest kryptografia? Kryptografia to nauka zajmująca się układaniem szyfrów. Nazwa pochodzi z greckiego słowa: kryptos - "ukryty", gráphein "pisać. Wyróżniane są dwa główne nurty

Bardziej szczegółowo

Natalia Gorynia-Pfeffer STRESZCZENIE PRACY DOKTORSKIEJ

Natalia Gorynia-Pfeffer STRESZCZENIE PRACY DOKTORSKIEJ Natalia Gorynia-Pfeffer STRESZCZENIE PRACY DOKTORSKIEJ Instytucjonalne uwarunkowania narodowego systemu innowacji w Niemczech i w Polsce wnioski dla Polski Frankfurt am Main 2012 1 Instytucjonalne uwarunkowania

Bardziej szczegółowo

Rachunek prawdopodobieństwa projekt Ilustracja metody Monte Carlo obliczania całek oznaczonych

Rachunek prawdopodobieństwa projekt Ilustracja metody Monte Carlo obliczania całek oznaczonych Rachunek prawdopodobieństwa projekt Ilustracja metody Monte Carlo obliczania całek oznaczonych Autorzy: Marta Rotkiel, Anna Konik, Bartłomiej Parowicz, Robert Rudak, Piotr Otręba Spis treści: Wstęp Cel

Bardziej szczegółowo

Najprostszy schemat blokowy

Najprostszy schemat blokowy Definicje Modelowanie i symulacja Modelowanie zastosowanie określonej metodologii do stworzenia i weryfikacji modelu dla danego układu rzeczywistego Symulacja zastosowanie symulatora, w którym zaimplementowano

Bardziej szczegółowo

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa Autorzy scenariusza: SCENARIUSZ LEKCJI OPRACOWANY W RAMACH PROJEKTU: INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA. PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH

Bardziej szczegółowo

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1 Metodologia programowania równoległego Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje (functional

Bardziej szczegółowo

Definicje. Najprostszy schemat blokowy. Schemat dokładniejszy

Definicje. Najprostszy schemat blokowy. Schemat dokładniejszy Definicje owanie i symulacja owanie zastosowanie określonej metodologii do stworzenia i weryfikacji modelu dla danego rzeczywistego Symulacja zastosowanie symulatora, w którym zaimplementowano model, do

Bardziej szczegółowo

Technologia informacyjna

Technologia informacyjna Technologia informacyjna Pracownia nr 9 (studia stacjonarne) - 05.12.2008 - Rok akademicki 2008/2009 2/16 Bazy danych - Plan zajęć Podstawowe pojęcia: baza danych, system zarządzania bazą danych tabela,

Bardziej szczegółowo

OCHRONA INFORMACJI W SYSTEMACH I SIECIACH KOMPUTEROWYCH SYMETRYCZNE SZYFRY BLOKOWE

OCHRONA INFORMACJI W SYSTEMACH I SIECIACH KOMPUTEROWYCH SYMETRYCZNE SZYFRY BLOKOWE OCHRONA INFORMACJI W SYSTEMACH I SIECIACH KOMPUTEROWYCH SYMETRYCZNE SZYFRY BLOKOWE 1 Tryby pracy szyfrów blokowych Rzadko zdarza się, by tekst jawny zawierał tylko 64 bity, czyli 8 znaków kodu ASCII. Zwykle

Bardziej szczegółowo

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2016/2017

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2016/2017 Politechnika Krakowska im. Tadeusza Kościuszki Karta przedmiotu obowiązuje studentów rozpoczynających studia w roku akademickim 2016/2017 Wydział Fizyki, Matematyki i Informatyki Kierunek studiów: Matematyka

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Proste algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Pojęcie sortowania Sortowaniem nazywa się proces ustawiania zbioru obiektów w określonym porządku Sortowanie

Bardziej szczegółowo

Kryptografia szyfrowanie i zabezpieczanie danych

Kryptografia szyfrowanie i zabezpieczanie danych Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Kryptografia szyfrowanie i zabezpieczanie danych www.agh.edu.pl

Bardziej szczegółowo

Metody szyfrowania danych

Metody szyfrowania danych K o d o w a n i e i k o m p r e s j a Zadanie 2 Metody szyfrowania danych Celem ćwiczenia jest zapoznanie się z podstawowymi metodami szyfrowania danych z użyciem kluczy symetrycznych i asymetrycznych.

Bardziej szczegółowo

PROGRAMOWALNE STEROWNIKI LOGICZNE

PROGRAMOWALNE STEROWNIKI LOGICZNE PROGRAMOWALNE STEROWNIKI LOGICZNE I. Wprowadzenie Klasyczna synteza kombinacyjnych i sekwencyjnych układów sterowania stosowana do automatyzacji dyskretnych procesów produkcyjnych polega na zaprojektowaniu

Bardziej szczegółowo

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas. Wykład 11

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas. Wykład 11 Kryptografia z elementami kryptografii kwantowej Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas Wykład 11 Spis treści 16 Zarządzanie kluczami 3 16.1 Generowanie kluczy................. 3 16.2 Przesyłanie

Bardziej szczegółowo