John the Ripper 1.9.0-jumbo-1 có hỗ trợ FPGA

Phát hành phiên bản mới của chương trình đoán mật khẩu được hỗ trợ lâu đời nhất John the Ripper 1.9.0-jumbo-1. (Dự án đã được phát triển từ năm 1996.) Ngày trang dự án Các nguồn có sẵn để tải xuống cũng như các bản lắp ráp sẵn có cho Windows.

Cần lưu ý rằng đã 1.8.0 năm trôi qua kể từ khi phát hành phiên bản 1-jumbo-4.5, trong đó hơn 6000 thay đổi (cam kết git) được thực hiện từ hơn 80 nhà phát triển. Trong thời gian này, các nhà phát triển khuyến nghị sử dụng phiên bản hiện tại từ GitHub, trạng thái được duy trì ổn định bất chấp những thay đổi được thực hiện nhờ hội nhập liên tục, bao gồm xác minh sơ bộ từng thay đổi (yêu cầu kéo) trên nhiều nền tảng. Điểm đặc biệt của phiên bản mới là sự xuất hiện hỗ trợ FPGA (FPGA) ngoài CPU, GPU và Xeon Phi.


Đối với bảng ZTEX 1.15y, bao gồm 4 chip FPGA và ban đầu được sử dụng chủ yếu để khai thác Bitcoin, 7 loại băm mật khẩu hiện đã được triển khai: bcrypt, giải mã cổ điển (bao gồm bigcrypt), sha512crypt, sha256crypt, md5crypt (bao gồm Apache apr1 và AIX smd5), Drupal7 và phpass (được sử dụng , đặc biệt là trong WordPress). Một số trong số chúng được triển khai lần đầu tiên trên FPGA. Đối với bcrypt, hiệu suất đạt được là ~119k c/s với 2^5 lần lặp (“$2b$05”) với mức tiêu thụ điện năng khoảng 27 watt vượt xa đáng kể kết quả của các GPU mới nhất trên mỗi bo mạch, trên mỗi giá phần cứng và trên mỗi watt. Cũng được hỗ trợ cụm của các bo mạch loại này, đã được thử nghiệm lên tới 16 bo mạch (64 FPGA) được điều khiển từ một Raspberry Pi 2. Chức năng John the Ripper thông thường được hỗ trợ, bao gồm tất cả các chế độ đoán mật khẩu và tải xuống đồng thời một số lượng lớn các hàm băm. Để tăng tốc công việc, chúng tôi đã triển khai việc sử dụng mặt nạ (chế độ "--mask", bao gồm cả việc kết hợp với các chế độ khác) và so sánh các giá trị băm được tính toán với các giá trị được tải ở phía FPGA. Từ góc độ triển khai, nhiều thiết kế (ví dụ: sha512crypt và Drupal7) các khối bao gồm lõi xử lý đa luồng (lõi CPU mềm) tương tác với lõi mật mã được sử dụng. Việc phát triển chức năng này do Denis Burykin dẫn đầu với sự phối hợp của các nhà phát triển jumbo khác.

Những thay đổi lớn khác:

  • Hỗ trợ một số lượng lớn các loại băm, mật mã bổ sung, v.v., bao gồm cả băm mật khẩu cổ điển (ví dụ: từ các phiên bản mới của QNX), cũng như ví tiền điện tử, kho lưu trữ được mã hóa và hệ thống tệp được mã hóa (ví dụ: Bitlocker và FreeBSD geli), cũng như hỗ trợ các loại định dạng mới được hỗ trợ trước đây (ví dụ: đã thêm hỗ trợ cho bcrypt-pbkdf cho softraid OpenBSD) và hơn thế nữa. Tổng cộng, 80 định dạng đã được thêm vào CPU và 47 định dạng trên OpenCL (và một số ít định dạng cũ đã bị loại bỏ để tích hợp vào các định dạng mới và lỗi thời). Tổng số định dạng hiện là 407 trên CPU (hoặc 262 không bao gồm các định dạng "động" được định cấu hình từ các tệp cấu hình) và 88 trên OpenCL.
  • Từ chối hỗ trợ ngôn ngữ CUDA để chuyển sang OpenCL, điều này không hề cản trở việc sử dụng toàn bộ GPU NVIDIA (và thậm chí còn giúp ích, nhờ tập trung phát triển và tối ưu hóa vào một lần triển khai từng định dạng cho GPU thay vì hai lần triển khai trước đó).
  • Hỗ trợ các bộ hướng dẫn SIMD mới - AVX2, AVX-512 (bao gồm cả Xeon Phi thế hệ thứ hai) và MIC (cho thế hệ đầu tiên) - cũng như việc sử dụng SIMD phổ quát và đầy đủ hơn trong việc triển khai nhiều định dạng, bao gồm cả việc sử dụng tập lệnh được hỗ trợ trước đó lên tới AVX và XOP trên x86(-64) và
    NEON, ASIMD và AltiVec lần lượt trên ARM, Aarch64 và POWER. (Một phần là một phần của GSoC 2015.)
  • Nhiều tối ưu hóa cho CPU và OpenCL, cả hai đều hoạt động hiệu quả hơn với số lượng lớn hàm băm đồng thời (ví dụ: tải 320 triệu hàm băm SHA-1 trên GPU đã được thử nghiệm) và để tăng tốc độ tính toán hàm băm. Một số tối ưu hóa này mang tính phổ quát, một số bao gồm các tập hợp con định dạng khác nhau và nhiều tối ưu hóa dành riêng cho từng định dạng.
  • (Tự động-)cấu hình đệm tối ưu các mật khẩu đã kiểm tra trên CPU (“—tune=auto —verbosity=5”) và kích thước công việc tối ưu trên OpenCL (được bật theo mặc định), bao gồm cả việc tính đến tốc độ tăng tốc chậm của NVIDIA GTX loạt GPU có tần số hoạt động tối đa là 10xx và mới hơn. Sử dụng các giá trị băm thực sự được tải và độ dài thực tế của mật khẩu đang được kiểm tra (khi đã biết trước) để tự động điều chỉnh như vậy.
  • Thêm trình biên dịch cho "biểu thức động" được chỉ định trực tiếp trên dòng lệnh và triển khai các loại băm kết hợp mới, ví dụ: "-format=dynamic='sha1(md5($p).$s)'", được tính toán trên CPU bằng SIMD . Là thành phần của các biểu thức như vậy, hàng chục hàm băm nhanh được hỗ trợ (từ các hàm phổ biến như MD5 đến các hàm băm vừa phải như Whirlpool), nối chuỗi con, mã hóa và giải mã, chuyển đổi kiểu chữ, tham chiếu đến mật khẩu, muối, tên người dùng và hằng số chuỗi.
  • Loại bỏ những khác biệt không mong muốn từ hashcat, bao gồm hỗ trợ các quy tắc dành riêng cho hashcat trước đó (lệnh quy tắc danh sách từ), chuyển sang đánh số thiết bị OpenCL từ 1, sử dụng mặc định cùng độ dài mật khẩu (thường là độ dài 7) để kiểm tra hiệu suất.
  • Các chế độ mới để tạo mật khẩu có thể kiểm chứng (chế độ bẻ khóa), bao gồm PRINCE từ hashcat (tạo thành “cụm từ” bằng cách kết hợp nhiều từ theo thứ tự tăng dần của tổng độ dài), các tập hợp con (hiển thị mật khẩu không đủ số lượng ký tự khác nhau, ngay cả khi các ký tự này xuất hiện). từ một tập hợp lớn các mật khẩu có thể có) và bên ngoài kết hợp (cho phép các chế độ bên ngoài, được mô tả trong các tệp cấu hình bằng ngôn ngữ giống C, tạo ra nhiều mật khẩu có thể xác minh được dựa trên mỗi “từ” cơ bản nhận được từ chế độ khác). Ngoài ra, một số chế độ bên ngoài mới được xác định trước.
  • Các tính năng bổ sung để sử dụng đồng thời một số chế độ (chế độ này chồng lên chế độ kia - xếp chồng), cũng như để sử dụng các bộ quy tắc (xếp chồng quy tắc danh sách từ).
  • Các cải tiến đối với chế độ mặt nạ (kéo dài dần mặt nạ trong một phạm vi độ dài xác định, áp dụng mặt nạ ở bên cạnh thiết bị OpenCL hoặc bảng FPGA) và vết nứt đơn (hành vi hợp lý trên các thiết bị tính toán số lượng lớn các giá trị băm song song , mà trước đây không có đủ mật khẩu có thể xác minh ở chế độ này và cũng có những hạn chế về mức tiêu thụ bộ nhớ).
  • Nhiều cải tiến để hỗ trợ Unicode và các bảng mã khác trong các hệ thống con khác nhau.
  • Nhiều cải tiến cho chương trình *2john (chuyển đổi các tập tin có định dạng khác nhau cho
    sử dụng với john), đặc biệt là wpapcap2john (xử lý lưu lượng WiFi).
  • Có nhiều tùy chọn dòng lệnh mới, cài đặt trong john.conf, tùy chọn cấu hình tập lệnh và các tính năng mới tương ứng, không phải tất cả đều được đề cập ở đây.
  • Cải thiện chất lượng mã nhờ hỗ trợ tích hợp cho các bản dựng gỡ lỗi với addressSanitizer (trước đây) và Und xác địnhBehaviorSanitizer (đã thêm), thêm bộ làm mờ định dạng tích hợp (như một phần của GSoC 2015), sử dụng tích hợp liên tục (bản dựng cho hàng tá hệ điều hành và trình biên dịch kết hợp và kiểm tra chúng để hỗ trợ chính xác cho tất cả các định dạng).

Nguồn: linux.org.ru

Thêm một lời nhận xét