ตารางสายรุ้ง: รหัสผ่านที่เลวร้ายที่สุดของคุณ

อย่าปล่อยให้ชื่อน่ารักของพวกเขาหลอกคุณสิ่งเหล่านี้เป็นที่น่ากลัว

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

ห่าเป็นตารางสายรุ้ง? อะไรบางอย่างที่มีชื่อน่ารักและน่ากอดจึงเป็นอันตรายได้อย่างไร?

แนวคิดพื้นฐานเบื้องหลังตารางสายรุ้ง

ฉันเป็นคนเลวที่เพิ่งเสียบไดรฟ์หัวแม่มือลงในเซิร์ฟเวอร์หรือเวิร์กสเตชันรีบูตเครื่องและเรียกใช้โปรแกรมที่คัดลอกไฟล์ฐานข้อมูลความปลอดภัยที่มีชื่อผู้ใช้และรหัสผ่านไปยังไดรฟ์หัวแม่มือของฉัน

รหัสผ่านในไฟล์ถูกเข้ารหัสดังนั้นฉันจึงไม่สามารถอ่านได้ ฉันจะต้องแตกรหัสผ่านในไฟล์ (หรืออย่างน้อยรหัสผ่านของผู้ดูแลระบบ) เพื่อที่ฉันจะสามารถใช้พวกเขาในการเข้าถึงระบบ

ตัวเลือกสำหรับการถอดรหัสรหัสผ่านคืออะไร? ฉันสามารถลองใช้โปรแกรมถอดรหัสรหัสผ่าน แบบเดรัจฉานได้ เช่น John the Ripper ซึ่งเก็บไฟล์รหัสผ่านไว้ห่างกันโดยพยายามจะคาดเดารหัสผ่านที่เป็นไปได้ทุกครั้ง ตัวเลือกที่สองคือโหลดพจนานุกรมการแหย่รหัสผ่านที่มีรหัสผ่านที่ใช้กันทั่วไปนับแสน ๆ และดูว่าได้รับความนิยมหรือไม่ วิธีการเหล่านี้อาจใช้เวลาเป็นสัปดาห์เดือนหรือปีหากรหัสผ่านมีความแข็งแรงพอ

เมื่อรหัสผ่านถูก "พยายาม" กับระบบ "hashed" โดยใช้ การเข้ารหัส เพื่อให้รหัสผ่านที่แท้จริงไม่ถูกส่งไปในข้อความที่ชัดเจนในสายการติดต่อสื่อสาร วิธีนี้จะช่วยป้องกันไม่ให้ผู้แอบอ้างดักจับรหัสผ่าน รหัสผ่านของ hash มักจะมีลักษณะเป็นพวงของขยะและโดยปกติจะมีความยาวแตกต่างจากรหัสผ่านเดิม รหัสผ่านของคุณอาจเป็น "shitzu" แต่รหัสผ่าน hash ของคุณจะมีลักษณะคล้าย "7378347eedbfdd761619451949225ec1"

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

การแฮ็กรหัสผ่านเป็นฟังก์ชันแบบ 1 ทิศทางซึ่งหมายความว่าคุณไม่สามารถถอดรหัสลับแฮชเพื่อดูว่ามีรหัสผ่านที่ชัดเจนของรหัสผ่านอยู่หรือไม่ ไม่มีคีย์เพื่อถอดรหัสลับของ hash เมื่อสร้างขึ้น ไม่มี "แหวนถอดรหัส" ถ้าคุณต้องการ

โปรแกรมการถอดรหัสรหัสผ่านทำงานในลักษณะเดียวกับขั้นตอนการเข้าสู่ระบบ โปรแกรม cracking เริ่มต้นด้วยการใช้รหัสผ่านแบบ plaintext เรียกใช้ผ่านอัลกอริทึมแฮชเช่น MD5 จากนั้นเปรียบเทียบเอาต์พุตแฮชด้วยข้อมูลแฮชในไฟล์รหัสผ่านที่ถูกขโมย ถ้าพบการจับคู่แล้วโปรแกรมจะแตกรหัสผ่าน ดังที่เราได้กล่าวมาก่อนกระบวนการนี้อาจใช้เวลานานมาก

ใส่ตาราง Rainbow

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

การใช้ตาราง Rainbow ช่วยให้รหัสผ่านสามารถแตกหักได้ในระยะเวลาอันสั้นมากเมื่อเทียบกับวิธีการแบบ Brute-force แต่การตัดจำหน่ายคือการใช้พื้นที่เก็บข้อมูล (บางครั้งเทราไบต์) การจัดเก็บวันนี้มีมากมายและราคาถูกดังนั้นการค้าขายนี้จึงไม่ใช่เรื่องใหญ่เช่นเดียวกับทศวรรษที่ผ่านมาเมื่อไดรฟ์เทราไบต์ไม่ใช่สิ่งที่คุณสามารถรับได้ที่ Best Buy ในประเทศ

แฮกเกอร์สามารถซื้อตารางสายรุ้ง precomputed สำหรับการถอดรหัสรหัสผ่านของระบบปฏิบัติการที่มีช่องโหว่เช่น Windows XP, Vista, Windows 7 และแอพพลิเคชันโดยใช้ MD5 และ SHA1 เป็นกลไกการ hashing ของรหัสผ่าน (นักพัฒนาซอฟต์แวร์เว็บจำนวนมากยังคงใช้อัลกอริทึมแฮชชิงเหล่านี้)

วิธีการป้องกันตัวเองจากการโจมตีด้วยรหัสผ่านด้วยตารางลายเส้น

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

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

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

ต่อไปนี้เป็นเคล็ดลับสำหรับนักพัฒนาซอฟต์แวร์ในการป้องกันการโจมตีด้วย Rainbow Table:

  1. อย่าใช้ MD5 หรือ SHA1 ในฟังก์ชันแฮชของรหัสผ่าน MD5 และ SHA1 เป็นอัลกอริทึมการเข้ารหัสข้อมูลรหัสผ่านที่ล้าสมัยและตารางสายรุ้งที่ใช้เพื่อสร้างรหัสผ่านเพื่อสร้างแอพพลิเคชันและระบบเป้าหมายโดยใช้วิธีการแฮชชิงเหล่านี้ พิจารณาใช้วิธีการแฮชที่ทันสมัยมากขึ้นเช่น SHA2
  2. ใช้ "เกลือ" ที่เข้ารหัสลับในขั้นตอนการล้างข้อมูลรหัสผ่านของคุณ การเพิ่มรหัสลับในการเข้ารหัสลับไปยังรหัสผ่านของคุณจะช่วยป้องกันการใช้ตาราง Rainbow ที่ใช้ในการร้าวรหัสผ่านในแอปพลิเคชันของคุณ หากต้องการดูตัวอย่างโค้ดของวิธีใช้เกลือเข้ารหัสเพื่อช่วย "Rainbow-Proof" แอปพลิเคชันของคุณโปรดตรวจสอบเว็บไซต์ WebMasters By Design ซึ่งมีบทความดีๆเกี่ยวกับหัวข้อดังกล่าว

ถ้าคุณต้องการดูว่าแฮกเกอร์ทำการโจมตีด้วยรหัสผ่านโดยใช้ตาราง Rainbow คุณสามารถอ่าน บทความที่ยอดเยี่ยมนี้ เกี่ยวกับวิธีใช้เทคนิคเหล่านี้เพื่อกู้คืนรหัสผ่านของคุณเอง