Veröffentlichung von John the Ripper 1.9.0-jumbo-1 mit FPGA-Unterstützung

Veröffentlicht Neue Version des ältesten unterstützten Passwort-Cracking-Programms John the Ripper 1.9.0-jumbo-1 (Das Projekt wird seit 1996 weiterentwickelt). Seit der Veröffentlichung der vorherigen Version 1.8.0-jumbo-1 sind 4,5 Jahre vergangen, in denen über 6000 Änderungen (git commits) von mehr als 80 Entwicklern vorgenommen wurden. Dank der kontinuierlichen Integration, einschließlich der Vorabprüfung jeder Änderung (Pull-Request) auf vielen Plattformen, empfahlen die Entwickler während dieses Zeitraums die Nutzung aktuellen Version von GitHub, deren Zustand stabil gehalten wurde, trotz der vorgenommenen Änderungen. Der Hauptcode des Projekts wird unter der GPLv3-Lizenz bereitgestellt. steht unter der GPLv2+-Lizenz, während der Code einiger Komponenten unter der BSD-Lizenz steht.

Ein besonderes Merkmal der neuen Version ist die Unterstützung von FPGA (neben CPU, GPU und Xeon Phi). Für Platten ZTEX 1.15y, die jeweils 4 FPGA-Chips enthalten und ursprünglich hauptsächlich für das Mining von Bitcoin verwendet wurden, sind nun 7 Typen von Passwort-Hashes implementiert: bcrypt, klassischer descrypt (einschließlich bigcrypt), sha512crypt, sha256crypt, md5crypt (einschließlich Apache apr1 und AIX smd5), Drupal7 und phpass (wird unter anderem in WordPress verwendet). Einige davon wurden erstmals auf FPGA implementiert.

Für bcrypt wurde eine Leistung von etwa 119k c/s bei 2^5 Iterationen ("$2b$05") bei einem Stromverbrauch von rund 27 Watt erreicht, was die Ergebnisse der neuesten GPUs pro Platine, in Bezug auf die Hardwarekosten und den Stromverbrauch, erheblich übertrifft. Darüber hinaus werden Cluster die Platinen dieses Typs unterstützt, was bis zu 16 Platinen (64 FPGA-Chips) ermöglicht, die von einem Raspberry Pi 2 verwaltet werden. Die Standardfunktionalität von John the Ripper wird unterstützt, einschließlich aller Passwort-Angriffsmodi und der gleichzeitigen Verarbeitung großer Mengen von Hashes.

Zur Beschleunigung der Operationen wird der Einsatz von Masken (Modus "—mask", auch in Kombination mit anderen Modi) sowie der Vergleich der berechneten Hashes mit den auf der FPGA-Seite geladenen Hashes realisiert. Aus Sicht der Implementierung gibt es in vielen der Designs (zum Beispiel für sha512crypt und Drupal7) Es wurden Blöcke aus Multithreading-Prozessor-Kernen (soft CPU cores) angewendet, die mit kryptografischen Kernen interagieren. Die Entwicklung dieser Funktionalität wurde von Denis Burikin in Zusammenarbeit mit anderen Entwicklern von Jumbo geleitet.

Weitere wichtige Änderungen:

  • Unterstützung einer Vielzahl zusätzlicher Hash-Typen, Chiffren usw., einschließlich klassischer Passwort-Hashes (z. B. von neuen Versionen von QNX), Kryptowallets, verschlüsselten Archiven und verschlüsselten Dateisystemen (wie Bitlocker und FreeBSD geli) sowie Unterstützung neuer Varianten von zuvor unterstützten Formaten (z. B. wurde die Unterstützung für bcrypt-pbkdf für OpenBSD softraid hinzugefügt) und vieles mehr. Insgesamt wurden 80 Formate auf CPU und 47 auf OpenCL hinzugefügt. Die Gesamtzahl der Formate beträgt jetzt 407 auf CPU (oder 262 ohne „dynamische“ Formate, die aus Konfigurationsdateien anpassbar sind) und 88 auf OpenCL.
  • Verzicht auf die Unterstützung der CUDA-Sprache zugunsten von OpenCL, was die vollständige Nutzung der NVIDIA-GPUs nicht beeinträchtigt (und sogar hilft, dank der Fokussierung der Entwicklung und Optimierungen auf eine einheitliche Umsetzung jedes Formats für GPUs anstelle von früher zwei Umsetzungen).
  • Unterstützung neuer SIMD-Befehlssätze — AVX2, AVX-512 (einschließlich für die zweite Generation von Xeon Phi) und MIC (für die erste Generation) — sowie eine vielseitigere und umfassendere Nutzung von SIMD in der Implementierung vieler Formate, einschließlich der Anwendung zuvor unterstützter Befehlssätze bis hin zu AVX und XOP auf x86(-64) und
    NEON, ASIMD und AltiVec auf ARM, Aarch64 und POWER, entsprechend.
  • Zahlreiche Optimierungen für CPUs und OpenCL, sowohl zur effizienteren Verarbeitung einer großen Anzahl von Hashes gleichzeitig (zum Beispiel wurde die Bearbeitung von 320 Millionen SHA-1-Hashes auf der GPU getestet) als auch zur Steigerung der Geschwindigkeit bei der Hashberechnung. Ein Teil dieser Optimierungen ist universell, ein Teil umfasst verschiedene Teilmengen von Formaten und viele sind spezifisch für einzelne Formate.
  • (Auto-)Optimierung der optimalen Pufferung der überprüften Passwörter auf der CPU („—tune=auto —verbosity=5“) und der optimalen Aufgaben-Dimensionen auf OpenCL (standardmäßig aktiviert), insbesondere unter Berücksichtigung des langsamen Erreichens der vollen GPU-Taktfrequenz der NVIDIA GTX 10xx-Serie und neuer. Verwendung tatsächlich genutzter Hashes und der realen Länge der überprüften Passwörter (wenn diese im Voraus bekannt ist) für eine solche Auto-Optimierung.
  • Hinzugefügter Compiler für „dynamische Ausdrücke“, die direkt in der Kommandozeile angegeben werden und neue hybride Hash-Typen implementieren, wie z.B. „—format=dynamic=’sha1(md5($p).$s)'“, die auf der CPU unter Verwendung von SIMD berechnet werden. Unterstützung für Dutzende schneller Hashes (von gängigen wie MD5 bis hin zu moderat exotischen wie Whirlpool), Unterstring-Kombinationen, Kodierung und Dekodierung, Groß-/Kleinschreibung, sowie Verweise auf Passwörter, Salze, Benutzernamen und string-konstante Werte.
  • Behebung unerwünschter Abweichungen von Hashcat, einschließlich der Unterstützung zuvor spezifischer Hashcat-Regeln (Befehle für Wortlistenregeln), Wechsel zur Nummerierung der OpenCL-Geräte ab 1 und standardmäßige Anwendung derselben Passwortlängen (in der Regel Länge 7) bei Leistungstests.
  • Neue Modus zur Generierung überprüfbarer Passwörter (Cracking-Modi), einschließlich PRINCE aus Hashcat (erzeugt "Phrasen", indem mehrere Wörter in aufsteigender Gesamtlänge kombiniert werden), Subsets (wählt Passwörter mit unzureichender Vielfalt an Symbolen aus, auch wenn diese Symbole aus einem großen Set stammen) und hybrid external (ermöglicht externen Modi, die in Konfigurationsdateien in einer C-ähnlichen Sprache beschrieben sind, mehrere überprüfbare Passwörter auf Basis jedes grundlegenden "Wortes" zu generieren, das von einem anderen Modus kommt). Zudem mehrere neue vordefinierte externe Modi.
  • Erweiterte Möglichkeiten zur gleichzeitigen Verwendung mehrerer Modi (einer über dem anderen – Stacking) sowie für die Anwendung von Regelsets (Wortlistenregeln-Stacking).
  • Verbesserungen der Maskierungsmodi (schrittweises Dehnen der Maske im angegebenen Längenbereich, Anwendung der Maske auf der OpenCL-Geräteseite oder FPGA-Platine) und single crack (angemessenes Verhalten auf Geräten, die eine große Anzahl von Hashes parallel berechnen, wobei es in diesem Modus zuvor an überprüfbaren Passwörtern mangelte, sowie eine Einschränkung des Speicherverbrauchs).
  • Vielerlei Verbesserungen der Unterstützung von Unicode und anderen Kodierungen in verschiedenen Subsystemen.
  • Viele Verbesserungen der Programme *2john (konvertieren Dateien verschiedener Formate für
    die Nutzung mit john), insbesondere wpapcap2john (verarbeitet WiFi-Traffic).
  • Zahlreiche neue Befehlszeilenoptionen, Einstellungen in john.conf, Optionen des configure-Skripts und entsprechende neue Funktionen, von denen nicht alle hier erwähnt werden konnten.
  • Erhöhung der Codequalität durch die integrierte Unterstützung für Debug-Bauten mit AddressSanitizer (bereits vorhanden) und UndefinedBehaviorSanitizer (hinzugefügt), Einführung eines integrierten Fuzzers für Formate (im Rahmen von GSoC 2015), und Anwendung kontinuierlicher Integration (Bauten für Dutzende von Kombinationen aus Betriebssystem und Compiler und Tests zur korrekten Unterstützung aller Formate).

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster