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

发布 最旧的受支持密码猜测程序的新版本 开膛手约翰 1.9.0-jumbo-1 (该项目自1996年以来一直在开发)。 自上一版本 1.8.0-jumbo-1 发布以来已经过去了 4.5 年,期间有 6000 多名开发人员进行了 80 多次更改(git 提交)。 谢谢 持续集成,其中包括对许多平台上的每个更改(拉取请求)进行初步检查,在此期间开发人员建议使用 当前版本来自 GitHub,尽管发生了变化,其状态仍保持稳定。 主要项目代码 分发者 GPLv2+许可下,部分组件的代码在BSD许可下。

新版本的一个特点是出现了 FPGA 支持(除了 CPU、GPU 和 Xeon Phi)。 对于板 中泰克斯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 功能,包括所有密码猜测模式和同时下载大量哈希值。

为了加快工作速度,我们实现了掩码(“—掩码”模式,包括与其他模式的组合)的使用,并将计算出的哈希值与 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。

  • 对 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 的一部分)、使用持续集成(针对数十个操作系统和编译器进行构建)来提高代码质量组合并测试它们是否正确支持所有格式)。

来源: opennet.ru

添加评论