ข้ามไปเนื้อหา

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

จากวิกิพีเดีย สารานุกรมเสรี

ในเรื่องการวิเคราะห์รหัสลับและความมั่นคงคอมพิวเตอร์ การโจมตีด้วยคำจากพจนานุกรม (อังกฤษ: dictionary attack) เป็นการค้นหารหัสผ่านโดยใช้รายการอันเป็นเซตย่อยของรหัสผ่านที่เป็นไปได้ทั้งหมด เพื่อแฮ็กการเข้ารหัสลับหรือวิธีการพิสูจน์ตัวจริงของระบบ โดยบางครั้งต้องลองรหัสผ่านที่สืบเนื่องจากรายการเป็นพัน ๆ หรือเป็นล้าน ๆ ตัว[1] รายการรหัสผ่านหรือที่เรียกว่าพจนานุกรม มักจะได้จากการแฮ็กระบบต่าง ๆ ในอดีต

เทคนิค[แก้]

การโจมตีนี้ใช้วิธีทดลองรหัสผ่านทั้งหมดจากรายการที่เตรียมไว้ก่อน ดั้งเดิมมักใช้คำจากพจนานุกรม (ดังนั้น จึงได้ชื่อว่า การโจมตีด้วยพจนานุกรม)[2] แต่ปัจจุบันมักใช้รายการที่ใหญ่ยิ่งกว่านั้นมากจากอินเทอร์เน็ตโดยมีรหัสผ่านเป็นร้อย ๆ ล้านที่ได้จากการแฮ็กระบบต่าง ๆ ในอดีต (เช่น รายการของ crackstation.net มีเกือบ 1.5 พันล้านรหัส[3]) มีโปรแกรมเจาะรหัสผ่านที่ใช้รายการเช่นนี้แล้วสร้างรหัสผ่านแปรรูปในรูปแบบที่ทำกันอย่างสามัญ เช่น การแทนอักษรด้วยตัวเลขที่มีรูปร่างคล้าย ๆ กัน โดยจะทดลองรูปแบบที่น่าจะมีโอกาสใช้มากที่สุดเท่านั้น

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

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

Rainbow table[แก้]

ในการเจาะรหัสผ่าน อาจแลกเปลี่ยนเวลากับพื้นที่โดยคำนวณค่าแฮชของคำในพจนานุกรมไว้ล่วงหน้า แล้วเก็บไว้ในฐานข้อมูลโดยใช้ค่าแฮชเป็นกุญแจ (unique key) แม้จะใช้เวลาเตรียมตัวมากล่วงหน้าแต่ก็จะทำให้สามารถเจาะเอารหัสผ่านได้เร็วขึ้น ค่าใช้จ่ายสำหรับตัวเก็บข้อมูลก่อนหน้านี้เคยเป็นปัญหาแต่ปัจจุบันเป็นน้อยลงเพราะมีราคาถูก วิธีนี้ได้ผลเป็นพิเศษเมื่อมีรหัสผ่านเป็นจำนวนมากที่ต้องการเจาะ ค่าคำนวณจะต้องสร้างเพียงครั้งเดียวและเมื่อเสร็จแล้ว ก็จะสามารถใช้ค่าแฮชที่ขโมยมาเพื่อดูรหัสผ่านได้ทันที มีวิธีเพิ่มประสิทธิภาพให้มากขึ้นคือการใช้ rainbow table ซึ่งลดเนื้อที่แต่จะทำให้การสืบดูรหัสผ่านจากค่าแฮชใช้เวลามากกว่าเล็กน้อย

การโจมตีโดย rainbow table เช่นนี้ สามารถป้องกันได้โดยการใช้ค่าซอลต์ (salt) ซึ่งเป็นค่าสุ่มที่รวมเข้ากับรหัสผ่านเพื่อคำนวณค่าแฮช ถ้าค่าซอลต์มีขนาดใหญ่พอ เช่น มีขนาด 32 บิต ก็จะทำให้คำนวณค่าแฮชทั้งหมดล่วงหน้าไม่ได้[4]

ดูเพิ่ม[แก้]

เชิงอรรถและอ้างอิง[แก้]

  1. Junghyun Nam; Juryon Paik; Hyun-kyu Kang; Ung Kim; Dongho Won (2009-03-01). "An off-line dictionary attack on a simple three-party key exchange protocol". IEEE Communications Letters. 13 (3): 205–207. doi:10.1109/LCOMM.2009.081609. ISSN 1089-7798.
  2. Atwood, Jeff (2009-01-07). "Dictionary Attacks 101". Coding Horror. เก็บจากแหล่งเดิมเมื่อ 2024-04-06. สืบค้นเมื่อ 2024-06-20.
  3. "CrackStation's Password Cracking Dictionary (Pay what you want!)". CrackStation. 2019-05-26. สืบค้นเมื่อ 2024-06-20.
  4. "CAPEC - CAPEC-55: Rainbow Table Password Cracking (Version 3.5)". capec.mitre.org. สืบค้นเมื่อ 2021-09-12.

แหล่งข้อมูลอื่น[แก้]

เก็บถาวร 2020-01-14 ที่ เวย์แบ็กแมชชีน