Το John the Ripper 1.9.0-jumbo-1 κυκλοφόρησε με υποστήριξη FPGA

Απελευθερώθηκε новая версия старейшей поддерживаемой программы для подбора паролей John the Ripper 1.9.0-jumbo-1 (проект развивается с 1996 года). C выхода прошлой версии 1.8.0-jumbo-1 прошло 4.5 года, за которые было внесено более 6000 изменений (git commits) от более 80 разработчиков. Благодаря συνεχής ενσωμάτωση, включающей предварительную проверку каждого изменения (pull request) на многих платформах, в течение этого срока разработчики рекомендовали использовать τρέχουσα αναθεώρηση από το GitHub, состояние которой поддерживалось стабильным несмотря на вносимые изменения. Основной код проекта διανέμονται από под лицензией GPLv2+, а код некоторых компонентов под лицензией BSD.

Особенностью новой версии является появление поддержки FPGA (в дополнение к CPU, GPU и Xeon Phi). Для плат Ztex 1.15y, включающих по 4 чипа FPGA и исходно использовавшихся в основном для майнинга Bitcoin, теперь реализованы 7 типов хешей паролей: bcrypt, классический descrypt (включая bigcrypt), sha512crypt, sha256crypt, md5crypt (включая Apache apr1 и AIX smd5), Drupal7 и phpass (используется, в частности, в WordPress). Некоторые из них реализованы на FPGA впервые.

Для bcrypt, достигнутая производительность в ~119k c/s при 2^5 итераций («$2b$05») с потребляемой мощностью около ~27 ватт существенно превосходит результаты для новейших GPU в расчете на плату, на цену оборудования и на ватт. Также поддерживаются συστάδες из плат этого типа, что проверено вплоть до 16 плат (64 чипа FPGA), контролируемых с одного Raspberry Pi 2. Поддерживается обычная функциональность John the Ripper, включая все режимы подбора паролей и одновременную загрузку большого количества хешей.

Для ускорения работы реализовано применение маски (режим «—mask», в том числе в комбинации с другими режимами) и сравнение вычисленных хешей с загруженными на стороне FPGA. С точки зрения реализации, во многих из дизайнов (например, для sha512crypt και Drupal7) χρησιμοποιήθηκαν μπλοκ που αποτελούνται από πυρήνες επεξεργαστή πολλαπλών νημάτων (μαλακοί πυρήνες CPU) που αλληλεπιδρούν με κρυπτογραφικούς πυρήνες. Η ανάπτυξη αυτής της λειτουργικότητας έγινε από τον Denis Burykin σε συντονισμό με άλλους προγραμματιστές jumbo.

Другие важные изменения:

  • Поддержка большого количества дополнительных типов хешей, шифров и т.п., включая как классические хеши паролей (например, от новых версий QNX), так и кошельки криптовалют, шифрованные архивы и шифрованные файловые системы (например, Bitlocker и FreeBSD geli), а также поддержку новых разновидностей форматов, поддерживаемых ранее (например, добавлена поддержка bcrypt-pbkdf для OpenBSD softraid) и многое другое. В общей сложности, добавлено 80 форматов на CPU и 47 на OpenCL. Общее количество форматов теперь 407 на CPU (или 262 не включая «dynamic» форматы, настраиваемые из файлов конфигурации) и 88 на OpenCL.
  • Κατάργηση της υποστήριξης γλώσσας CUDA υπέρ του OpenCL, το οποίο δεν παρεμβαίνει στην πλήρη χρήση της GPU NVIDIA (και μάλιστα βοηθά, χάρη στην εστίαση της ανάπτυξης και των βελτιστοποιήσεων σε μία υλοποίηση κάθε μορφής κάτω από την GPU αντί για δύο υλοποιήσεις πριν).
  • Υποστήριξη για νέα σύνολα εντολών SIMD - AVX2, AVX-512 (συμπεριλαμβανομένης της δεύτερης γενιάς Xeon Phi) και MIC (για την πρώτη γενιά) - καθώς και πιο καθολική και ολοκληρωμένη χρήση του SIMD σε υλοποιήσεις πολλών μορφών, συμπεριλαμβανομένης της χρήσης προηγουμένως υποστηριζόμενων σετ εντολών σε AVX και XOP σε x86(-64) και
    NEON, ASIMD и AltiVec на ARM, Aarch64 и POWER, соответственно.

  • Πολυάριθμες βελτιστοποιήσεις για CPU και OpenCL, τόσο για να λειτουργούν πιο αποτελεσματικά με μεγάλο αριθμό κατακερματισμών ταυτόχρονα (για παράδειγμα, φόρτωση 320 εκατομμυρίων κατακερματισμών SHA-1 στη GPU) όσο και για αύξηση της ταχύτητας υπολογισμού κατακερματισμού. Ορισμένες από αυτές τις βελτιστοποιήσεις είναι καθολικές, κάποιες καλύπτουν διάφορα υποσύνολα μορφών και πολλές αφορούν συγκεκριμένες μορφές.
  • (Авто-)настройка оптимальной буферизации проверяемых паролей на CPU («—tune=auto —verbosity=5») и оптимальных размерностей задания на OpenCL (включена по умолчанию), в том числе с учетом медленного выхода на полную рабочую частоту GPU серии NVIDIA GTX 10xx и новее. Использование реально загруженных хешей и реальной длины проверяемых паролей (когда она известна заранее) для такой авто-настройки.
  • Добавление компилятора «динамических выражений», указываемых прямо на командной строке и реализующих новые гибридные типы хешей, например «—format=dynamic=’sha1(md5($p).$s)'», вычисляемые на CPU с использованием SIMD. В качестве компонентов таких выражений поддерживаются десятки быстрых хешей (от распространенных вроде MD5 до умеренно экзотических вроде Whirlpool), объединение подстрок, кодирование и декодирование, преобразование регистра символов, ссылки на пароль, соль, имя пользователя и строковые константы.
  • Εξάλειψη ανεπιθύμητων διαφορών από το hashcat, συμπεριλαμβανομένης της υποστήριξης για εντολές κανόνων λίστας λέξεων που προηγουμένως ήταν συγκεκριμένες για το hashcat, μετάβαση στην αρίθμηση συσκευών OpenCL από το 1, χρησιμοποιώντας τα ίδια μήκη προεπιλεγμένου κωδικού πρόσβασης (συνήθως μήκος 7) για δοκιμές απόδοσης.
  • Νέες λειτουργίες σπασίματος, συμπεριλαμβανομένου του PRINCE από το hashcat (δημιουργεί "φράσεις" συνενώνοντας πολλές λέξεις σε αύξουσα σειρά συνολικού μήκους), υποσύνολα (φέρνει κωδικούς πρόσβασης με όχι αρκετούς διαφορετικούς χαρακτήρες, ακόμη κι αν αυτοί οι χαρακτήρες προέρχονται από ένα μεγάλο σύνολο πιθανών) και υβριδικοί εξωτερικοί (επιτρέπει σε εξωτερικές λειτουργίες, που περιγράφονται σε αρχεία διαμόρφωσης σε γλώσσα τύπου C, να δημιουργούν πολλούς επαληθεύσιμους κωδικούς πρόσβασης βάσει κάθε βασικής "λέξης" που λαμβάνεται από άλλη λειτουργία). Επίσης, αρκετές νέες προκαθορισμένες εξωτερικές λειτουργίες.
  • Πρόσθετες λειτουργίες για τη χρήση πολλών λειτουργιών ταυτόχρονα (το ένα πάνω στο άλλο - στοίβαξη), καθώς και για τέτοια χρήση συνόλων κανόνων (στοίβαξη κανόνων λίστας λέξεων).
  • Βελτιώσεις στις λειτουργίες μάσκας (σταδιακή επέκταση της μάσκας στο καθορισμένο εύρος μηκών, εφαρμογή της μάσκας στο πλάι μιας συσκευής OpenCL ή πλακέτας FPGA) και μεμονωμένης ρωγμής (λογική συμπεριφορά σε συσκευές που υπολογίζουν μεγάλο αριθμό κατακερματισμών παράλληλα, που προηγουμένως σε αυτήν τη λειτουργία δεν υπήρχαν κωδικοί πρόσβασης για έλεγχο, καθώς και περιορισμοί στην κατανάλωση μνήμης).
  • Πολλές βελτιώσεις στην υποστήριξη για Unicode και άλλες κωδικοποιήσεις σε διάφορα υποσυστήματα.
  • Πολλές βελτιώσεις στα προγράμματα *2john (μετατροπή αρχείων διαφόρων μορφών σε
    χρήση με τον john), ειδικά το wpapcap2john (διαχειρίζεται την κυκλοφορία WiFi).

  • Πολλές νέες επιλογές γραμμής εντολών, ρυθμίσεις john.conf, επιλογές ρύθμισης παραμέτρων σεναρίου και οι αντίστοιχες νέες δυνατότητες τους, δεν αναφέρθηκαν όλες εδώ.
  • Βελτίωση της ποιότητας κώδικα λόγω της ενσωματωμένης υποστήριξης για εκδόσεις εντοπισμού σφαλμάτων με το AddressSanitizer (προηγουμένως) και το UndefinedBehaviorSanitizer (προστέθηκε), η προσθήκη ενός ενσωματωμένου fuzzer μορφής (μέσα στο GSoC 2015), χρησιμοποιώντας συνεχή ενοποίηση (κατασκευές για δεκάδες συνδυασμούς λειτουργικών συστημάτων και μεταγλωττιστών και δοκιμάζοντας τα για σωστή υποστήριξη όλων των μορφών).

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο