John the Ripper 1.9.0-jumbo-1,支持 FPGA

发布 最古老的受支持密码猜测程序 John the Ripper 1.9.0-jumbo-1 的新版本。 (该项目自 1996 年以来一直在开发。) 项目页面 源代码以及适用于 Windows 的现成程序集可供下载。

值得注意的是,自 1.8.0-jumbo-1 版本发布以来已经过去了 4.5 年,期间有超过 6000 名开发人员进行了 80 多次更改(git 提交)。 在此期间,开发人员建议使用 当前版本来自 GitHub,尽管发生了变化,但其状态仍保持稳定 持续集成,其中包括在许多平台上对每个更改(拉取请求)进行初步验证。 新版本的一个特色是除了CPU、GPU和Xeon Phi之外还出现了对FPGA(FPGA)的支持。


对于板 中泰克斯1.15年,包括 4 个 FPGA 芯片,最初主要用于比特币挖矿,现在实现了 7 种密码哈希:bcrypt、classic descrypt(包括 bigcrypt)、sha512crypt、sha256crypt、md5crypt(包括 Apache apr1 和 AIX smd5)、Drupal7 和 phpass(使用,特别是在 WordPress 中)。 其中一些是首次在FPGA上实现。 对于 bcrypt,通过 119^2 次迭代(“$5b$2”)实现了约 05k c/s 的性能,功耗约为 27 瓦,显着超过了每块板、每硬件价格和每瓦最新 GPU 的结果。 还支持 集群 这种类型的板,已通过单个 Raspberry Pi 16 控制的多达 64 个板(2 个 FPGA)进行了测试。支持通常的 John the Ripper 功能,包括所有密码猜测模式和同时下载大量哈希值。 为了加快工作速度,我们实现了掩码的使用(“--mask”模式,包括与其他模式的组合),并将计算出的哈希值与 FPGA 端加载的哈希值进行比较。 从实现的角度来看,许多设计(例如 sha512crypt 和 Drupal7)使用由与加密核心交互的多线程处理器核心(软CPU核心)组成的块。 此功能的开发由 Denis Burykin 与其他 Jumbo 开发人员协调领导。

其他主要变化:

  • 支持大量其他类型的哈希、密码等,包括经典密码哈希(例如,来自新版本的 QNX),以及加密货币钱包、加密档案和加密文件系统(例如 Bitlocker 和FreeBSD geli),以及对以前支持的新型格式的支持(例如,为 OpenBSD softraid 添加了对 bcrypt-pbkdf 的支持)等等。 总共在 CPU 上添加了 80 种格式,在 OpenCL 上添加了 47 种格式(并且少量旧格式已被删除,以集成到新的和过时的格式中)。 现在,CPU 上的格式总数为 407 种(或 262 种,不包括从配置文件配置的“动态”格式),OpenCL 上的格式总数为 88 种。
  • 拒绝支持 CUDA 语言,转而支持 OpenCL,这绝不会干扰 NVIDIA GPU 的充分利用(甚至有所帮助,这要归功于将开发和优化重点放在 GPU 每种格式的一种实现上,而不是之前的两种实现)。
  • 支持新的 SIMD 指令集 - AVX2、AVX-512(包括第二代 Xeon Phi)和 MIC(第一代) - 以及在许多格式的实现中更通用和完整地使用 SIMD,包括使用以前在 x86(-64) 上支持的指令集高达 AVX 和 XOP
    分别在 ARM、Aarch64 和 POWER 上运行 NEON、ASIMD 和 AltiVec。 (部分作为 GSoC 2015 的一部分。)
  • 对 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)、子字符串连接、编码和解码、字符大小写转换、对密码、盐、用户名和字符串常量的引用。
  • 消除与 hashcat 之间不需要的差异,包括支持以前的 hashcat 特定规则(wordlist 规则命令)、从 1 过渡到 OpenCL 设备编号、默认使用相同的密码长度(通常长度 7)进行性能测试。
  • 生成可验证密码的新模式(破解模式),包括 hashcat 中的 PRINCE(通过按总长度递增的顺序组合几个单词来形成“短语”)、子集(显示不同字符数量不足的密码,即使这些字符出现)来自大量可能的密码)和混合外部(允许外部模式,在配置文件中以类 C 语言描述,基于从另一种模式接收到的每个基本“单词”生成许多可验证的密码)。 此外,还有几种新的预定义外部模式。
  • 同时使用多种模式(一种在另一种之上 - 堆叠)以及使用规则集(单词列表规则堆叠)的附加功能。
  • 改进掩码模式(在指定长度范围内逐渐拉伸掩码、在 OpenCL 设备或 FPGA 板侧面应用掩码)和单裂纹(并行计算大量哈希值的设备上的合理行为) ,此前在此模式下没有足够的可验证密码,并且对内存消耗也有限制)。
  • 对不同子系统中的 Unicode 和其他编码的支持进行了许多改进。
  • 对 *2john 程序的许多改进(将不同格式的文件转换为
    与 john 一起使用),尤其是 wpapcap2john(处理 WiFi 流量)。
  • 有很多新的命令行选项、john.conf 中的设置、配置脚本选项以及相应的新功能,这里并未全部提及。
  • 通过使用 AddressSanitizer(以前)和 UndefinedBehaviorSanitizer(添加)对调试构建的内置支持、添加内置格式模糊器(作为 GSoC 2015 的一部分)、使用持续集成(针对数十个操作系统和编译器进行构建)来提高代码质量组合并测试它们是否正确支持所有格式)。

来源: linux.org.ru

添加评论