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 功能,包括所有密碼猜測模式和同時下載大量雜湊值。

為了加快工作速度,我們實現了遮罩(「—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。

  • 對 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

添加評論