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

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

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

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

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

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

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

 ดูเพิ่ม 
การโจมตีด้วยกำลัง
การเจาะรหัสผ่าน
ความแข็งแกร่งของรหัสผ่าน
ฟังก์ชันแปลงให้เป็นกุญแจ (KDF)
Key stretching

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

 แหล่งข้อมูลอื่น 
 - Internet Security Glossary
 - Internet Security Glossary, Version 2
US Secret Service use a distributed dictionary attack on suspect's password protecting encryption keys
Testing for Brute Force (OWASP-AT-004)

หมวดหมู่:การโจมตีทางวิทยาการเข้ารหัสลับ
หมวดหมู่:รหัสลับ
หมวดหมู่:การจัดการรหัสลับ