John the Ripper 1.9.0-jumbo-1 con soporte FPGA

Lanzado nova versión do programa máis antigo compatible para adiviñar contrasinais John the Ripper 1.9.0-jumbo-1. (O proxecto desenvólvese dende 1996.) On páxina do proxecto As fontes están dispoñibles para descargar, así como as montaxes preparadas para Windows.

Nótese que pasaron 1.8.0 anos desde o lanzamento da versión 1-jumbo-4.5, durante a cal se fixeron máis de 6000 cambios (commits de git) de máis de 80 desenvolvedores. Durante este período, os desenvolvedores recomendaron usar edición actual de GitHub, cuxo estado se mantivo estable a pesar dos cambios realizados grazas a integración continua, que inclúe a verificación preliminar de cada cambio (pull request) en moitas plataformas. Unha característica especial da nova versión é a aparición de soporte para FPGA (FPGA) ademais de CPU, GPU e Xeon Phi.


Para placas ZTEX 1.15y, incluíndo 4 chips FPGA e orixinalmente utilizados principalmente para a minería de Bitcoin, agora están implementados 7 tipos de hash de contrasinais: bcrypt, descifrado clásico (incluíndo bigcrypt), sha512crypt, sha256crypt, md5crypt (incluíndo Apache apr1 e AIX smd5), Drupal7 e phpass (usado). , en particular en WordPress). Algúns deles están implementados en FPGA por primeira vez. Para bcrypt, o rendemento alcanzado de ~ 119k c/s con 2^5 iteracións ("$ 2b$ 05") cun consumo de enerxía duns 27 vatios supera significativamente os resultados das últimas GPU por placa, prezo de hardware e vatio. Tamén se apoia clusters de placas deste tipo, que se probaron ata 16 placas (64 FPGA) controladas desde unha única Raspberry Pi 2. Admítese a funcionalidade habitual de John the Ripper, incluíndo todos os modos de adiviñación de contrasinal e descarga simultánea dunha gran cantidade de hash. Para axilizar o traballo, implementamos o uso dunha máscara (o modo "--mask", incluso en combinación con outros modos) e a comparación dos hashes calculados cos cargados no lado da FPGA. Desde a perspectiva da implementación, moitos dos deseños (p. ex. sha512crypt e Drupal7) utilízanse bloques que consisten en núcleos de procesador multiproceso (núcleos de CPU suaves) que interactúan con núcleos criptográficos. O desenvolvemento desta funcionalidade foi dirixido por Denis Burykin en coordinación con outros desenvolvedores jumbo.

Outros cambios importantes:

  • Compatibilidade con un gran número de tipos adicionais de hash, cifrados, etc., incluíndo tanto os hash clásicos de contrasinais (por exemplo, das novas versións de QNX), como carteiras de criptomonedas, arquivos cifrados e sistemas de ficheiros cifrados (por exemplo, Bitlocker e FreeBSD geli), así como soporte para novos tipos de formatos admitidos anteriormente (por exemplo, soporte engadido para bcrypt-pbkdf para OpenBSD softraid) e moito máis. En total, engadíronse 80 formatos na CPU e 47 en OpenCL (e elimináronse un pequeno número de formatos antigos xa que se integraron a outros novos e obsoletos). O número total de formatos é agora 407 na CPU (ou 262 sen incluír os formatos "dinámicos" configurados a partir de ficheiros de configuración) e 88 en OpenCL.
  • Negativa a apoiar a linguaxe CUDA en favor de OpenCL, que de ningún xeito interfire co pleno uso das GPU de NVIDIA (e mesmo axuda, grazas a centrar o desenvolvemento e a optimización nunha implementación de cada formato para a GPU en lugar de dúas implementacións anteriores).
  • Compatibilidade con novos conxuntos de instrucións SIMD - AVX2, AVX-512 (incluído para a segunda xeración Xeon Phi) e MIC (para a primeira xeración), así como un uso máis universal e completo de SIMD en implementacións de moitos formatos, incluído o uso de conxuntos de instrucións admitidos anteriormente ata AVX e XOP en x86(-64) e
    NEON, ASIMD e AltiVec en ARM, Aarch64 e POWER, respectivamente. (Parcialmente como parte de GSoC 2015).
  • Numerosas optimizacións para CPU e OpenCL, tanto para traballar de forma máis eficiente cunha gran cantidade de hash simultaneamente (por exemplo, probouse a carga de 320 millóns de hash SHA-1 na GPU), como para aumentar a velocidade dos cálculos de hash. Algunhas destas optimizacións son universais, algunhas abarcan diferentes subconxuntos de formatos e moitas son específicas para formatos individuais.
  • Configuración (automática) do búfer óptimo dos contrasinais comprobados na CPU ("—tune=auto —verbosity=5") e tamaños de traballo óptimos en OpenCL (activado por defecto), incluíndo tendo en conta a lenta aceleración de NVIDIA GTX GPU da serie a unha frecuencia de funcionamento completa 10xx e máis recente. Usando hash realmente cargados e a lonxitude real dos contrasinais que se están a comprobar (cando se coñeza de antemán) para tal axuste automático.
  • Engadindo un compilador para "expresións dinámicas" especificadas directamente na liña de comandos e implementando novos tipos de hash híbridos, por exemplo "-format=dynamic='sha1(md5($p).$s)'", calculado na CPU usando SIMD . Como compoñentes deste tipo de expresións, admítense decenas de hash rápidos (desde os comúns como MD5 ata os moderadamente exóticos como Whirlpool), concatenación de subcadeas, codificación e decodificación, conversión de maiúsculas e minúsculas, referencias a contrasinal, sal, nome de usuario e constantes de cadea.
  • Eliminación de diferenzas non desexadas con hashcat, incluíndo soporte para regras previamente específicas de hashcat (comandos de regras de lista de palabras), transición á numeración de dispositivos OpenCL desde 1, uso predeterminado das mesmas lonxitudes de contrasinal (normalmente lonxitude 7) para probas de rendemento.
  • Novos modos para xerar contrasinais verificables (modos de craqueo), incluíndo PRINCE de hashcat (forma "frases" combinando varias palabras en orde crecente de lonxitude total), subconxuntos (aparece contrasinais cun número insuficiente de caracteres diferentes, aínda que estes dun gran conxunto de posibles) e híbrido externo (permite que os modos externos, descritos en ficheiros de configuración nunha linguaxe tipo C, xeren moitos contrasinais verificables en función de cada "palabra" básica recibida doutro modo). Ademais, varios novos modos externos predefinidos.
  • Capacidades adicionais para usar varios modos simultáneamente (un enriba do outro - apilado), así como para usar conxuntos de regras (apilado de regras de lista de palabras).
  • Melloras nos modos de máscara (estiramento gradual da máscara nun intervalo de lonxitudes especificado, aplicación dunha máscara no lateral do dispositivo OpenCL ou placa FPGA) e crack único (comportamento razoable en dispositivos que calculan un gran número de hash en paralelo). , para o que anteriormente non había suficientes contrasinais verificables neste modo, e tamén restricións no consumo de memoria).
  • Moitas melloras para admitir Unicode e outras codificacións en varios subsistemas.
  • Moitas melloras nos programas *2john (que converten ficheiros de diferentes formatos para
    usar con john), especialmente wpapcap2john (xestiona o tráfico WiFi).
  • Hai moitas opcións de liña de comandos novas, axustes en john.conf, opcións de script de configuración e funcións novas correspondentes, que non foron todas mencionadas aquí.
  • Mellorando a calidade do código grazas ao soporte integrado para compilacións de depuración con AddressSanitizer (anteriormente) e UndefinedBehaviorSanitizer (engadido), engadindo un fuzzer de formato integrado (como parte de GSoC 2015), utilizando a integración continua (compilacións para decenas de sistemas operativos e compiladores). combinacións e probándoas para o soporte correcto para todos os formatos).

Fonte: linux.org.ru

Engadir un comentario