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

添加評論