John the Ripper 1.9.0-jumbo-1 z obsługą FPGA

Wydano nową wersję najstarszego wspieranego programu do łamania haseł John the Ripper 1.9.0-jumbo-1. (Projekt rozwija się od 1996 roku.) Na Część 2: laboratoria dostępne są do pobrania źródła oraz gotowe wersje dla Windows.

Zauważono, że od wydania wersji 1.8.0-jumbo-1 minęło 4,5 roku, w trakcie których wprowadzono ponad 6000 zmian (commity git) od ponad 80 programistów. W tym czasie programiści zalecali korzystanie z aktualnej wersji na GitHubie, której stan był utrzymywany stabilny pomimo wprowadzanych zmian dzięki ciągłej integracji, obejmującej wstępną kontrolę każdej zmiany (pull request) na wielu platformach. Cechą nowej wersji jest pojawienie się wsparcia dla FPGA w dodatku do CPU, GPU i Xeon Phi.


Dla płyt ZTEX 1.15y, które zawierają 4 układy FPGA i pierwotnie były używane głównie do wydobywania Bitcoinów, teraz zaimplementowano 7 typów haseł: bcrypt, klasyczny descrypt (w tym bigcrypt), sha512crypt, sha256crypt, md5crypt (w tym Apache apr1 i AIX smd5), Drupal7 oraz phpass (używane w szczególności w WordPressie). Niektóre z nich zostały zaimplementowane na FPGA po raz pierwszy. Dla bcrypt osiągnięta wydajność wynosi około 119k c/s przy 2^5 iteracjach („$2b$05”) przy zużyciu energii wynoszącym około 27 watów, co znacznie przewyższa wyniki dla najnowszych GPU na płytę, w zakresie ceny sprzętu i na wat. Obsługiwane są również klastry z płyt tego typu, co zostało potwierdzone aż do 16 płyt (64 FPGA), kontrolowanych z jednego Raspberry Pi 2. Obsługiwana jest standardowa funkcjonalność John the Ripper, w tym wszystkie tryby łamania haseł oraz jednoczesne przetwarzanie dużej ilości hashy. W celu przyspieszenia pracy zrealizowano wykorzystanie maski (tryb "—mask", w tym w połączeniu z innymi trybami) oraz porównanie obliczonych hashy z załadowanymi na stronie FPGA. Z punktu widzenia implementacji, w wielu projektach (na przykład dla sha512crypt i Drupal7) zastosowano bloków z wielowątkowymi rdzeniami procesorów (soft CPU cores), współdziałającymi z rdzeniami kryptograficznymi. Rozwój tej funkcjonalności prowadził Denis Burykin we współpracy z innymi programistami jumbo.

Inne ważne zmiany:

  • Wsparcie dla dużej liczby dodatkowych typów skrótów, szyfrów itd., w tym zarówno klasycznych skrótów haseł (np. z nowych wersji QNX), jak i portfeli kryptowalut, szyfrowanych archiwów oraz szyfrowanych systemów plików (np. Bitlocker i FreeBSD geli), a także wsparcie dla nowych rodzajów formatów wcześniej wspieranych (np. dodano obsługę bcrypt-pbkdf dla OpenBSD softraid) i wiele więcej. W sumie dodano 80 formatów na CPU i 47 na OpenCL (a niewielka liczba starych została usunięta jako zintegrowane w nowe i przestarzałe). Łączna liczba formatów to teraz 407 na CPU (lub 262 bez formatów „dynamicznych”, konfigurowanych z plików konfiguracyjnych) i 88 na OpenCL.
  • Rezygnacja z obsługi języka CUDA na rzecz OpenCL, co wcale nie przeszkadza w pełnym wykorzystaniu GPU od NVIDIA (a wręcz pomaga, dzięki skoncentrowaniu rozwoju i optymalizacji na jednej implementacji każdego formatu pod GPU, zamiast dwóch implementacji wcześniej).
  • Wsparcie dla nowych zestawów instrukcji SIMD — AVX2, AVX-512 (w tym dla drugiej generacji Xeon Phi) i MIC (dla pierwszej generacji) — a także bardziej uniwersalne i pełne wykorzystanie SIMD w realizacjach wielu formatów, w tym zastosowanie wcześniej wspieranych zestawów instrukcji aż do AVX i XOP na x86(-64) oraz
    NEON, ASIMD i AltiVec na ARM, Aarch64 i POWER, odpowiednio. (Częściowo w ramach GSoC 2015.)
  • Liczne optymalizacje dla CPU i OpenCL, zarówno dla bardziej efektywnej pracy z dużą ilością skrótów jednocześnie (np. testowano obciążenie 320 milionami skrótów SHA-1 na GPU), jak i dla zwiększenia prędkości obliczania skrótów. Część z tych optymalizacji jest uniwersalna, część obejmuje różne podzbiory formatów, a wiele jest specyficznych dla poszczególnych formatów.
  • (Auto-)dostosowanie optymalnego buforowania testowanych haseł na CPU ("—tune=auto —verbosity=5") oraz optymalnych wymiarów zadania na OpenCL (włączona domyślnie), również z uwzględnieniem wolnego osiągania pełnej częstotliwości pracy GPU serii NVIDIA GTX 10xx i nowszych. Wykorzystanie rzeczywiście załadowanych skrótów i rzeczywistej długości testowanych haseł (gdy jest znana z wyprzedzeniem) dla takiego auto-dostosowania.
  • Dodanie kompilatora „wyrażeń dynamicznych“, wskazywanych bezpośrednio w wierszu poleceń i implementujących nowe hybrydowe typy hashy, na przykład "—format=dynamic=’sha1(md5($p).$s)’", obliczanych na CPU z użyciem SIMD. Jako składniki takich wyrażeń wspierane są dziesiątki szybkich hashy (od powszechnych jak MD5 po umiarkowanie egzotyczne jak Whirlpool), łączenie podciągów, kodowanie i dekodowanie, konwersja wielkości liter, odniesienia do hasła, soli, nazwy użytkownika oraz stałe tekstowe.
  • Usunięcie niepożądanych różnic w stosunku do hashcat, w tym wsparcie wcześniej specyficznych dla hashcat zasad (polecenia zasad listy słów), przejście na numerację urządzeń OpenCL od 1, stosowanie domyślnie tych samych długości haseł (zazwyczaj długość 7) podczas testów wydajnościowych.
  • Nowe tryby generowania weryfikowanych haseł (tryby łamania), w tym PRINCE z hashcat (tworzy „frazy”, łącząc kilka słów w porządku rosnącej długości całkowitej), podzbiory (dobierają hasła z niewystarczającą liczbą różnych symboli, nawet jeśli te symbole pochodziły z dużego zbioru możliwych) oraz hybrydowe zewnętrzne (pozwala zewnętrznym trybom, opisanym w plikach konfiguracyjnych w języku podobnym do C, generować wiele weryfikowanych haseł w oparciu o każde podstawowe „słowo”, pochodzące z innego trybu). Ponadto kilka nowych predefiniowanych zewnętrznych trybów.
  • Dodatkowe możliwości wykorzystania kilku trybów jednocześnie (jeden na drugim — stacking), a także dla takiego wykorzystania zestawów zasad (stacking zasad listy słów).
  • Udoskonalenia trybów mask (stopniowe rozwijanie maski w określonym zakresie długości, stosowanie maski po stronie urządzenia OpenCL lub płyty FPGA) oraz single crack (rozsądne zachowanie na urządzeniach obliczających dużą liczbę hashy równolegle, na co wcześniej w tym trybie brakowało weryfikowanych haseł, jak również ograniczenia dotyczące zużycia pamięci).
  • Wiele ulepszeń wsparcia dla Unicode i innych kodowań w różnych podsystemach.
  • Wiele ulepszeń programów *2john (konwertujących pliki różnych formatów na
    potrzeby john), szczególnie wpapcap2john (przetwarza ruch WiFi).
  • Wiele nowych opcji wiersza poleceń, ustawień w john.conf, opcji skryptu configure oraz powiązanych nowych funkcji, z których nie wszystkie udało się tutaj wymienić.
  • Poprawa jakości kodu dzięki wbudowanej obsłudze wersji debug, w tym AddressSanitizer (wcześniej) oraz UndefinedBehaviorSanitizer (dodane), wdrożeniu wbudowanego fuzzera formatów (w ramach GSoC 2015), oraz zastosowaniu ciągłej integracji (kompilacje dla dziesiątek kombinacji systemu operacyjnego i kompilatora oraz testowanie poprawnej obsługi wszystkich formatów).

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster