ஜான் தி ரிப்பர் 1.9.0-ஜம்போ-1 FPGA ஆதரவுடன் வெளியிடப்பட்டது

வெளியிடப்பட்டது பழைய ஆதரிக்கப்படும் கடவுச்சொல் யூகிக்கும் திட்டத்தின் புதிய பதிப்பு ஜான் தி ரிப்பர் 1.9.0-ஜம்போ-1 (திட்டம் 1996 முதல் உருவாகி வருகிறது). முந்தைய பதிப்பு 1.8.0-ஜம்போ-1 வெளியிடப்பட்டு 4.5 ஆண்டுகள் கடந்துவிட்டன, இதன் போது 6000 க்கும் மேற்பட்ட டெவலப்பர்களிடமிருந்து 80 க்கும் மேற்பட்ட மாற்றங்கள் (ஜிட் கமிட்கள்) செய்யப்பட்டன. நன்றி தொடர்ச்சியான ஒருங்கிணைப்பு, இது பல தளங்களில் உள்ள ஒவ்வொரு மாற்றத்தின் பூர்வாங்க சரிபார்ப்பை (இழுக்க கோரிக்கை) உள்ளடக்கியது, இந்த காலகட்டத்தில் டெவலப்பர்கள் பயன்படுத்த பரிந்துரைத்தனர் GitHub இலிருந்து தற்போதைய பதிப்பு, மாற்றங்கள் செய்யப்பட்ட போதிலும் நிலை நிலையாக பராமரிக்கப்பட்டது. முக்கிய திட்டக் குறியீடு வழங்கியது GPLv2+ உரிமத்தின் கீழ், மற்றும் சில கூறுகளின் குறியீடு BSD உரிமத்தின் கீழ் உள்ளது.

புதிய பதிப்பின் ஒரு சிறப்பு அம்சம் FPGA ஆதரவின் தோற்றம் (CPU, GPU மற்றும் Xeon Phi தவிர). பலகைகளுக்கு ZTEX 1.15y, 4 FPGA சில்லுகள் உட்பட மற்றும் முதலில் Bitcoin மைனிங்கிற்குப் பயன்படுத்தப்பட்டது, 7 வகையான கடவுச்சொல் ஹாஷ்கள் இப்போது செயல்படுத்தப்பட்டுள்ளன: bcrypt, Classic descrypt (bcrypt உட்பட), sha512crypt, sha256crypt, md5crypt (Apache apr1 மற்றும் AIX உட்பட), , குறிப்பாக WordPress இல்). அவற்றில் சில முதல் முறையாக FPGA இல் செயல்படுத்தப்படுகின்றன.

bcrypt ஐப் பொறுத்தவரை, ~119 வாட்ஸ் மின் நுகர்வுடன் 2^5 மறு செய்கைகளுடன் (“$2b$05”) ~27k c/s இன் அடையப்பட்ட செயல்திறன், ஒரு போர்டில், வன்பொருள் விலை மற்றும் வாட் ஒன்றுக்கு சமீபத்திய GPUகளுக்கான முடிவுகளை கணிசமாக மீறுகிறது. . ஆதரவும் அளித்தது கொத்துகள் இந்த வகை பலகைகள், 16 பலகைகள் (64 FPGA சில்லுகள்) வரை சோதனை செய்யப்பட்டது, இது ஒரு ராஸ்பெர்ரி பை 2 இலிருந்து கட்டுப்படுத்தப்படுகிறது. வழக்கமான ஜான் தி ரிப்பர் செயல்பாடு ஆதரிக்கப்படுகிறது, இதில் அனைத்து கடவுச்சொல் யூகிக்கும் முறைகள் மற்றும் அதிக எண்ணிக்கையிலான ஹாஷ்களை ஒரே நேரத்தில் பதிவிறக்கம் செய்தல் ஆகியவை அடங்கும். .

வேலையை விரைவுபடுத்த, முகமூடியைப் பயன்படுத்துவதையும் ("-மாஸ்க்" பயன்முறை, மற்ற முறைகளுடன் இணைந்து) மற்றும் கணக்கிடப்பட்ட ஹாஷ்களை FPGA பக்கத்தில் ஏற்றப்பட்டவற்றுடன் ஒப்பிடுவதையும் செயல்படுத்தினோம். செயல்படுத்தும் கண்ணோட்டத்தில், பல வடிவமைப்புகள் (எ.கா. sha512crypt மற்றும் Drupal7கிரிப்டோகிராஃபிக் கோர்களுடன் தொடர்பு கொள்ளும் பல-திரிக்கப்பட்ட செயலி கோர்கள் (மென்மையான CPU கோர்கள்) கொண்ட தொகுதிகள் பயன்படுத்தப்படுகின்றன. மற்ற ஜம்போ டெவலப்பர்களுடன் ஒருங்கிணைந்து டெனிஸ் புரிகின் இந்த செயல்பாட்டின் வளர்ச்சியை வழிநடத்தினார்.

மற்ற முக்கியமான மாற்றங்கள்:

  • கிளாசிக் பாஸ்வேர்ட் ஹாஷ்கள் (உதாரணமாக, QNX இன் புதிய பதிப்புகளிலிருந்து), அத்துடன் கிரிப்டோகரன்சி வாலட்டுகள், மறைகுறியாக்கப்பட்ட காப்பகங்கள் மற்றும் மறைகுறியாக்கப்பட்ட கோப்பு முறைமைகள் (எடுத்துக்காட்டாக, பிட்லாக்கர் மற்றும் FreeBSD geli), அத்துடன் முன்பு ஆதரிக்கப்பட்ட புதிய வகை வடிவங்களுக்கான ஆதரவு (உதாரணமாக, OpenBSD softraidக்கான bcrypt-pbkdfக்கான ஆதரவு சேர்க்கப்பட்டது) மற்றும் பல. மொத்தத்தில், CPU இல் 80 வடிவங்களும், OpenCL இல் 47 வடிவங்களும் சேர்க்கப்பட்டுள்ளன. CPU இல் இப்போது மொத்த வடிவங்களின் எண்ணிக்கை 407 ஆக உள்ளது (அல்லது 262 உள்ளமைவு கோப்புகளிலிருந்து கட்டமைக்கப்பட்ட "டைனமிக்" வடிவங்கள் சேர்க்கப்படவில்லை) மற்றும் OpenCL இல் 88.
  • OpenCL க்கு ஆதரவாக CUDA மொழியை ஆதரிக்க மறுப்பது, இது NVIDIA GPUகளின் முழுப் பயன்பாட்டிற்கு எந்த வகையிலும் இடையூறு செய்யாது (மேலும், GPU க்காக இரண்டு செயலாக்கங்களுக்குப் பதிலாக, GPU க்காக ஒவ்வொரு வடிவத்திலும் ஒரு செயலாக்கத்தை மேம்படுத்துதல் மற்றும் மேம்படுத்துதல் ஆகியவற்றில் கவனம் செலுத்துவதற்கும் உதவுகிறது).
  • புதிய SIMD அறிவுறுத்தல் தொகுப்புகளுக்கான ஆதரவு - AVX2, AVX-512 (இரண்டாம் தலைமுறை Xeon Phi உட்பட) மற்றும் MIC (முதல் தலைமுறைக்கானது) - அத்துடன் SIMD இன் பயன்பாடு உட்பட பல வடிவங்களின் செயலாக்கங்களில் உலகளாவிய மற்றும் முழுமையான பயன்பாடு. x86(-64) இல் AVX மற்றும் XOP வரையிலான முன்னரே ஆதரிக்கப்பட்ட வழிமுறைகள் மற்றும்
    NEON, ASIMD மற்றும் AltiVec இல் முறையே ARM, Aarch64 மற்றும் POWER.

  • CPU மற்றும் OpenCL ஆகியவற்றுக்கான பல மேம்படுத்தல்கள், ஒரே நேரத்தில் அதிக எண்ணிக்கையிலான ஹாஷ்களுடன் மிகவும் திறமையாக வேலை செய்ய (உதாரணமாக, GPU இல் 320 மில்லியன் SHA-1 ஹாஷ்களை ஏற்றுவது சோதிக்கப்பட்டது), மற்றும் ஹாஷ் கணக்கீடுகளின் வேகத்தை அதிகரிக்க. இந்த மேம்படுத்தல்களில் சில உலகளாவியவை, சில வடிவங்களின் வெவ்வேறு துணைக்குழுக்களை உள்ளடக்கியது, மேலும் பல தனிப்பட்ட வடிவங்களுக்கு குறிப்பிட்டவை.
  • (ஆட்டோ-) CPU இல் சரிபார்க்கப்பட்ட கடவுச்சொற்களின் உகந்த இடையகத்தின் உள்ளமைவு (“—tune=auto —verbosity=5”) மற்றும் OpenCL இல் உகந்த வேலை அளவுகள் (இயல்புநிலையாக இயக்கப்பட்டது), முழு இயக்க அதிர்வெண் வரை மெதுவான ரேம்பைக் கணக்கில் எடுத்துக்கொள்வது உட்பட NVIDIA GTX தொடர் GPUகள் 10xx மற்றும் புதியவை. உண்மையில் ஏற்றப்பட்ட ஹாஷ்களைப் பயன்படுத்துதல் மற்றும் கடவுச்சொற்களின் உண்மையான நீளம் (முன்கூட்டியே அறியப்படும் போது) அத்தகைய தானாகச் சரிசெய்வதற்கு.
  • கட்டளை வரியில் நேரடியாகக் குறிப்பிடப்பட்ட "டைனமிக் எக்ஸ்பிரஷன்களுக்கான" கம்பைலரைச் சேர்த்தல் மற்றும் புதிய ஹைப்ரிட் ஹாஷ் வகைகளைச் செயல்படுத்துதல், எடுத்துக்காட்டாக "-format=dynamic='sha1(md5($p).$s)'", SIMD ஐப் பயன்படுத்தி CPU இல் கணக்கிடப்படுகிறது. . இத்தகைய வெளிப்பாடுகளின் கூறுகளாக, டஜன் கணக்கான வேகமான ஹாஷ்கள் ஆதரிக்கப்படுகின்றன (பொதுவான MD5 போன்றவற்றிலிருந்து Whirlpool போன்ற மிதமான கவர்ச்சியானவை வரை), சப்ஸ்ட்ரிங் ஒருங்கிணைப்பு, குறியாக்கம் மற்றும் டிகோடிங், கேரக்டர் கேஸ் கன்வெர்ஷன், பாஸ்வேர்டு, உப்பு, பயனர்பெயர் மற்றும் சரம் மாறிலிகள் பற்றிய குறிப்புகள்.
  • முந்தைய ஹாஷ்கேட்-குறிப்பிட்ட விதிகளுக்கான ஆதரவு (வேர்ட்லிஸ்ட் விதி கட்டளைகள்), 1 இலிருந்து OpenCL சாதன எண்ணுக்கு மாறுதல், செயல்திறன் சோதனைகளுக்கு அதே கடவுச்சொல் நீளங்களின் இயல்புநிலை பயன்பாடு (பொதுவாக நீளம் 7) உட்பட, hashcat இலிருந்து தேவையற்ற வேறுபாடுகளை நீக்குதல்.
  • சரிபார்க்கக்கூடிய கடவுச்சொற்களை உருவாக்குவதற்கான புதிய முறைகள் (கிராக்கிங் பயன்முறைகள்), ஹாஷ்கேட்டிலிருந்து PRINCE (மொத்த நீளத்தின் வரிசையை பல வார்த்தைகளை இணைத்து "சொற்றொடர்களை" உருவாக்குகிறது), துணைக்குழுக்கள் (இந்த எழுத்துக்கள் வந்தாலும் கூட, கடவுச்சொற்களை போதுமான எண்ணிக்கையில் வெவ்வேறு எழுத்துக்கள் கொண்டு வரும். சாத்தியமானவற்றின் பெரிய தொகுப்பிலிருந்து) மற்றும் கலப்பின வெளிப்புற (வெளிப்புற முறைகள், C-போன்ற மொழியில் உள்ளமைவு கோப்புகளில் விவரிக்கப்பட்டுள்ளது, மற்றொரு பயன்முறையிலிருந்து பெறப்பட்ட ஒவ்வொரு அடிப்படை "வார்த்தை" அடிப்படையில் பல சரிபார்க்கக்கூடிய கடவுச்சொற்களை உருவாக்க அனுமதிக்கிறது). மேலும், பல புதிய முன் வரையறுக்கப்பட்ட வெளிப்புற முறைகள்.
  • ஒரே நேரத்தில் பல முறைகளைப் பயன்படுத்துவதற்கான கூடுதல் அம்சங்கள் (ஒன்று மேல் ஒன்று - அடுக்கி வைத்தல்), அத்துடன் விதிகளின் தொகுப்புகளைப் பயன்படுத்துதல் (வார்த்தைப்பட்டியல் விதிகள் குவியலிடுதல்).
  • முகமூடி முறைகளில் மேம்பாடுகள் (குறிப்பிட்ட நீளத்தில் முகமூடியை படிப்படியாக நீட்டுதல், OpenCL சாதனம் அல்லது FPGA பலகையின் பக்கத்தில் முகமூடியைப் பயன்படுத்துதல்) மற்றும் ஒற்றை கிராக் (இணையாக அதிக எண்ணிக்கையிலான ஹாஷ்களைக் கணக்கிடும் சாதனங்களில் நியாயமான நடத்தை , இதற்கு முன்பு இந்த பயன்முறையில் போதுமான சரிபார்க்கக்கூடிய கடவுச்சொற்கள் இல்லை, மேலும் நினைவக நுகர்வு மீதான கட்டுப்பாடுகள்).
  • பல்வேறு துணை அமைப்புகளில் யூனிகோட் மற்றும் பிற குறியாக்கங்களை ஆதரிக்க பல மேம்பாடுகள்.
  • *2john நிரல்களில் பல மேம்பாடுகள் (பல்வேறு வடிவங்களின் கோப்புகளை மாற்றும்
    ஜானுடன் பயன்படுத்தவும்), குறிப்பாக wpapcap2john (வைஃபை டிராஃபிக்கைக் கையாளுகிறது).

  • பல புதிய கட்டளை வரி விருப்பங்கள் உள்ளன, john.conf இல் அமைப்புகள், ஸ்கிரிப்ட் விருப்பங்களை உள்ளமைத்தல் மற்றும் தொடர்புடைய புதிய அம்சங்கள், இவை அனைத்தும் இங்கு குறிப்பிடப்படவில்லை.
  • AddressSanitizer (முந்தைய) மற்றும் UndefinedBehaviorSanitizer (சேர்க்கப்பட்டது) உடன் டிபக் பில்ட்களுக்கான உள்ளமைக்கப்பட்ட ஆதரவின் குறியீட்டின் தரத்தை மேம்படுத்துதல், தொடர்ச்சியான ஒருங்கிணைப்பைப் பயன்படுத்தி (GSoC 2015 இன் ஒரு பகுதியாக) உள்ளமைக்கப்பட்ட ஃபார்மேட் ஃபஸரைச் சேர்த்தல் சேர்க்கைகள் மற்றும் அனைத்து வடிவங்களுக்கும் சரியான ஆதரவுக்காக அவற்றைச் சோதித்தல்).

ஆதாரம்: opennet.ru

கருத்தைச் சேர்