ในที่ทำงานเรามีสองทฤษฎีที่แข่งขันกันสำหรับเกลือ ผลิตภัณฑ์ที่ฉันทำงานใช้บางอย่างเช่นชื่อผู้ใช้หรือหมายเลขโทรศัพท์เพื่อเพิ่มแฮช โดยพื้นฐานแล้วสิ่งที่แตกต่างกันสำหรับผู้ใช้แต่ละคน แต่พร้อมสำหรับเรา ผลิตภัณฑ์อื่น ๆ จะสุ่มสร้างเกลือสำหรับผู้ใช้แต่ละรายและจะเปลี่ยนแปลงทุกครั้งที่ผู้ใช้เปลี่ยนรหัสผ่าน จากนั้นเกลือจะถูกเข้ารหัสในฐานข้อมูล
คำถามของฉันคือแนวทางที่สองจำเป็นจริงหรือ? ฉันเข้าใจได้จากมุมมองทางทฤษฎีล้วนๆว่าปลอดภัยกว่าแนวทางแรก แต่จากมุมมองการปฏิบัติจริง ในขณะนี้ในการพิสูจน์ตัวตนผู้ใช้ต้องไม่เข้ารหัสเกลือและนำไปใช้กับข้อมูลการเข้าสู่ระบบ
หลังจากคิดแล้วฉันก็ไม่เห็นประโยชน์ด้านความปลอดภัยที่แท้จริงจากแนวทางนี้ การเปลี่ยน Salt จากบัญชีเป็นบัญชียังคงทำให้บางคนพยายามบังคับใช้อัลกอริธึมการแฮชแบบเดรัจฉานแม้ว่าผู้โจมตีจะทราบวิธีการตรวจสอบอย่างรวดเร็วว่ามันคืออะไรสำหรับแต่ละบัญชีก็ตาม สิ่งนี้เกิดขึ้นโดยสันนิษฐานว่ารหัสผ่านมีความแข็งแกร่งเพียงพอ (เห็นได้ชัดว่าการค้นหาแฮชที่ถูกต้องสำหรับชุดรหัสผ่านที่เป็นตัวเลขสองหลักนั้นง่ายกว่าการค้นหาแฮชรหัสผ่านที่ถูกต้องซึ่งเป็นตัวเลข 8 หลัก) ตรรกะของฉันไม่ถูกต้องหรือมีบางอย่างที่ฉันขาดหายไป?
แก้ไข:โอเคนี่คือเหตุผลที่ฉันคิดว่ามันเป็นเรื่องยากที่จะเข้ารหัสเกลือ (รู้ว่าฉันมาถูกทางหรือเปล่า)
สำหรับคำอธิบายต่อไปนี้เราจะถือว่ารหัสผ่านเป็น 8 ตัวอักษรเสมอและเกลือคือ 5 และรหัสผ่านทั้งหมดประกอบด้วยตัวอักษรพิมพ์เล็ก (มันทำให้การคำนวณง่ายขึ้น)
การมีเกลือที่แตกต่างกันสำหรับแต่ละรายการหมายความว่าฉันไม่สามารถใช้ตารางสายรุ้งเดียวกันได้ (จริงๆแล้วในทางเทคนิคฉันทำได้ถ้าฉันมีขนาดที่เพียงพอ แต่ขอเพิกเฉยต่อสิ่งนั้นในขณะนี้) นี่คือกุญแจสำคัญที่แท้จริงของเกลือจากสิ่งที่ฉันเข้าใจเพราะในการแตกทุกบัญชีฉันต้องสร้างวงล้อขึ้นมาใหม่เพื่อที่จะพูดถึงแต่ละบัญชี ตอนนี้ถ้าฉันรู้วิธีใช้เกลือที่ถูกต้องกับรหัสผ่านเพื่อสร้างแฮชฉันจะทำเพราะเกลือนั้นขยายความยาว / ความซับซ้อนของวลีที่แฮช ดังนั้นฉันจะตัดจำนวนชุดค่าผสมที่เป็นไปได้ที่ฉันต้องสร้างเพื่อ "รู้" ฉันมีรหัสผ่าน + เกลือจาก 13 ^ 26 เป็น 8 ^ 26 เพราะฉันรู้ว่าเกลือคืออะไร ตอนนี้ทำให้ง่ายขึ้น แต่ก็ยังยากจริงๆ
ดังนั้นในการเข้ารหัสเกลือ ถ้าฉันรู้ว่าเกลือถูกเข้ารหัสฉันจะไม่ลองถอดรหัส (สมมติว่าฉันรู้ว่ามีการเข้ารหัสในระดับที่เพียงพอ) ก่อน ฉันจะไม่สนใจมัน แทนที่จะพยายามหาวิธีถอดรหัสกลับไปที่ตัวอย่างก่อนหน้านี้ฉันจะสร้างตารางสีรุ้งขนาดใหญ่ที่มีคีย์ทั้งหมดสำหรับ 13 ^ 26 การไม่รู้ว่าเกลือจะทำให้ฉันช้าลงอย่างแน่นอน แต่ฉันไม่คิดว่ามันจะเพิ่มภารกิจอันยิ่งใหญ่ในการพยายามถอดรหัสการเข้ารหัสเกลือก่อน นั่นเป็นเหตุผลที่ฉันไม่คิดว่ามันคุ้มค่า ความคิด?
นี่คือลิงค์ที่อธิบายว่ารหัสผ่านจะคงอยู่ได้นานแค่ไหนภายใต้การโจมตีแบบดุร้าย: http://www.lockdown.co.uk/?pg=combi