ื ืฉืืจืื ืคืื ืื ื ืืึทืข ืืืขืจืกืืข ืืื ืื ืืืืกืืขื ืคืื FPGA ืฉืืืฆื (ืืื ืึทืืืฉืึทื ืฆื ืงืคึผื, ืืคึผื ืืื ืงืกืขืึธื ืคื). ืคึฟืึทืจ ืืึธืจืื
ืคึฟืึทืจ bcrypt, ืื ืึทืืฉืืืื ืคืึธืจืฉืืขืืื ื ืคืื ~ 119k c / s ืืื 2 ^ 5 ืืืขืจืึทืืืึธื ืก ("$ 2b $ 05") ืืื ืึท ืืึทืื ืงืึทื ืกืึทืืฉืึทื ืคืื ืืืขืื ~ 27 ืืืืืก ืืืืืืืืง ืึทืืืคึผืขืจืคืึธืจืื ืื ืืขืฆืืข ืืคึผืืก ืคึผืขืจ ืืจืขื, ืคึผืขืจ ืืึทืื ืืืึทืจื ืคึผืจืืึทื ืืื ืคึผืขืจ ืืืื. ืืืื ืืขืฉืืืฆื
ืฆื ืคืึทืจืืืืขืจื ืื ืึทืจืืขื, ืืืจ ืืืคึผืืึทืืขื ืึทื ืื ื ืืฆื ืคืื ืึท ืืึทืกืงืข ("--ืืึทืกืงืข" ืืึธืืข, ืึทืจืืึทื ืืขืจืขืื ื ืืื ืงืึธืืืื ืึทืฆืืข ืืื ืื ืืขืจืข ืืึธืืขืก) ืืื ืึท ืคืึทืจืืืืึทื ืคืื ืื ืงืึทืืงืืึทืืืืืื ืืึทืฉืขืก ืืื ืื ืืึธืืืื ืืืืฃ ืื FPGA ืืืึทื. ืืื ืืขืจืืื ืขื ืคืื ืืืคึผืืึทืืขื ืืืืฉืึทื, ืืื ืคืืืข ืคืื โโืื ืืืืืื ื (ืืืฉื, ืคึฟืึทืจ
ืื ืืขืจืข ืืืืืืืง ืขื ืืขืจืื ืืขื:
- ืฉืืืฆื ืคึฟืึทืจ ืึท ืืจืืืก ื ืืืขืจ ืคืื ื ืึธื ืืืืคึผืก ืคืื ืืึทืฉืขืก, ืกืืคืขืจืก, ืืื"ื ื ), ืืื ืืขืืื ื ืืื ืฉืืืฆื ืคึฟืึทืจ ื ืืึทืข ืืืขืจืืืึทืืื ืคืื ืคืึธืจืืึทืฅ ืืืึธืก ืืึธืื ืฉืืื ืืขืฉืืืฆื (ืืืฉื, bcrypt-pbkdf ืฉืืืฆื ืคึฟืึทืจ OpenBSD ืกืึธืคืืจืึทืื ืืื ืฆืืืขืืขืื) ืืื ืคืื ืืขืจ. ืืื ืืึทื ืฅ, 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, ืจืืกืคึผืขืงืืืืืื. - ืคืืืข ืึทืคึผืืึทืืึทืืืืฉืึทื ื ืคึฟืึทืจ ืงืคึผื ืืื OpenCL, ืืืืืข ืฆื ืึทืจืืขืื ืืขืจ ืืคืืฉืึทื ืืื ืืื ืึท ืืจืืืก ื ืืืขืจ ืคืื ืืึทืฉืขืก ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื (ืืืฉื, ืืึธืืืื ื 320 ืืืืืึธื SHA-1 ืืึทืฉืขืก ืืืืฃ ืื ืืคึผื) ืืื ืฆื ืคืึทืจืืจืขืกืขืจื ืื ืืืืงืืึทื ืคืื ืืึทืฉ ืืขืืฉืื. ืขืืืขืืข ืคืื โโืื ืึธืคึผืืืืืืึทืืืึธื ืก ืืขื ืขื ืื ืืืืขืจืกืึทื, ืขืืืขืืข ืืขืงื ืคืึทืจืฉืืื ืกืึทืืกืขืฅ ืคืื ืคึฟืึธืจืืึทืืืจืื ืืขื, ืืื ืคืืืข ืืขื ืขื ืคึฟืึธืจืืึทื-ืกืคึผืขืฆืืคืืฉ.
- (ืึทืืืึธ-) ืืื ืื ื ืคืื ืึธืคึผืืืืึทื ืืึทืคืขืจืื ื ืคืื ืึธืคึผืืขืฉืืขืื ืคึผืึทืกืืืขืจืื ืืืืฃ ืื ืงืคึผื ("-tune=auto โverbosity=5") ืืื ืึธืคึผืืืืึทื ืึทืจืืขื ืืืืขื ืฉืึทื ื ืืืืฃ OpenCL (ืขื ืืืืึทืื ืืืจื ืคืขืืืงืืึทื), ืึทืจืืึทื ืืขืจืขืื ื ืื ืคึผืึทืืขืืขื ืึธืคึผืืื ืฆื ืื ืคืื ืึทืคึผืขืจืืืืื ื ืึธืคืืงืืึทื. ืคืื NVIDIA GTX ืกืขืจืืข ืืคึผืืก 10xx ืืื ื ืืึทืขืจ. ื ืืฆื ืคืึทืงืืืฉ ืืึธืืืื ืืึทืฉืขืก ืืื ืคืึทืงืืืฉ ืืขื ื ืคืื ืึธืคึผืืขืฉืืขืื ืคึผืึทืกืืืขืจืื (ืืืขื ืขืก ืืื ืืึทืืืืกื ืืื ืฉืืืึทืื) ืคึฟืึทืจ ืึทืืึท ืึทืืืึธ-ืืื ืื ื.
- ืึทืืื ื ืึท "ืืื ืึทืืืฉ ืืืืกืืจืืงื" ืงืึทืืคึผืืืืขืจ ืืืึธืก ืืื ืกืคึผืขืกืืคืืขื ืืืืึทื ืืืืฃ ืื ืืึทืคึฟืขืื ืฉืืจื ืืื ืืืคึผืืึทืืึทื ืฅ ื ืืึท ืืืืืจืื ืืึทืฉ ืืืืคึผืก, ืืืฉื "--format=dynamic='sha1(md5($p).$s)'", ืงืึทืืงืืึทืืืืืื ืืืืฃ ืื ืงืคึผื ื ืืฆื SIMD. ืืึทืืึทื ื ืคืื ืฉื ืขื ืืึทืฉืขืก (ืคืื ืคึผืจืึธืกื ืึธื ืขืก ืืื MD5 ืฆื ืืืืืืื ืขืงืืึธืืืฉ ืึธื ืขืก ืืื ืืืืืจืืคึผืึธืึธื), ืกืืืกืืจืื ื ืงืึทื ืงืึทืืึทื ืืืฉืึทื, ืงืึธืืืจืื ื ืืื ืืืงืึธืืืื ื, ืืึทืจืึทืงืืขืจ ืคืึทื ืงืึทื ืืืขืจืืฉืึทื, ืคึผืึทืจืึธื ืจืขืคืขืจืขื ืฆื, ืืึทืืฅ, ื ืืืขื ืืื ืฉืืจืืงื ืงืึทื ืกืืึทื ืฅ ืืขื ืขื ืืขืฉืืืฆื ืืื ืงืึทืืคึผืึธืื ืึทื ืฅ ืคืื ืึทืืึท ืืืืกืืจืืงื.
- ืืืืืึทื ืืืฉืึทื ืคืื ืึทื ืืืืืืจืึทืืึทื ืืืคืขืจืึทื ืกืื ืคืื ืืึทืฉืงืึทื, ืึทืจืืึทื ืืขืจืขืื ื ืฉืืืฆื ืคึฟืึทืจ ืคืจืืขืจ ืืึทืฉืงืึทื-ืกืคึผืขืฆืืคืืฉ ืืืึธืจืืืืกื ืืขืจืฉื ืงืึทืืึทื ืื, ืกืืืืืฉืื ื ืฆื OpenCL ืืืื ื ืืืขืจืื ื ืคึฟืื 1, ื ืืฆื ืื ืืขืืืข ืคืขืืืงืืึทื ืคึผืึทืจืึธื ืืขื ื (ืืืืฉืึทืืืึทืื ืืขื ื 7) ืคึฟืึทืจ ืคืึธืจืฉืืขืืื ื ืืขืกืฅ.
- ื ืื ืงืจืึทืงืื ื ืืึธืืขืก, ืึทืจืืึทื ืืขืจืขืื ื PRINCE ืคึฟืื hashcat (ืืืฉืขื ืขืจืืืฅ "ืคืจืึทืกืขืก" ืืืจื ืงืึทื ืงืึทืืึทื ืืืืื ื ืงืืืคื ืืืขืจืืขืจ ืืื ืึทืกืขื ืืื ื ืกืืจ ืคืื ืืึทื ืฅ ืืขื ื), ืกืึทืืกืขืฅ (ืืจืขื ืื ืคึผืึทืกืืืขืจืื ืืื ื ืื ืืขื ืื ืคืึทืจืฉืืืขื ืข ืืืชืืืช ืืคืืื ืืืื ืื ืืืชืืืช ืงืืืขื ืคืื ืึท ืืจืืืก ืืึทื ื ืคืื ืืขืืืขื ืึธื ืขืก) ืืื ืืืืืจืื ืคืื ืืจืืืกื ืืืง. (ืืขืจืืืืื ืคืื ืืจืืืกื ืืืง ืืึธืืขืก, ืืืกืงืจืืืื ืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืขืก ืืื C-ืืื ืฉืคึผืจืึทื, ืฆื ืืืฉืขื ืขืจืืื ืคืืืข ืืืขืจืึทืคืืืึทืืึทื ืคึผืึทืกืืืขืจืื ืืืืืจื ืืืืฃ ืืขืืขืจ ืืึทืืข "ืืืึธืจื" ืืืงืืืขื ืคืื ืื ืื ืืขืจ ืืึธืืข). ืืืื ืขืืืขืืข ื ืืึทืข ืคึผืจืขืืขืคืื ืขื ืคืื ืืจืืืกื ืืืง ืืึธืืขืก.
- ื ืึธื ืคึฟืขืึดืงืืืื ืคึฟืึทืจ ื ืืฆื ืขืืืขืืข ืืึธืืขืก ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื (ืืืื ืขืจ ืืืืฃ ืฉืคึผืืฅ ืคืื ืื ืื ืืขืจืข - ืกืืึทืงืื ื), ืืื ืืขืืื ื ืืื ืคึฟืึทืจ ืึทืืึท ื ืืฆื ืคืื ืืขืจืฉื ืฉืืขืื (ืกืืึทืงืื ื ืืืึธืจืืืืกื ืึผืืืื).
- ืืืคึผืจืืืืืึทื ืฅ ืฆื ืื ืืึทืกืงืข ืืึธืืขืก (ืืจืึทืืืฉืืึทื ืืึทืกืงืข ืกืืจืขืืฉืื ื ืืื ืื ืกืคึผืขืกืืคืืขื ืงืืื ืคืื ืืขื ืืงืืก, ืึทืคึผืืืืื ื ืื ืืึทืกืงืข ืืืืฃ ืื ืืืึทื ืคืื ืึท OpenCL ืืืื ืึธืืขืจ FPGA ืืจืขื) ืืื ืืืื ืคึผืืึทืฆื (ืืืืึทื ื ืึทืืืจ ืืืืฃ ืืขืืืืกืขืก ืืืึธืก ืจืขืืขื ืขื ืึท ืืจืืืก ื ืืืขืจ ืคืื ืืึทืฉืื ืืื ืคึผืึทืจืึทืืขื, ืืืึธืก ืคืจืืขืจ ืืื ืืขื ืืึธืืข ืคืขืื ืคึผืึทืกืืืขืจืื ืฆื ืืืื ืึธืคึผืืขืฉืืขืื, ืืื ืืืื ืืืืึทืฅ ืืืืฃ ืืึผืจืื ืงืึทื ืกืึทืืฉืึทื).
- ืคืืืข ืืืคึผืจืืืืืึทื ืฅ ืืื ืฉืืืฆื ืคึฟืึทืจ ืืื ืืงืึธื ืืื ืื ืืขืจืข ืงืึธืืืจืื ื ืืื ืคืึทืจืฉืืื ืกืึทืืกืืกืืึทืื.
- ืคืืืข ืืืคึผืจืืืืืึทื ืฅ ืฆื * 2john ืืืืื (ืงืึทื ืืืขืจืืื ื ืืขืงืขืก ืคืื ืคืึทืจืฉืืื ืคึฟืึธืจืืึทืืืจืื ืืขื ืฆื
ื ืืฆื ืืื John), ืกืคึผืขืฆืืขื wpapcap2john (ืืึทื ืืึทืื ืืืืคื ืคืึทืจืงืขืจ). - ืคืืืข ื ืืึทืข ืืึทืคึฟืขืื ืฉืืจื ืึธืคึผืฆืืขืก, john.conf ืกืขืืืื ืืก, ืงืึทื ืคืืืืขืจ ืฉืจืืคื ืึธืคึผืฆืืขืก ืืื ืืืืขืจ ืงืึธืจืึทืกืคึผืึทื ืืื ื ื ืืึท ืคึฟืขืึดืงืืืื, ื ืื ืึทืืข ืคืื โโืืืึธืก ืืขื ืขื ืืขืจืืื ื ืืึธ.
- ืืืคึผืจืืืืื ื ืงืึธื ืงืืืึทืืืืขื ืจืขืื ืฆื ืืขืจ ืืขืืืื-ืืื ืฉืืืฆื ืคึฟืึทืจ ืืืืึทื ืืืืขื ืืื AddressSanitizer (ืคืจืืขืจ) ืืื UndefinedBehaviorSanitizer (ืฆืืืขืืืืื), ืึทืืื ื ืึท ืืขืืืื-ืืื ืคึฟืึธืจืืึทื ืคืืืขืจ (ืื GSoC 2015), ื ืืฆื ืงืขืกืืืืขืจืืืง ืื ืึทืืจืืืฉืึทื (ืืืื ืคึฟืึทืจ ืืึทืืึทื ื ืคืื ืึธืคึผืขืจืืืืื ื ืกืืกืืขื ืืื ืงืึทืืคึผืืืืขืจ ืงืึทืืืึทื ืืืฉืึทื ื ืืื ืืขืกืืื ื ืืื ืคึฟืึทืจ ืจืืืืืง ืฉืืืฆื ืคืื ืึทืืข ืคึฟืึธืจืืึทืืืจืื ืืขื).
ืืงืืจ: opennet.ru