John the Ripper 1.9.0-jumbo-1 con soporte FPGA

Liberado Nueva versión del programa de adivinación de contraseñas más antiguo compatible, John the Ripper, 1.9.0-jumbo-1. (El proyecto se viene desarrollando desde 1996). página del proyecto Las fuentes están disponibles para descargar, así como ensamblajes listos para usar para Windows.

Cabe señalar que han pasado 1.8.0 años desde el lanzamiento de la versión 1-jumbo-4.5, durante el cual se realizaron más de 6000 cambios (confirmaciones de git) por parte de más de 80 desarrolladores. Durante este período, los desarrolladores recomendaron usar edición actual de GitHub, cuyo estado se mantuvo estable a pesar de los cambios realizados gracias a integración continua, que incluye verificación preliminar de cada cambio (solicitud de extracción) en muchas plataformas. Una característica especial de la nueva versión es la aparición de soporte para FPGA (FPGA), además de CPU, GPU y Xeon Phi.


Para tableros ZTEX 1.15y, que incluye 4 chips FPGA y originalmente se usaba principalmente para la minería de Bitcoin, ahora se implementan 7 tipos de hashes de contraseñas: bcrypt, classic descrypt (incluido bigcrypt), sha512crypt, sha256crypt, md5crypt (incluidos Apache apr1 y AIX smd5), Drupal7 y phpass (usado , en particular en WordPress). Algunos de ellos se implementan por primera vez en FPGA. Para bcrypt, el rendimiento logrado de ~119k c/s con 2^5 iteraciones (“$2b$05”) con un consumo de energía de aproximadamente 27 vatios supera significativamente los resultados de las últimas GPU por placa, por precio de hardware y por vatio. También apoyado racimos de placas de este tipo, en el que se han probado hasta 16 placas (64 FPGA) controladas desde una única Raspberry Pi 2. Se admite la funcionalidad habitual de John the Ripper, incluidos todos los modos de adivinación de contraseñas y la descarga simultánea de una gran cantidad de hashes. Para acelerar el trabajo, implementamos el uso de una máscara (el modo "--mask", incluso en combinación con otros modos) y la comparación de los hashes calculados con los cargados en el lado FPGA. Desde una perspectiva de implementación, muchos de los diseños (p. ej. sha512crypt y Drupal7) se utilizan bloques que constan de núcleos de procesador multiproceso (núcleos de CPU blandos) que interactúan con núcleos criptográficos. El desarrollo de esta funcionalidad estuvo a cargo de Denis Burykin en coordinación con otros desarrolladores gigantes.

Otros cambios importantes:

  • Soporte para una gran cantidad de tipos adicionales de hashes, cifrados, etc., incluidos hashes de contraseñas clásicos (por ejemplo, de nuevas versiones de QNX), así como billeteras de criptomonedas, archivos cifrados y sistemas de archivos cifrados (por ejemplo, Bitlocker y FreeBSD geli), así como soporte para nuevos tipos de formatos previamente soportados (por ejemplo, soporte agregado para bcrypt-pbkdf para OpenBSD softraid) y mucho más. En total, se han agregado 80 formatos en la CPU y 47 en OpenCL (y una pequeña cantidad de los antiguos se han eliminado para integrarlos en otros nuevos y obsoletos). El número total de formatos ahora es 407 en la CPU (o 262 sin incluir los formatos "dinámicos" configurados a partir de archivos de configuración) y 88 en OpenCL.
  • Negativa a soportar el lenguaje CUDA a favor de OpenCL, que de ninguna manera interfiere con el uso completo de las GPU NVIDIA (e incluso ayuda, gracias a centrar el desarrollo y la optimización en una implementación de cada formato para la GPU en lugar de dos implementaciones anteriormente).
  • Soporte para nuevos conjuntos de instrucciones SIMD: AVX2, AVX-512 (incluido el Xeon Phi de segunda generación) y MIC (para la primera generación), así como un uso más universal y completo de SIMD en implementaciones de muchos formatos, incluido el uso de configuraciones de instrucciones previamente admitidas para AVX y XOP en x86(-64) y
    NEON, ASIMD y AltiVec en ARM, Aarch64 y POWER, respectivamente. (En parte como parte del GSoC 2015).
  • Numerosas optimizaciones para CPU y OpenCL, tanto para trabajar de manera más eficiente con una gran cantidad de hashes simultáneamente (por ejemplo, se probó la carga de 320 millones de hashes SHA-1 en la GPU) como para aumentar la velocidad de los cálculos de hash. Algunas de estas optimizaciones son universales, otras cubren diferentes subconjuntos de formatos y muchas son específicas de formatos individuales.
  • (Auto)configuración del almacenamiento en búfer óptimo de las contraseñas comprobadas en la CPU (“—tune=auto —verbosity=5”) y tamaños de trabajo óptimos en OpenCL (habilitado de forma predeterminada), incluso teniendo en cuenta el lento aumento de NVIDIA GTX GPU de la serie a la frecuencia operativa completa 10xx y posteriores. Usar hashes realmente cargados y la longitud real de las contraseñas que se verifican (cuando se conoce de antemano) para dicho ajuste automático.
  • Agregar un compilador para "expresiones dinámicas" especificadas directamente en la línea de comando e implementar nuevos tipos de hash híbridos, por ejemplo "-format=dynamic='sha1(md5($p).$s)'", calculado en la CPU usando SIMD . Como componentes de tales expresiones, se admiten docenas de hashes rápidos (desde los comunes como MD5 hasta los moderadamente exóticos como Whirlpool), concatenación de subcadenas, codificación y decodificación, conversión de caracteres entre mayúsculas y minúsculas, referencias a contraseñas, sal, nombre de usuario y constantes de cadena.
  • Eliminación de diferencias no deseadas con hashcat, incluida la compatibilidad con reglas previamente específicas de hashcat (comandos de reglas de lista de palabras), transición a la numeración de dispositivos OpenCL desde 1, uso predeterminado de las mismas longitudes de contraseña (generalmente longitud 7) para pruebas de rendimiento.
  • Nuevos modos para generar contraseñas verificables (modos de descifrado), incluido PRINCE de hashcat (forma "frases" combinando varias palabras en orden creciente de longitud total), subconjuntos (mueve contraseñas con un número insuficiente de caracteres diferentes, incluso si estos caracteres vienen de un gran conjunto de posibles) y externo híbrido (permite que los modos externos, descritos en archivos de configuración en un lenguaje tipo C, generen muchas contraseñas verificables basadas en cada “palabra” básica recibida de otro modo). Además, varios modos externos predefinidos nuevos.
  • Capacidades adicionales para usar varios modos simultáneamente (uno encima del otro, apilamiento), así como para usar conjuntos de reglas (apilamiento de reglas de listas de palabras).
  • Mejoras en los modos de máscara (estiramiento gradual de la máscara en un rango específico de longitudes, aplicación de una máscara en el costado del dispositivo OpenCL o placa FPGA) y crack único (comportamiento razonable en dispositivos que calculan una gran cantidad de hashes en paralelo) , para lo cual anteriormente no había suficientes contraseñas verificables en este modo, así como restricciones en el consumo de memoria).
  • Muchas mejoras para admitir Unicode y otras codificaciones en varios subsistemas.
  • Muchas mejoras a los programas *2john (que convierten archivos de diferentes formatos para
    usar con john), especialmente wpapcap2john (maneja el tráfico WiFi).
  • Hay muchas opciones nuevas de línea de comando, configuraciones en john.conf, opciones de configuración de script y nuevas características correspondientes, no todas se mencionaron aquí.
  • Mejorar la calidad del código gracias al soporte integrado para compilaciones de depuración con AddressSanitizer (anteriormente) y UndefinedBehaviorSanitizer (agregado), agregar un fuzzer de formato incorporado (como parte de GSoC 2015), usar integración continua (compilaciones para docenas de sistemas operativos y compiladores). combinaciones y probándolas para un soporte correcto para todos los formatos).

Fuente: linux.org.ru

Añadir un comentario