John the Ripper 1.9.0-jumbo-1 พร้อมรองรับ FPGA

ปล่อยแล้ว เวอร์ชันใหม่ของโปรแกรมเดารหัสผ่านที่เก่าแก่ที่สุดที่รองรับ John the Ripper 1.9.0-jumbo-1 (โครงการมีการพัฒนามาตั้งแต่ปี พ.ศ. 1996) เมื่อวันที่ หน้าโครงการ มีแหล่งข้อมูลให้ดาวน์โหลดรวมถึงชุดประกอบสำเร็จรูปสำหรับ Windows

เป็นที่สังเกตว่าเวลาผ่านไป 1.8.0 ปีแล้วนับตั้งแต่การเปิดตัวเวอร์ชัน 1-jumbo-4.5 ซึ่งในระหว่างนั้นมีการเปลี่ยนแปลงมากกว่า 6000 รายการ (คอมมิตคอมไพล์) จากนักพัฒนามากกว่า 80 คน ในช่วงนี้ผู้พัฒนาแนะนำให้ใช้ ฉบับปัจจุบันจาก GitHubซึ่งสถานะนั้นยังคงมีเสถียรภาพแม้ว่าจะมีการเปลี่ยนแปลงเกิดขึ้นก็ตาม การบูรณาการอย่างต่อเนื่องซึ่งรวมถึงการตรวจสอบเบื้องต้นของการเปลี่ยนแปลงแต่ละครั้ง (คำขอดึง) บนหลายแพลตฟอร์ม คุณสมบัติพิเศษของเวอร์ชันใหม่คือการรองรับ FPGA (FPGA) นอกเหนือจาก CPU, GPU และ Xeon Phi


สำหรับบอร์ด ZTEX 1.15yรวมถึงชิป FPGA 4 ตัวและแต่เดิมใช้สำหรับการขุด Bitcoin เป็นหลัก ตอนนี้มีการใช้แฮชรหัสผ่าน 7 ประเภท: bcrypt, descrypt แบบคลาสสิก (รวมถึง bigcrypt), sha512crypt, sha256crypt, md5crypt (รวมถึง Apache apr1 และ AIX smd5), Drupal7 และ phpass (ใช้แล้ว โดยเฉพาะใน WordPress) บางส่วนมีการใช้งานบน FPGA เป็นครั้งแรก สำหรับ bcrypt ประสิทธิภาพที่ได้รับที่ ~119k c/s ด้วยการวนซ้ำ 2^5 ครั้ง (“$2b$05”) พร้อมการใช้พลังงานประมาณ 27 วัตต์ เหนือกว่าผลลัพธ์ของ GPU รุ่นล่าสุดต่อบอร์ดอย่างมาก ต่อราคาฮาร์ดแวร์และต่อวัตต์ ยังรองรับ กลุ่ม ของบอร์ดประเภทนี้ซึ่งได้รับการทดสอบถึง 16 บอร์ด (64 FPGA) ที่ควบคุมจาก Raspberry Pi 2 ตัวเดียว รองรับฟังก์ชันการทำงานของ John the Ripper ตามปกติ รวมถึงโหมดการเดารหัสผ่านทั้งหมดและการดาวน์โหลดแฮชจำนวนมากพร้อมกัน เพื่อเร่งการทำงาน เราได้นำการใช้มาสก์มาใช้ (โหมด "--มาสก์" รวมถึงการใช้ร่วมกับโหมดอื่นๆ) และการเปรียบเทียบแฮชที่คำนวณได้กับแฮชที่โหลดทางฝั่ง FPGA จากมุมมองของการนำไปปฏิบัติ การออกแบบหลายๆ แบบ (เช่น sha512crypt และ Drupal7) บล็อกที่ประกอบด้วยแกนประมวลผลแบบมัลติเธรด (แกน CPU แบบอ่อน) ที่โต้ตอบกับแกนเข้ารหัสถูกนำมาใช้ การพัฒนาฟังก์ชันนี้นำโดย Denis Burykin โดยประสานงานกับนักพัฒนาขนาดจัมโบ้คนอื่นๆ

การเปลี่ยนแปลงที่สำคัญอื่นๆ:

  • รองรับแฮช, ไซเฟอร์ และอื่นๆ อีกมากมายหลายประเภท รวมถึงแฮชรหัสผ่านแบบคลาสสิก (เช่น จาก QNX เวอร์ชันใหม่) รวมถึงกระเป๋าเงินดิจิทัล ไฟล์เก็บถาวรที่เข้ารหัส และระบบไฟล์ที่เข้ารหัส (เช่น Bitlocker และ FreeBSD geli) รวมถึงการรองรับรูปแบบประเภทใหม่ที่รองรับก่อนหน้านี้ (เช่น เพิ่มการรองรับ bcrypt-pbkdf สำหรับ OpenBSD softraid) และอีกมากมาย โดยรวมแล้ว มีการเพิ่มรูปแบบ 80 รูปแบบบน CPU และ 47 รูปแบบบน OpenCL (และรูปแบบเก่าจำนวนเล็กน้อยได้ถูกลบออกเนื่องจากรวมเข้ากับรูปแบบใหม่และล้าสมัย) จำนวนรูปแบบทั้งหมดในขณะนี้คือ 407 บน CPU (หรือ 262 ไม่รวมรูปแบบ "ไดนามิก" ที่กำหนดค่าจากไฟล์กำหนดค่า) และ 88 รูปแบบบน OpenCL
  • ปฏิเสธที่จะสนับสนุนภาษา CUDA แทน OpenCL ซึ่งไม่มีทางรบกวนการใช้งาน NVIDIA GPU เต็มรูปแบบ (และยังช่วยได้ด้วยการมุ่งเน้นการพัฒนาและการเพิ่มประสิทธิภาพในการใช้งานแต่ละรูปแบบสำหรับ GPU แทนที่จะเป็นการใช้งานสองครั้งก่อนหน้านี้)
  • รองรับชุดคำสั่ง SIMD ใหม่ - AVX2, AVX-512 (รวมถึง Xeon Phi รุ่นที่สอง) และ MIC (สำหรับรุ่นแรก) - รวมถึงการใช้งาน SIMD ที่เป็นสากลและสมบูรณ์มากขึ้นในการใช้งานหลายรูปแบบ รวมถึงการใช้ คำสั่งที่รองรับก่อนหน้านี้ตั้งค่าเป็น AVX และ XOP บน x86(-64) และ
    NEON, ASIMD และ AltiVec บน ARM, Aarch64 และ POWER ตามลำดับ (ส่วนหนึ่งเป็นส่วนหนึ่งของ GSoC 2015)
  • การเพิ่มประสิทธิภาพมากมายสำหรับ CPU และ OpenCL เพื่อให้ทำงานได้อย่างมีประสิทธิภาพมากขึ้นกับแฮชจำนวนมากพร้อมกัน (เช่น มีการทดสอบการโหลดแฮช SHA-320 จำนวน 1 ล้านครั้งบน GPU) และเพื่อเพิ่มความเร็วในการคำนวณแฮช การเพิ่มประสิทธิภาพบางส่วนเป็นแบบสากล บางส่วนครอบคลุมรูปแบบย่อยที่แตกต่างกัน และหลายรายการเป็นแบบเฉพาะสำหรับแต่ละรูปแบบ
  • (อัตโนมัติ-)การกำหนดค่าการบัฟเฟอร์ที่เหมาะสมที่สุดของรหัสผ่านที่ตรวจสอบบน CPU (“—tune=auto —verbosity=5”) และขนาดงานที่เหมาะสมที่สุดบน OpenCL (เปิดใช้งานโดยค่าเริ่มต้น) รวมถึงการคำนึงถึงการเพิ่มขึ้นช้าของ NVIDIA GTX GPU ซีรีส์ที่มีความถี่การทำงานเต็ม 10xx และใหม่กว่า การใช้แฮชที่โหลดจริงและความยาวจริงของรหัสผ่านที่กำลังตรวจสอบ (เมื่อทราบล่วงหน้า) สำหรับการปรับอัตโนมัติดังกล่าว
  • การเพิ่มคอมไพเลอร์สำหรับ "นิพจน์ไดนามิก" ที่ระบุโดยตรงบนบรรทัดคำสั่ง และการใช้ประเภทแฮชไฮบริดใหม่ เช่น "-format=dynamic='sha1(md5($p).$s)'" ซึ่งคำนวณบน CPU โดยใช้ SIMD . ในฐานะที่เป็นส่วนประกอบของนิพจน์ดังกล่าว มีการรองรับแฮชด่วนหลายสิบรายการ (ตั้งแต่แฮชทั่วไปเช่น MD5 ไปจนถึงแฮชที่แปลกใหม่ในระดับปานกลางเช่น Whirlpool) การต่อสตริงย่อย การเข้ารหัสและการถอดรหัส การแปลงตัวพิมพ์อักขระ การอ้างอิงรหัสผ่าน เกลือ ชื่อผู้ใช้ และค่าคงที่สตริง
  • การกำจัดความแตกต่างที่ไม่พึงประสงค์จาก hashcat รวมถึงการสนับสนุนกฎเฉพาะของ hashcat ก่อนหน้านี้ (คำสั่งกฎรายการคำ) การเปลี่ยนไปใช้การกำหนดหมายเลขอุปกรณ์ OpenCL จาก 1 การใช้ค่าเริ่มต้นของรหัสผ่านที่มีความยาวเท่ากัน (ปกติคือ 7) สำหรับการทดสอบประสิทธิภาพ
  • โหมดใหม่สำหรับการสร้างรหัสผ่านที่ตรวจสอบได้ (โหมดแคร็ก) รวมถึง PRINCE จาก hashcat (สร้าง "วลี" โดยการรวมคำหลายคำตามลำดับความยาวที่เพิ่มขึ้น) ชุดย่อย (แสดงรหัสผ่านที่มีจำนวนอักขระต่างกันไม่เพียงพอ แม้ว่าอักขระเหล่านี้จะมาก็ตาม จากชุดที่เป็นไปได้จำนวนมาก) และไฮบริดภายนอก (อนุญาตโหมดภายนอกตามที่อธิบายไว้ในไฟล์การกำหนดค่าในภาษา C-like เพื่อสร้างรหัสผ่านที่ตรวจสอบได้จำนวนมากโดยอิงตาม "คำ" พื้นฐานแต่ละอันที่ได้รับจากโหมดอื่น) นอกจากนี้ยังมีโหมดภายนอกที่กำหนดไว้ล่วงหน้าใหม่หลายโหมด
  • คุณสมบัติเพิ่มเติมสำหรับการใช้หลายโหมดพร้อมกัน (โหมดหนึ่งอยู่ด้านบนของโหมดอื่น - การซ้อน) รวมถึงการใช้ชุดกฎ (การซ้อนกฎรายการคำศัพท์)
  • การปรับปรุงโหมดมาส์ก (การยืดมาส์กอย่างค่อยเป็นค่อยไปในช่วงความยาวที่ระบุ การใช้มาส์กที่ด้านข้างของอุปกรณ์ OpenCL หรือบอร์ด FPGA) และแคร็กเดี่ยว (พฤติกรรมที่เหมาะสมบนอุปกรณ์ที่คำนวณแฮชจำนวนมากในแบบคู่ขนาน ซึ่งก่อนหน้านี้มีรหัสผ่านที่ตรวจสอบได้ไม่เพียงพอในโหมดนี้ และยังมีข้อจำกัดในการใช้หน่วยความจำด้วย)
  • การปรับปรุงมากมายเพื่อรองรับ Unicode และการเข้ารหัสอื่น ๆ ในระบบย่อยที่แตกต่างกัน
  • การปรับปรุงมากมายสำหรับโปรแกรม *2john (ซึ่งแปลงไฟล์ในรูปแบบที่แตกต่างกันสำหรับ
    ใช้กับ john) โดยเฉพาะ wpapcap2john (จัดการการรับส่งข้อมูล WiFi)
  • มีตัวเลือกบรรทัดคำสั่งใหม่มากมาย การตั้งค่าใน john.conf กำหนดค่าตัวเลือกสคริปต์ และคุณสมบัติใหม่ที่เกี่ยวข้อง ซึ่งไม่ได้กล่าวถึงทั้งหมดที่นี่
  • การปรับปรุงคุณภาพของโค้ดด้วยการสนับสนุนในตัวสำหรับการสร้างการแก้ไขข้อบกพร่องด้วย AddressSanitizer (ก่อนหน้านี้) และ UndefiorSanitizer (เพิ่ม) โดยเพิ่ม fuzzer รูปแบบในตัว (เป็นส่วนหนึ่งของ GSoC 2015) โดยใช้การผสานรวมอย่างต่อเนื่อง (สร้างสำหรับระบบปฏิบัติการและคอมไพเลอร์หลายสิบตัว ผสมผสานและทดสอบการสนับสนุนที่ถูกต้องสำหรับทุกรูปแบบ)

ที่มา: linux.org.ru

เพิ่มความคิดเห็น