• แคร็กรหัสผ่าน
  • การโจมตีด้วยตารางรุ้ง
  • การแฮช

วิธีที่รหัสผ่านของคุณถูกแฮ็กได้อย่างไร? วิธีปรับปรุงความปลอดภัยของรหัสผ่าน?

ในบทความนี้ เราได้นำเสนอวิธีการคลาสสิกหลายวิธีสำหรับทำการแฮ็กรหัสผ่าน พร้อมด้วยหลักการพื้นฐานที่อยู่เบื้องหลังวิธีการเหล่านี้ ในการที่จะแก้ไขแนวคิดเหล่านี้ เราได้ให้ข้อปฏิบัติจากทั้งมุมมองของผู้มีหน้าที่รักษารหัสผ่านและเจ้าของบัญชีเพื่อปรับปรุงความปลอดภัยของรหัสผ่าน.

Darcy Ye
Darcy Ye
Developer

เรามักจะเห็นข่าวว่ารหัสผ่านของผู้ใช้ของแอปที่มีผู้ใช้งานมากมายบางแอปรั่วไหลออกไป คุณอาจรู้สึกว่าเพราะว่าคุณไม่ได้ใช้แอปนั้น เหตุการณ์เหล่านี้ไม่มีผลกับคุณ แต่ความจริงแล้วมันไม่ใช้อย่างนั้น

เมื่อไม่นานมานี้ มีข่าวใน Twitter ว่าวิธี AI สามารถเร่งความเร็วในการแคร็กรหัสผ่านได้อย่างมาก ดังนั้นเราต้องการเข้าใจความซับซ้อนที่อยู่เบื้องหลังและดูว่าเราสามารถปรับปรุงความปลอดภัยของรหัสผ่านของเราได้อย่างไร

PassGAN Twitter

รหัสผ่านถูกแฮ็กได้อย่างไร?

โดยทั่วไป รหัสผ่านบัญชีจะถูกประมวลผลโดยใช้อัลกอริทึมการแฮชหลายแบบ และจากนั้นเก็บไว้ในฐานข้อมูล คุณสามารถดู บทความบล็อกก่อนหน้าของเรา เพื่อทำความเข้าใจเกี่ยวกับการแฮชรหัสผ่านได้ดีขึ้น น่าเสียดายที่มีผู้ให้บริการบางราย ที่ขาดสำนึกทั่วไป เก็บรหัสผ่านไว้ในรูปแบบข้อความธรรมดาในฐานข้อมูลของพวกเขา การฝึกปฏิบัตินี้อาจทำให้เกิดความเสียหายที่ใหญ่กว่าได้ถ้าข้อมูลรั่วไหล.

การบันทึกรหัสผ่านในรูปแบบแฮช แม้ว่าเป็นผู้ดูแลระบบฐานข้อมูลก็ไม่สามารถเข้าถึงรหัสผ่านต้นฉบับของคุณได้ ซึ่งช่วยเพิ่มความปลอดภัยอย่างมาก เมื่อยืนยันความถูกต้องของรหัสผ่านที่ป้อนเข้า ระบบจะใช้อัลกอริทึมแฮชเดียวกันเพื่อประมวลผลรหัสผ่านที่ป้อนเข้า แล้วเปรียบเทียบแฮชที่ได้กับค่าที่เก็บไว้ในฐานข้อมูล ถ้าค่าสองค่าตรงกัน รหัสผ่านที่ป้อนเข้าถือว่าถูกต้อง.

ในแง่ที่ง่าย การแฮ็กรหัสผ่านเกี่ยวข้องกับการสร้างสตริงที่สอดคล้องกับกฎของรหัสผ่านที่อนุญาต จากนั้นจะตรวจสอบสตริงเหล่านี้ต่อไปโดยใช้วิธีการที่กล่าวถึงข้างต้นจนกระทั่งค้นพบรหัสผ่านข้อความธรรมดาที่ถูกต้อง.

วิธีการทั่วไปสำหรับแคร็กรหัสผ่าน

ในส่วนนี้ เราจะแนะนำสามวิธีทั่วไปสั้น ๆ เกี่ยวกับวิธีการแคร็กรหัสผ่าน.

การโจมตีแบบเดา

การโจมตีแบบเดาโดยทั่วไปจะระบุตัวเลือกทั้งหมดในกฎของรหัสผ่านที่อนุญาตและทดลองทีละตัว.

ยกตัวอย่างเช่น โทรศัพท์มือถือสามารถตั้งรหัสผ่านตัวเลข 4 หลักได้ การโจมตีแบบเดาจะทดลองตัวเลือกทั้งหมดทีละตัวจาก 0000, 0001, 0002, ..., เรื่อย ๆ จนถึง 9999.

การโจมตีแบบเดาใช้เวลามาก เพราะมีการพยายามมากเกินไป สมมติว่าความยาวของรหัสผ่านคือ $L$ และจำนวนตัวอักษรที่เป็นไปได้ในแต่ละหลักของรหัสผ่านคือน $n$ ดังนั้น จำนวนตัวเลือกที่การโจมตีแบบเดาต้องลองคือ $n^L$ ซึ่งเป็นจำนวนที่มาก.

เหตุผลที่หลายรหัสผ่านต้องการการผสมตัวเลข ตัวอักษรตัวพิมพ์ใหญ่และเล็ก และสัญลักษณ์พิเศษ ก็เพื่อเพิ่ม $n$ ซึ่งจะเพิ่มจำนวนตัวเลือกอย่างมาก ทำให้รหัสผ่านยากที่จะแคร็ก.

การโจมตีด้วยพจนานุกรม

การโจมตีด้วยพจนานุกรมใช้คำจากพจนานุกรม บ่อยครั้งรวมกับช่องว่าง ตัวเลข สัญลักษณ์พิเศษ และองค์ประกอบอื่น เพื่อสร้างชุดรหัสผ่านต่างๆ ชุดเหล่านี้จะถูกนำมาใช้ในการพยายามจับคู่รหัสผ่าน.

หลายคนเลือกใช้ประโยคที่มีความหมายชัดเจนเป็นรหัสผ่านเพื่อให้ง่ายต่อการจดจำ การโจมตีด้วยพจนานุกรมเป็นวิธีการที่มีประสิทธิภาพสำหรับการแคร็กรหัสผ่านที่มีลักษณะอย่างนี้.

การโจมตีด้วยตารางรุ้ง

ตารางรุ้งคือการแมปที่คำนวณไว้ล่วงหน้าของรหัสผ่านข้อความธรรมดากับค่าการแฮชที่สอดคล้องกัน โดยตรงเพื่อนำไปเปรียบเทียบกับค่าการแฮชที่เก็บไว้ในฐานข้อมูล หากพบการจับคู่ใด ๆ ก็สามารถใช้ดูข้อมูลและรับรหัสผ่านข้อความธรรมดาที่สอดคล้องกันได้ทันที.

ตารางรุ้งมีข้อดีที่สามารถเข้าถึงรหัสผ่านข้อความธรรมดาได้ทันทีหากค่าการแฮชมีการคำนวณล่วงหน้า (และบันทึกในตารางรุ้ง) อย่างไรก็ตาม โปรดทราบว่าหากค่าการแฮชไม่ได้ถูกคำนวณล่วงหน้า (และจึงไม่มีในตาราง) ตารางรุ้งไม่สามารถใช้ได้.

นอกเหนือจากวิธีการที่อธิบายแล้ว ยังมีเทคนิคอื่น ๆ อีกมากมายที่ไม่ได้กำหนดไว้ที่นี่ โดยทั่วไปจะมีการใช้วิธีการเหล่านี้ร่วมกันเพื่อล้อมรอบรหัสผ่านต่าง ๆ และเร่งกระบวนการแคร็ก.

วิธีการเร่งการแคร็กรหัสผ่าน?

ในส่วนก่อนหน้า เราได้แนะนำสั้น ๆ เกี่ยวกับวิธีการแคร็กรหัสผ่านแบบคลาสสิกบางอย่าง จากนั้นเราสามารถสรุปบางแนวคิดเพื่อปรับปรุงความเร็วหรืออัตราความสำเร็จในการแคร็กรหัสผ่านได้.

การแคร็กรหัสผ่านมักจะเกี่ยวข้องกับสองขั้นตอน:

  1. กำหนดพื้นที่ค้นหารหัสผ่าน (สร้างรหัสผ่านที่เป็นไปได้)
  2. ใช้อัลกอริทึมแฮชเพื่อสร้างแฮชสำหรับรหัสผ่านที่เป็นไปได้ซึ่งได้จากขั้นตอนก่อนหน้า และเปรียบเทียบกับแฮชของรหัสผ่านที่ต้องการแคร็ก

การโจมตีด้วยพจนานุกรมและตารางรุ้งที่กล่าวข้างต้นจะปรับปรุงทั้งสองขั้นตอนเหล่านี้ตามลำดับ:

  • การโจมตีด้วยพจนานุกรมช่วยลดพื้นที่ค้นหารหัสผ่าน การสร้างสมมติฐานที่ว่า "ผู้ใช้มีแนวโน้มที่จะสร้างรหัสผ่านโดยใช้คำผสมที่มีความหมายจริง" คำเช่น zzzz ไม่รวมอยู่ในพจนานุกรม ซึ่งหมายความว่าพวกเขาจะไม่ถูกลองใช้เป็นรหัสผ่านที่เป็นไปได้ การฝึกปฏิบัตินี้เปรียบเสมือนการตัดคำตอบที่ไม่ถูกต้องล่วงหน้า เปรียบเทียบกับการจัดการกับคำถามแบบหลายตัวเลือก ในขณะที่คุณอาจไม่แน่ใจเกี่ยวกับตัวเลือกที่ถูกต้อง คุณสามารถระบุได้ว่าโอกาสที่ไม่ถูกต้องคืออะไร เมื่อกำจัดตัวเลือกที่ชัดเจนอย่างผิดออก ความสามารถของคุณในการเดาตอบอย่างถูกต้องในตัวเลือกที่เหลือจะเพิ่มขึ้น.
  • การโจมตีด้วยตารางรุ้งช่วยเร่งเวลาการดำเนินการของอัลกอริทึมแฮช สำหรับผู้ที่เข้าใจโครงสร้างข้อมูลดี การค้นหาเป็นการดำเนินการที่มีความซับซ้อนเชิงเวลาแบบ $O(1)$ และไม่มีการดำเนินการใด ๆ ที่ง่ายกว่า $O(1)$ ในแง่ของความซับซ้อนเชิงเวลา ในทางตรงกันข้ามความซับซ้อนเชิงเวลาของอัลกอริทึมแฮชที่ใช้ทั่วไปเช่น MD5 และ SHA คือ $O(n)$ ซึ่งช้ากว่า $O(1)$ มาก.

ในการปฏิบัติ การปรับปรุงกระบวนการแคร็กรหัสผ่านยังเริ่มจากสองมุมมองข้างต้น ควรกล่าวถึงว่าเนื่องจากพื้นที่การปรับปรุงใน $O(n)$ ความซับซ้อนเชิงเวลาของอัลกอริทึมการแฮชสตริงมีค่อนข้างน้อย การพิจารณามากกว่านั้นจึงมาจากการปรับปรุงฮาร์ดแวร์หรือวิธีการคำนวณซึ่งจะไม่ถูกบรรยายในที่นี้.

แล้ว AI ช่วยในการแคร็กรหัสผ่านอย่างไร?

ในการพยายามแคร็กรหัสผ่านทั้งหมด บทบาทของ AI ขยายเพื่อเรียนรู้รูปแบบและวิธีการก่อสร้างบางอย่างจากรหัสผ่านข้อความธรรมดาที่ได้รับการเปิดเผย ขึ้นหลังจากนั้น AI สามารถจำลองรูปแบบการสร้างรหัสผ่านเหล่านี้เพื่อสร้างรหัสผ่านที่เป็นไปได้จำนวนมาก ต่อจากนั้น AI สามารถใช้อัลกอริทึมแฮชหรือแม้แต่ฮาร์ดแวร์เฉพาะเพื่อดำเนินการแคร็กรหัสผ่าน.

ในความเป็นจริง เมื่อเปรียบเทียบกับเครื่องมือแคร็กรหัสผ่านอื่น ๆ PassGAN มีข้อได้เปรียบที่เข้มข้นที่สุดในการสามารถ "คาดเดารหัสผ่านที่เป็นไปได้ที่มากที่สุดได้อย่างรวดเร็วที่สุด" ซึ่งเป็นแนวคิด "ลดพื้นที่ค้นหารหัสผ่านที่เป็นไปได้" ที่เราได้กล่าวถึงข้างต้น.

Password Guessing Prob

วิธีทำให้รหัสผ่านปลอดภัยขึ้น?

เราจะอธิบายวิธีการป้องกันรหัสผ่านจากสองมุมมอง ในที่นี้เราจะเริ่มต้นจากตัวรหัสผ่านเอง โดยไม่กล่าวถึงวิธีการอื่นเพื่อความปลอดภัยของบัญชี เช่น การยืนยันตัวตนหลากหลายปัจจัย (MFA) เป็นต้น.

จากฝั่งผู้ให้บริการบริการระบุตัวตน

ในฐานะผู้ให้บริการบริการระบุตัวตน พวกเขาเป็นเจ้าของทุกรหัสผ่านของผู้ใช้ ซึ่งทำให้พวกเขามีความรับผิดชอบในการปกป้องความปลอดภัยของรหัสผ่านเหล่านี้ นี่คือหลายแผนการที่สามารถดำเนินการเพื่อปรับปรุงความปลอดภัยของรหัสผ่านของผู้ใช้:

  1. หลีกเลี่ยงการเก็บรหัสผ่านในรูปแบบข้อความธรรมดา: ถึงแม้ว่าอาจจะดูเหมือนเป็นสำนึกทั่วไปรายบริการบางรายยังคงเก็บรหัสผ่านในรูปแบบข้อความธรรมดาภายในฐานข้อมูลของพวกเขา การใช้ค่าการแฮชในการเก็บรหัสผ่านเพิ่มชั้นของความปลอดภัย แม้ฐานข้อมูลถูกโจมตี แฮกเกอร์ก็ต้องใช้ความพยายามอย่างมากในการแคร็กค่าการแฮชของรหัสผ่าน.

  2. ใช้ข้อจำกัดอัตราการร้องขอต่อ API สำหรับการยืนยันรหัสผ่าน: ลองกลับมาตรวจสอบกระบวนการแคร็กรหัสผ่านที่กล่าวถึงก่อนหน้านี้ ส่วนสำคัญของกระบวนการนี้เกี่ยวข้องกับการ "ยืนยัน" ว่ารหัสผ่านถูกต้องหรือไม่ เนื่องจากรหัสผ่านได้รับความไว้วางใจจากผู้ให้บริการบริการระบุตัวตน พวกเขาเป็นหน่วยงานเดียวที่เหมาะสมที่สุดในการให้ API สำหรับการยืนยันรหัสผ่าน การจำกัดความถี่ในการเข้าถึง API นี้ เราสามารถหน่วงแฮกเกอร์จากการพยายามรหัสผ่านต่าง ๆ อย่างรวดเร็วแม้ว่าพวกเขาจะมีการคาดการณ์ที่มีนัยสำคัญ.

  3. ใช้งานการประกอบรหัสผ่านที่ซับซ้อนมากขึ้น: ตัวอย่างเช่นที่กล่าวมาก่อนแล้ว ความหลากหลายของตัวอักษรในรหัสผ่านจะเพิ่มความซับซ้อน นอกจากนี้การใช้เทคนิค AI ที่คล้ายกับที่ได้กล่าวถึงก่อนหน้านี้สามารถช่วยในการประเมินความปลอดภัยของรหัสผ่านก่อนที่จะำิเสนอ หากพิจารณาว่ารหัสผ่านอ่อนกลับไปทางผู้ใช้เลือกทางเลือกที่แข็งแรงขึ้น.

ในมุมมองของผู้ใช้

ในฐานะเจ้าของบัญชีและสินทรัพย์ดิจิตอลที่เกี่ยวข้อง ผู้ใช้จำเป็นต้องให้ความสนใจสูงสุดเพื่อให้มั่นใจว่ามีความปลอดภัยของรหัสผ่านบัญชีของพวกเขา.

  1. หลีกเลี่ยงการใช้รหัสผ่านเดียวกันในเว็บไซต์ต่าง ๆ: หลังได้รหัสผ่านจากบางเว็บไซต์ แฮกเกอร์หลายคนจะพยายามใช้ข้อมูลบัญชีนั้นเพื่อเข้าสู่เว็บไซต์อื่น ๆ ถ้าบัญชีต่าง ๆ สำหรับบริการต่าง ๆ แบ่งปันรหัสผ่านเดียวกัน อาจมีความเสี่ยงในการสูญเสียบัญชีและประสบปัญหาการรั่วไหลของข้อมูลตามที่กล่าวไว้ก่อนหน้า.

  2. เลือกใช้รหัสผ่านแบบสุ่มเท่านั้นเมื่อเป็นไปได้: วิธีนี้ช่วยป้องกันการใช้รูปแบบรหัสผ่านทั่วไปที่คนส่วนใหญ่ใช้ (ดังที่กล่าวข้างต้น ใช้ประโยคภาษาอังกฤษ) โดยจะซับซ้อนความพยายามของแฮกเกอร์ในการ "ลดพื้นที่ค้นหารหัสผ่าน" และเพิ่มระดับความซับซ้อนของรหัสผ่าน.

ในฐานะที่เป็นผู้ให้บริการโครงสร้างพื้นฐานสำหรับบริการระบุตัวตน Logto ได้ดำเนินการปฏิบัติที่ดีที่สุดหลายอย่างที่กล่าวถึงข้างต้นเพื่อปกป้องความปลอดภัยของบัญชีผู้ใช้ สิ่งนี้ทำให้ผู้ใช้สามารถมีส่วนร่วมกับแอปต่าง ๆ โดยไม่ต้องกังวลเกี่ยวกับการสูญเสียบัญชี พร้อมทั้งยังอนุญาตให้ผู้ให้บริการบริการออนไลน์มั่นใจในการรักษาความปลอดภัยข้อมูลผู้ใช้ด้วยความพยายามน้อยที่สุด ช่วยให้พวกเขาสามารถมุ่งมั่นไปที่กิจกรรมธุรกิจแกนของพวกเขา.