diff --git a/DergunPiotr-WaskoDominik/projekt/Projet_PRIR.tex b/DergunPiotr-WaskoDominik/projekt/Projet_PRIR.tex index 6b95a93..940674d 100644 --- a/DergunPiotr-WaskoDominik/projekt/Projet_PRIR.tex +++ b/DergunPiotr-WaskoDominik/projekt/Projet_PRIR.tex @@ -82,10 +82,10 @@ Celem projektu było zaimplementowanie programu pozwalającego na załamanie hashu sha1. Zastosowano metodę typu brute force. Zrównoleglenia programu dokonano za pomocą MPI. Program uruchomiono na klasterze komputerowym składającym się z 13 węzłów. \section{Algorytm brute force } -Algorytm brute force, inaczej algorytm siłowy. Ten algorytm opiera się na sukcesywnym sprawdzaniu wszystkich możliwych kombinacji w poszukiwaniu rozwiązania problemu. Nie skupia się na jego szczegółowej analizie. Zwykle jest to nieoptymalna metoda, jednak jst prosta w do zaimplementowania. Teoretycznie pozwala ona złamać każde hasło. praktycznie, w zależności od skomplikowania hasła, może to być bardzo długi czas (np. dłuższy niż istnieje Wszechświat). W zależności od kontekstu, w którym termin brute force zostaje użyty, może mieć on nieznacznie różne definicje. Meoda brute-force może być przeprowadzony wobec prawie wszystkich szyfrów symetrycznych i szyfrów asymetrycznych. +Algorytm brute force, inaczej algorytm siłowy. Ten algorytm opiera się na sukcesywnym sprawdzaniu wszystkich możliwych kombinacji w poszukiwaniu rozwiązania problemu. Nie skupia się na jego szczegółowej analizie. Zwykle jest to nieoptymalna metoda, jednak jest prosta w do zaimplementowania. Teoretycznie pozwala ona złamać każde hasło. praktycznie, w zależności od skomplikowania hasła, może to być bardzo długi czas (np. dłuższy niż istnieje Wszechświat). W zależności od kontekstu, w którym termin brute force zostaje użyty, może mieć on nieznacznie różne definicje. Metoda brute-force może być przeprowadzony wobec prawie wszystkich szyfrów symetrycznych i szyfrów asymetrycznych. \section{SHA-1} -SHA-1 (Secure Hash Algorithm) jest jednokierunkową funkcją hashującą zaprojektowaną przez National Security Agency (NSA) i opublikowaną przez National Institute of Standards and Technology (NIST. Wytwarza ona skrót o długości 160 bitów z wiadomości o dowolnym rozmiarze, nie większym niż pow(2,64) bitów. Funkcja SHA-1 jest +SHA-1 (Secure Hash Algorithm) jest jednokierunkową funkcją hashującą zaprojektowaną przez National Security Agency (NSA) i opublikowaną przez National Institute of Standards and Technology (NIST. Wytwarza ona skrót o długości 160 bitów z wiadomości o dowolnym rozmiarze, nie większym niż ${}2^{64}$ bitów. Funkcja SHA-1 jest oparta na zasadach podobnych, do użytych przez profesora Ronalda L. Rivesta z MIT przy projektowaniu funkcji hashujących MD4 i MD5, i w znacznym stopniu naśladuje te algorytmy. Oryginalna specyfikacja tego algorytmu została opublikowana w 1993 roku jako Secure Hash Standard, FIPS PUB 180. Ta wersja jest teraz często nazywana jako SHA-0. Była ona wycofana przez NSA krótko po publikacji i zastąpiona przez poprawioną wersję opublikowaną w 1995 roku w FIPS PUB 180-1 i nazwaną SHA-1. @@ -210,18 +210,18 @@ iMac6,1 & 4 & Core2Duo 2,16 GHz & 2 & 1\\ \hline iMac14,2 & 3 & i5-4570 3,2Ghz & 4 & 2\\ \hline -MacPro3,1 & 3 & Xeon E5462 2x 2,8 GHz & 8 & 6\\ +MacPro3,1 & 3 & 2x Xeon E5462 2,8 GHz & 8 & 6\\ \hline -MacPro4,1 & 2 & Xeon E5520 2x 2,26 GHz & 8 & 6\\ +MacPro4,1 & 2 & 2x Xeon E5520 2,26 GHz & 8 & 6\\ \hline -MacPro5,1 & 1 & Xeon E5620 2x 2,4 GHz & 8 & 8\\ +MacPro5,1 & 1 & 2x Xeon E5620 2,4 GHz & 8 & 8\\ \hline \end{tabular} \caption{Konfiguracja klastra} \end{table} \section{Opis programu} -Program został napisany w języku c++. Wykorzystana implementacja MPI to MPICH2. Zastosowany w programie algorytm jest algorytmem siłowym. Najpierw generuje hasło, potem oblicza z niego sha1 i porównuje z hashem podanym jako argument programu. Gdy są takie same program wypisuje hasło oraz czas obliczeń. Jeśli nie są zgodne wtedy próbuje szczęścia z kolejnym hasłem. Dla potrzeb tego projektu dokonano kilku założeń dotyczących hasła: +Program został napisany w języku C++. Wykorzystana implementacja MPI to MPICH2. Zastosowany w programie algorytm jest algorytmem siłowym. Najpierw generuje hasło, potem oblicza z niego sha1 i porównuje z hashem podanym jako argument programu. Gdy są takie same program wypisuje hasło oraz czas obliczeń. Jeśli nie są zgodne wtedy próbuje szczęścia z kolejnym hasłem. Dla potrzeb tego projektu dokonano kilku założeń dotyczących hasła: \begin{lista} \item Hasło może mieć długość od 2 do 10 znaków. @@ -235,7 +235,7 @@ Hasło są przydzielane do procesów kolejno, czyli dla n-ty proces otrzymuje n- W programie istnieje pewnego rodzaju ograniczenie co do ilości znaków z których generowane jest hasło. Powinna to być liczba typu ${}2^{n}$ (w tym projekcie jest to 64). Wynika to z tego, że główny licznik pętli odpowiedzialnej za generowanie haseł operuje przepełnieniem bitowym. Możliwość użycia innej niż ${}2^{n}$ liczby znaków nie pozostała by bez wpływu na szybkość całego programu. -Funkcja generująca hash SHA-1 została zaimplementowana przez autorów. W stopniu na jaki pozwalały umiejętność autorów została również zoptymalizowana pod katem jak najszybszego wykonania. +Funkcja generująca hash SHA-1 została zaimplementowana przez autorów. W stopniu na jaki pozwalały umiejętność autorów została również zoptymalizowana pod kątem jak najszybszego wykonania. \section{Wyniki}