إصدار John the Ripper 1.9.0-jumbo-1 مع دعم FPGA

مطلق سراحه إصدار جديد من أقدم أداة تكسير كلمات المرور المدعومة جون ذا ريبر 1.9.0-جامبو -1 (تم تطوير المشروع منذ عام 1996). مرت 1.8.0 سنوات منذ إصدار الإصدار السابق 1-jumbo-4.5 ، والذي تم خلاله إجراء أكثر من 6000 تغيير (git commits) من أكثر من 80 مطورًا. شكرا ل التكامل المستمر، والذي يتضمن فحصًا أوليًا لكل تغيير (طلب سحب) على العديد من الأنظمة الأساسية ، خلال هذه الفترة أوصى المطورون باستخدام المراجعة الحالية من جيثب، وحالتها ظلت مستقرة على الرغم من التغييرات التي أجريت. كود المشروع الرئيسي وزعت من خلال بموجب ترخيص GPLv2 + ، ورمز بعض المكونات بموجب ترخيص BSD.

من ميزات الإصدار الجديد ظهور دعم FPGA (بالإضافة إلى CPU و GPU و Xeon Phi). للوحات Ztex 1.15y، والتي تضمنت 4 شرائح FPGA وكانت تستخدم أساسًا في تعدين Bitcoin ، والآن تم تنفيذ 7 أنواع من تجزئة كلمات المرور: bcrypt ، و decrypt الكلاسيكي (بما في ذلك bigcrypt) ، و sha512crypt ، و sha256crypt ، و md5crypt (بما في ذلك Apache apr1 و AIX smd5) ، و Drupal7 و phpass (تستخدم خاصة في WordPress). يتم تنفيذ بعضها على FPGA لأول مرة.

بالنسبة إلى bcrypt ، فإن الأداء الذي تم تحقيقه بمقدار 119 ألف سنت / ثانية بتكرار 2 ^ 5 ("2 مليار دولار أمريكي 05") مع استهلاك طاقة يبلغ حوالي 27 واط يتفوق بشكل كبير على أحدث وحدات معالجة الرسومات لكل لوحة ، ولكل سعر للجهاز ، ولكل واط. كما يدعم عناقيد المجموعات من اللوحات من هذا النوع ، والتي اختبرت ما يصل إلى 16 لوحة (64 رقاقة FPGA) يتم التحكم فيها من Raspberry Pi واحد 2. يتم دعم وظيفة John the Ripper المعتادة ، بما في ذلك جميع أوضاع تخمين كلمات المرور والتنزيل المتزامن لعدد كبير من التجزئة.

لتسريع العمل ، قمنا بتنفيذ استخدام قناع (وضع "- قناع" ، بما في ذلك مع أوضاع أخرى) ومقارنة التجزئات المحسوبة مع تلك التي تم تحميلها على جانب FPGA. من حيث التنفيذ ، في العديد من التصاميم (على سبيل المثال ، ل sha512crypt و دروبال 7) الكتل المستخدمة التي تتكون من نوى معالجات متعددة الخيوط (نوى وحدة المعالجة المركزية الناعمة) تتفاعل مع نوى التشفير. قاد دينيس بوريكين تطوير هذه الوظيفة بالتنسيق مع مطوري جامبو آخرين.

تغييرات مهمة أخرى:

  • دعم عدد كبير من الأنواع الإضافية من التجزئة ، والأصفار ، وما إلى ذلك ، بما في ذلك كل من تجزئات كلمة المرور الكلاسيكية (على سبيل المثال ، من الإصدارات الجديدة من QNX) ، ومحافظ العملات المشفرة ، والأرشيفات المشفرة وأنظمة الملفات المشفرة (على سبيل المثال ، Bitlocker و FreeBSD geli ) ، بالإضافة إلى دعم أنواع جديدة من التنسيقات المدعومة مسبقًا (على سبيل المثال ، تمت إضافة دعم bcrypt-pbkdf لـ OpenBSD softraid) والمزيد. في المجموع ، تمت إضافة 80 تنسيقًا على وحدة المعالجة المركزية و 47 تنسيقًا على OpenCL. أصبح العدد الإجمالي للتنسيقات الآن 407 على وحدة المعالجة المركزية (أو 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 على وحدة معالجة الرسومات) ولزيادة سرعة حساب التجزئة. بعض هذه التحسينات عالمية ، وبعضها يغطي مجموعات فرعية متنوعة من التنسيقات ، والعديد منها خاص بالتنسيق.
  • (تلقائي) ضبط التخزين المؤقت الأمثل لكلمات المرور المحددة على وحدة المعالجة المركزية ("-tune = تلقائي - الإفراط = 5") وأبعاد العمل المثلى على OpenCL (ممكّن افتراضيًا) ، بما في ذلك مراعاة الاسترداد البطيء لتردد التشغيل الكامل من سلسلة GPUs من NVIDIA GTX 10xx والأحدث. استخدام تجزئات حقيقية محملة وطول حقيقي لكلمات المرور التي تم التحقق منها (عندما تكون معروفة مسبقًا) لمثل هذا الضبط التلقائي.
  • إضافة مترجم "تعبيرات ديناميكية" محدد مباشرة في سطر الأوامر وتنفيذ أنواع تجزئة هجينة جديدة ، على سبيل المثال "--format = dynamic = 'sha1 (md5 ($ p). $ s)' '" ، محسوب على وحدة المعالجة المركزية باستخدام SIMD. يتم دعم العشرات من التجزئة السريعة (من تلك الشائعة مثل MD5 إلى الأنواع الغريبة مثل Whirlpool) ، وتسلسل السلسلة الفرعية ، والترميز وفك التشفير ، وتحويل حالة الأحرف ، ومراجع كلمة المرور ، والملح ، واسم المستخدم ، وثوابت السلسلة كمكونات لمثل هذه التعبيرات.
  • القضاء على الاختلافات غير المرغوب فيها من التجزئة ، بما في ذلك دعم أوامر قواعد قائمة الكلمات الخاصة بـ hashcat ، والتبديل إلى ترقيم جهاز OpenCL من 1 ، باستخدام نفس أطوال كلمة المرور الافتراضية (الطول 7 عادةً) لاختبارات الأداء.
  • أوضاع جديدة لإنشاء كلمات مرور متشققة (أوضاع التكسير) ، بما في ذلك PRINCE من hashcat (يولد "عبارات" عن طريق تجميع عدة كلمات بترتيب تصاعدي للطول الإجمالي) ، ومجموعات فرعية (جلب كلمات مرور بعدد غير كافٍ من الأحرف المختلفة ، حتى لو كانت هذه الأحرف تأتي من مجموعة كبيرة من الكلمات الممكنة) والهجين الخارجي (يسمح للأوضاع الخارجية ، الموصوفة في ملفات التكوين بلغة شبيهة بلغة C ، بتوليد العديد من كلمات المرور التي يمكن التحقق منها بناءً على كل "كلمة" أساسية مستلمة من وضع آخر). أيضا ، عدة أوضاع خارجية جديدة محددة مسبقا.
  • ميزات إضافية لاستخدام عدة أوضاع في نفس الوقت (وضع فوق الآخر - التراص) ، وكذلك لاستخدام مجموعات القواعد (تكديس قواعد قائمة الكلمات).
  • تحسينات على أوضاع القناع (تمديد القناع التدريجي في نطاق محدد من الأطوال ، وتطبيق القناع على جانب جهاز OpenCL أو لوحة FPGA) وكراك واحد (سلوك معقول على الأجهزة التي تحسب عددًا كبيرًا من التجزئة على التوازي ، والتي كانت في السابق في هذا الوضع يفتقر إلى كلمات المرور التي يجب التحقق منها ، وكذلك قيود على استهلاك الذاكرة).
  • العديد من التحسينات في دعم Unicode والتشفيرات الأخرى في أنظمة فرعية مختلفة.
  • العديد من التحسينات على برامج * 2john (تحويل الملفات ذات التنسيقات المختلفة إلى ملفات
    استخدمه مع john) ، وخاصة wpapcap2john (يتعامل مع حركة مرور WiFi).

  • العديد من خيارات سطر الأوامر الجديدة ، وإعدادات john.conf ، وتكوين خيارات البرنامج النصي ، والميزات الجديدة المقابلة لها ، والتي لم يتم ذكرها كلها هنا.
  • تحسين جودة الكود نظرًا للدعم المضمن لإصدارات تصحيح الأخطاء باستخدام AddressSanitizer (سابقًا) و UndefinedBehaviorSanitizer (تمت إضافته) ، وإضافة مصهر تنسيق مضمن (ضمن GSoC 2015) ، باستخدام التكامل المستمر (يبني لعشرات من أنظمة التشغيل ومجموعات المترجم و اختبارها للحصول على الدعم الصحيح لجميع التنسيقات).

المصدر: opennet.ru

إضافة تعليق