Điểm đặc biệt của phiên bản mới là sự xuất hiện hỗ trợ FPGA (ngoài CPU, GPU và Xeon Phi). Đối với bảng
Đố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 ~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ợ
Để 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ị băm được tải ở phía FPGA. Từ góc độ triển khai, nhiều thiết kế (ví dụ:
Những thay đổi quan trọng 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. 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. - 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 chậm lên tần số hoạt động đầy đủ GPU dòng NVIDIA GTX 10xx trở lê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: opennet.ru