John the Ripper 1.9.0-jumbo-1 emissus cum FPGA subsidii

Dimissi новая вСрсия ΡΡ‚Π°Ρ€Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для ΠΏΠΎΠ΄Π±ΠΎΡ€Π° ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ John the Ripper 1.9.0-jumbo-1 (ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ развиваСтся с 1996 Π³ΠΎΠ΄Π°). C Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ вСрсии 1.8.0-jumbo-1 ΠΏΡ€ΠΎΡˆΠ»ΠΎ 4.5 Π³ΠΎΠ΄Π°, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΎ внСсСно Π±ΠΎΠ»Π΅Π΅ 6000 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (git commits) ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ 80 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Благодаря continua integration, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ измСнСния (pull request) Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ этого срока Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ vena editio ex GitHub, состояниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΎΡΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ нСсмотря Π½Π° вносимыС измСнСния. Основной ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° per distribui ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ 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 Π² расчСтС Π½Π° ΠΏΠ»Π°Ρ‚Ρƒ, Π½Π° Ρ†Π΅Π½Ρƒ оборудования ΠΈ Π½Π° Π²Π°Ρ‚Ρ‚. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ clusters ΠΈΠ· ΠΏΠ»Π°Ρ‚ этого Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ 16 ΠΏΠ»Π°Ρ‚ (64 Ρ‡ΠΈΠΏΠ° FPGA), ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… с ΠΎΠ΄Π½ΠΎΠ³ΠΎ Raspberry Pi 2. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ обычная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ John the Ripper, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ всС Ρ€Π΅ΠΆΠΈΠΌΡ‹ ΠΏΠΎΠ΄Π±ΠΎΡ€Π° ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ большого количСства Ρ…Π΅ΡˆΠ΅ΠΉ.

Для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ маски (Ρ€Π΅ΠΆΠΈΠΌ Β«β€”maskΒ», Π² Ρ‚ΠΎΠΌ числС Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ) ΠΈ сравнСниС вычислСнных Ρ…Π΅ΡˆΠ΅ΠΉ с Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° сторонС FPGA. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ· Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для sha512crypt et Drupal7 ") caudices nuclei processus multi-filati constantes (cores CPU mollis) cum nucleis cryptographicis mutuo se habentibus adhibentur. Explicatio huius functionis a Dionysio Burykin in coordinatione cum aliis jumbo tincidunt ductus est.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ измСнСния:

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° большого количСства Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ…Π΅ΡˆΠ΅ΠΉ, ΡˆΠΈΡ„Ρ€ΠΎΠ² ΠΈ Ρ‚.ΠΏ., Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠ°ΠΊ классичСскиС Ρ…Π΅ΡˆΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚ Π½ΠΎΠ²Ρ‹Ρ… вСрсий QNX), Ρ‚Π°ΠΊ ΠΈ кошСльки ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π»ΡŽΡ‚, ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΠ²Ρ‹ ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Bitlocker ΠΈ FreeBSD geli), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… разновидностСй Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ€Π°Π½Π΅Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° bcrypt-pbkdf для OpenBSD softraid) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π’ ΠΎΠ±Ρ‰Π΅ΠΉ слоТности, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 80 Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π½Π° CPU ΠΈ 47 Π½Π° OpenCL. ΠžΠ±Ρ‰Π΅Π΅ количСство Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ 407 Π½Π° CPU (ΠΈΠ»ΠΈ 262 Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Β«dynamicΒ» Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹, настраиваСмыС ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ) ΠΈ 88 Π½Π° OpenCL.
  • Negatio linguae CUDA in favorem OpenCL supportare, quae nullo modo impedit plenum usum NVIDIA GPUs (et etiam adiuvat, per evolutionem et optimizationem in una exsecutione formarum uniuscuiusque formae GPU pro duabus antea instrumentis positis).
  • Firmamentum pro nova instructione SIMD ponit - AVX2, AVX-512 (inclusa secunda generatione Xeon Phi) et MIC (pro generatione prima) - tum magis universalis et perfectior usus SIMD in exsequendis multarum formarum usu AVX et XOP supra x86 (-64) et
    NEON, ASIMD ΠΈ AltiVec Π½Π° ARM, Aarch64 ΠΈ POWER, соотвСтствСнно.

  • Multae optimizationes pro CPU et OpenCL, tum ad efficacius operandum cum magno numero hasulorum simul (exempli gratia, oneratisque 320 decies SHA-1 hashes in GPU probata sunt), et celeritas calculorum Nullam augere. Horum optimizationum aliae sunt universales, aliae variae copiae formarum, et multae singularibus formatis specificae.
  • (Авто-)настройка ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ провСряСмых ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Π½Π° CPU (Β«β€”tune=auto β€”verbosity=5Β») ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… размСрностСй задания Π½Π° OpenCL (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), Π² Ρ‚ΠΎΠΌ числС с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π½Π° ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ частоту GPU сСрии NVIDIA GTX 10xx ΠΈ Π½ΠΎΠ²Π΅Π΅. ИспользованиС Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ…Π΅ΡˆΠ΅ΠΉ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ провСряСмых ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ (ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° извСстна Π·Π°Ρ€Π°Π½Π΅Π΅) для Ρ‚Π°ΠΊΠΎΠΉ Π°Π²Ρ‚ΠΎ-настройки.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ компилятора «динамичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉΒ», ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… прямо Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… Π½ΠΎΠ²Ρ‹Π΅ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Ρ…Π΅ΡˆΠ΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«β€”format=dynamic=’sha1(md5($p).$s)'Β», вычисляСмыС Π½Π° CPU с использованиСм SIMD. Π’ качСствС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Ρ‚Π°ΠΊΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ дСсятки быстрых Ρ…Π΅ΡˆΠ΅ΠΉ (ΠΎΡ‚ распространСнных Π²Ρ€ΠΎΠ΄Π΅ MD5 Π΄ΠΎ ΡƒΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ экзотичСских Π²Ρ€ΠΎΠ΄Π΅ Whirlpool), объСдинСниС подстрок, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ рСгистра символов, ссылки Π½Π° ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, соль, имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ строковыС константы.
  • Determinatio differentiarum invitarum ab hashcat, incluso auxilio regularum specialium (verborum regulae mandatorum), transitus ad OpenCL fabrica numerandi ab 1, defectu usus longitudinum eiusdem tesserae (fere VII longitudinis VII) in probatis faciendis.
  • Novi modi generandi Tesserae verifiabiles (modis crepuit), PRINCIPI ab hashcat (formas "phrases" componendo plura verba in augendo ordine longitudinis), copiae (tesserae cum insufficiens numero diversorum characterum adductis, etsi hae notae veniunt. e magna copia possibilium possibilium) et externa hybrida (modos externas, in imaginum conformatione in lingua C simili descriptos, permittit, ut plures Tesserae verifiabiles generandi in singulis fundamentalibus "verbis" ex alio modo receptis gignant. Novos etiam plures modos externos praedefinitos.
  • Adiectis notis ad plures modos eodem tempore utendi (unum super alterum - positis), tum pro utendo regulas (wordlist regulas positis).
  • Improvementa ad modos larva (graduales extensionis larvae in certa extensione longitudinum, applicationis larvae in parte OpenCL fabrica vel FPGA tabulae) et fissurae unius (ratio- mores in machinis quae magnum numerum hashes in parallelis computant. quae antea non satis erant in hoc modo verifiabiles tesserae, et etiam restrictiones in memoria consumptionis).
  • Multae emendationes sustentandae sunt pro Unicode et aliis descriptas in variis subsystematibus.
  • Multa meliora sunt * 2john programs (convertentes files de diversis formats for
    uti cum john), praesertim wpapcap2john (tractat WiFi traffic).

  • Plures sunt optiones novae mandatorum linearum, occasus in john.conf, scriptionum optionum conformatio et novarum notarum respondentium, de quibus hic non omnes nominantur.
  • Improving code quality thanks to built-in support for debug builds with AddressSanitizer (antea) and UndefinedBehaviorSanitizer (addidit), addito fuzzer constructo in formato (ut parte GSoC 2015), integratione continua (aedificat pro justo systematis operandi et compilator. junctiones et probationes ad rectam sustentationem omnium formarum).

Source: opennet.ru