ویژگی خاص نسخه جدید ظاهر پشتیبانی از FPGA (علاوه بر CPU، GPU و Xeon Phi) است. برای تابلوها
برای bcrypt، عملکرد بهدستآمده 119 هزار سیسی در ثانیه با 2^5 تکرار («2 دلار 05 میلیارد دلار») با مصرف انرژی 27 وات بهطور قابلتوجهی از نتایج آخرین پردازندههای گرافیکی در هر برد، به ازای قیمت سختافزار، و به ازای هر وات بیشتر است. . همچنین پشتیبانی می شود
برای سرعت بخشیدن به کار، ما استفاده از یک ماسک (حالت "-mask"، از جمله در ترکیب با حالت های دیگر) و مقایسه هش های محاسبه شده با موارد بارگذاری شده در سمت FPGA را اجرا کردیم. از منظر پیاده سازی، بسیاری از طرح ها (به عنوان مثال
تغییرات مهم دیگر:
- پشتیبانی از تعداد زیادی از انواع اضافی هش، رمز و غیره، از جمله هش های رمز عبور کلاسیک (به عنوان مثال، از نسخه های جدید QNX)، و همچنین کیف پول های رمزنگاری، آرشیوهای رمزگذاری شده و سیستم های فایل رمزگذاری شده (به عنوان مثال، Bitlocker و FreeBSD geli)، و همچنین پشتیبانی از انواع جدیدی از فرمتهایی که قبلاً پشتیبانی شدهاند (به عنوان مثال، پشتیبانی اضافه شده برای bcrypt-pbkdf برای OpenBSD softraid) و موارد دیگر. در مجموع 80 فرمت بر روی CPU و 47 فرمت در OpenCL اضافه شده است. تعداد کل فرمتها اکنون 407 در CPU است (یا 262 فرمت بدون احتساب فرمتهای "دینامیک" پیکربندی شده از فایلهای پیکربندی) و 88 فرمت در OpenCL.
- امتناع از پشتیبانی از زبان CUDA به نفع OpenCL، که به هیچ وجه در استفاده کامل از پردازندههای گرافیکی NVIDIA تداخل ایجاد نمیکند (و حتی کمک میکند، به لطف تمرکز توسعه و بهینهسازی روی یک پیادهسازی از هر فرمت برای 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 (به طور پیش فرض فعال شده است)، از جمله در نظر گرفتن رمپ آهسته تا فرکانس کاری کامل پردازندههای گرافیکی سری NVIDIA GTX 10xx و جدیدتر. استفاده از هش های بارگذاری شده واقعی و طول واقعی گذرواژه هایی که بررسی می شوند (زمانی که از قبل مشخص باشد) برای چنین تنظیم خودکار.
- افزودن یک کامپایلر برای «عبارات پویا» مشخص شده مستقیماً در خط فرمان و پیادهسازی انواع هش ترکیبی جدید، به عنوان مثال «-format=dynamic='sha1(md5($p).$s)'»، محاسبهشده روی CPU با استفاده از SIMD . به عنوان اجزای چنین عباراتی، دهها هش سریع (از هشهای رایج مانند MD5 تا موارد نسبتاً عجیب و غریب مانند Whirlpool)، الحاق زیر رشتهها، رمزگذاری و رمزگشایی، تبدیل حروف کاراکتر، ارجاع به رمز عبور، نمک، نام کاربری و ثابتهای رشته پشتیبانی میشوند.
- حذف تفاوتهای ناخواسته از هشکت، از جمله پشتیبانی از قوانین قبلاً خاص هشکت (فرمانهای قوانین فهرست کلمات)، انتقال به شمارهگذاری دستگاه OpenCL از ۱، استفاده پیشفرض از طولهای رمز عبور یکسان (معمولاً طول ۷) برای آزمایشهای عملکرد.
- حالتهای جدید برای تولید رمزهای عبور قابل تأیید (حالتهای شکستن)، از جمله PRINCE از hashcat (با ترکیب چند کلمه به ترتیب افزایش طول کل، «عبارات» را تشکیل میدهد)، زیر مجموعهها (گذرواژههایی را با تعداد ناکافی کاراکترهای مختلف نمایش میدهد، حتی اگر این کاراکترها آمده باشند. از مجموعه بزرگی از موارد ممکن) و ترکیبی خارجی (به حالتهای خارجی، که در فایلهای پیکربندی به زبانی شبیه C توضیح داده شدهاند، اجازه میدهد تا رمزهای عبور قابل تأیید زیادی را بر اساس هر «کلمه» اصلی دریافتشده از حالت دیگر تولید کنند). همچنین چندین حالت خارجی از پیش تعریف شده جدید.
- ویژگی های اضافی برای استفاده از چندین حالت به طور همزمان (یکی روی دیگری - انباشتن)، و همچنین برای استفاده از مجموعه قوانین (انباشته قوانین فهرست کلمات).
- بهبود حالت های ماسک (کشش تدریجی ماسک در محدوده مشخصی از طول، استفاده از ماسک در کنار دستگاه OpenCL یا برد FPGA) و تک ترک (رفتار معقول در دستگاه هایی که تعداد زیادی هش را به صورت موازی محاسبه می کنند). ، که قبلاً رمزهای عبور قابل تأیید کافی در این حالت وجود نداشت و همچنین محدودیت هایی در مصرف حافظه وجود داشت).
- پیشرفت های زیادی برای پشتیبانی از یونیکد و سایر رمزگذاری ها در زیرسیستم های مختلف.
- پیشرفتهای زیادی در برنامههای *2john (که فایلهای فرمتهای مختلف را برای
استفاده با john)، به خصوص wpapcap2john (ترافیک WiFi را کنترل می کند). - بسیاری از گزینه های خط فرمان جدید، تنظیمات در john.conf، پیکربندی گزینه های اسکریپت و ویژگی های جدید مربوطه وجود دارد که همه آنها در اینجا ذکر نشده اند.
- بهبود کیفیت کد به لطف پشتیبانی داخلی از ساختهای اشکال زدایی با AddressSanitizer (قبلا) و UndefinedBehaviorSanitizer (اضافه شده)، افزودن یک فرمت fuzzer داخلی (به عنوان بخشی از GSoC 2015)، با استفاده از یکپارچهسازی مداوم (ساخت برای دهها سیستم عامل و کامپایلر). ترکیب ها و آزمایش آنها برای پشتیبانی صحیح از همه فرمت ها).
منبع: opennet.ru