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.15 წ, включающих по 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) გამოიყენება კრიპტოგრაფიულ ბირთვებთან ურთიერთდამოკიდებული მრავალძალიანი პროცესორის ბირთვებისაგან შემდგარი ბლოკები. ამ ფუნქციის განვითარებას ხელმძღვანელობდა დენის ბურიკინი სხვა ჯუმბო დეველოპერებთან კოორდინაციით.

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

  • Поддержка большого количества дополнительных типов хешей, шифров и т.п., включая как классические хеши паролей (например, от новых версий QNX), так и кошельки криптовалют, шифрованные архивы и шифрованные файловые системы (например, Bitlocker и FreeBSD geli), а также поддержку новых разновидностей форматов, поддерживаемых ранее (например, добавлена поддержка bcrypt-pbkdf для OpenBSD softraid) и многое другое. В общей сложности, добавлено 80 форматов на CPU и 47 на OpenCL. Общее количество форматов теперь 407 на CPU (или 262 не включая «dynamic» форматы, настраиваемые из файлов конфигурации) и 88 на OpenCL.
  • უარი CUDA ენის მხარდაჭერაზე OpenCL-ის სასარგებლოდ, რაც არანაირად არ უშლის ხელს NVIDIA GPU-ების სრულ გამოყენებას (და კიდევ ეხმარება, განვითარებისა და ოპტიმიზაციის ფოკუსირების წყალობით, თითოეული ფორმატის ერთ განხორციელებაზე 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), объединение подстрок, кодирование и декодирование, преобразование регистра символов, ссылки на пароль, соль, имя пользователя и строковые константы.
  • ჰეშკატიდან არასასურველი განსხვავებების აღმოფხვრა, მათ შორის ჰეშკატის სპეციფიკური წესების მხარდაჭერა (wordlist წესების ბრძანებები), OpenCL მოწყობილობის ნუმერაციაზე გადასვლა 1-დან, იგივე პაროლის სიგრძის ნაგულისხმევი გამოყენება (ჩვეულებრივ სიგრძე 7) შესრულების ტესტებისთვის.
  • დამოწმებადი პაროლების გენერირების ახალი რეჟიმები (გატეხვის რეჟიმები), მათ შორის PRINCE ჰეშკატიდან (აყალიბებს „ფრაზებს“ რამდენიმე სიტყვის მთლიანი სიგრძის გაზრდის თანმიმდევრობით გაერთიანებით), ქვეჯგუფები (აქვთ პაროლები სხვადასხვა სიმბოლოების არასაკმარისი რაოდენობით, მაშინაც კი, თუ ეს სიმბოლოები მოდის. შესაძლოთა დიდი ნაკრებიდან) და ჰიბრიდული გარე (ნებას რთავს გარე რეჟიმებს, რომლებიც აღწერილია კონფიგურაციის ფაილებში C-ის მსგავს ენაზე, შექმნან მრავალი შემოწმებადი პაროლი სხვა რეჟიმიდან მიღებული ყოველი ძირითადი „სიტყვის“ საფუძველზე). ასევე, რამდენიმე ახალი წინასწარ განსაზღვრული გარე რეჟიმი.
  • დამატებითი ფუნქციები რამდენიმე რეჟიმის ერთდროულად გამოყენებისთვის (ერთი მეორეზე - დაწყობა), ასევე წესების ნაკრების გამოყენებისთვის (wordlist წესების დაწყობა).
  • ნიღბის რეჟიმების გაუმჯობესება (ნიღბის თანდათანობით გაჭიმვა სიგრძის განსაზღვრულ დიაპაზონში, ნიღბის გამოყენება OpenCL მოწყობილობის ან FPGA დაფის გვერდზე) და ერთჯერადი ბზარი (გონივრული ქცევა მოწყობილობებზე, რომლებიც ითვლის ჰეშების დიდ რაოდენობას პარალელურად. , რომლისთვისაც ადრე არ იყო საკმარისი გადამოწმებადი პაროლები ამ რეჟიმში და ასევე შეზღუდვები მეხსიერების მოხმარებაზე).
  • მრავალი გაუმჯობესება Unicode-ისა და სხვა კოდირების მხარდასაჭერად სხვადასხვა ქვესისტემებში.
  • ბევრი გაუმჯობესება *2john პროგრამებში (რომლებიც აკონვერტებენ სხვადასხვა ფორმატის ფაილებს
    გამოიყენეთ ჯონთან ერთად), განსაკუთრებით wpapcap2john (ამუშავებს WiFi ტრაფიკს).

  • არსებობს მრავალი ახალი ბრძანების ხაზის პარამეტრები, პარამეტრები john.conf-ში, სკრიპტის პარამეტრების კონფიგურაცია და შესაბამისი ახალი ფუნქციები, რომელთაგან ყველა აქ არ იყო ნახსენები.
  • კოდის ხარისხის გაუმჯობესება გამართვის ნაგებობების ჩაშენებული მხარდაჭერის წყალობით AddressSanitizer (ადრე) და UndefinedBehaviorSanitizer (დამატებულია), ჩაშენებული ფორმატის fuzzer-ის დამატება (როგორც GSoC 2015-ის ნაწილი), უწყვეტი ინტეგრაციის გამოყენებით (ნაგებები ათობით ოპერაციული სისტემისა და შემდგენელისთვის). კომბინაციები და მათი ტესტირება ყველა ფორმატის სწორი მხარდაჭერისთვის).

წყარო: opennet.ru

ახალი კომენტარის დამატება