ฟังก์ชันแฮชที่ดีมีคุณสมบัติดังต่อไปนี้:
เมื่อแฮชของข้อความเป็นไปไม่ได้ที่ผู้โจมตีจะค้นหาข้อความอื่น ๆ เพื่อให้แฮชเหมือนกัน
เมื่อได้รับข้อความคู่ m และ m มันเป็นไปไม่ได้ที่จะคำนวณหาสองแบบที่ h (m) = h (m ')
ทั้งสองกรณีไม่เหมือนกัน ในกรณีแรกมีแฮชที่มีอยู่แล้วที่คุณกำลังพยายามหาการชนกัน ในกรณีที่สองคุณกำลังพยายามค้นหาข้อความใด ๆสองข้อความที่ชนกัน ภารกิจที่สองนั้นง่ายกว่ามากเนื่องจากวันเกิด "บุคคลที่ผิดธรรมดา"
ในกรณีที่ประสิทธิภาพไม่ดีมากคุณควรใช้ฟังก์ชันแฮชที่ปลอดภัยเสมอ มีการโจมตีที่ฉลาดมากที่สามารถดำเนินการได้โดยบังคับให้มีการชนในแฮช หากคุณใช้สิ่งที่แข็งแกร่งตั้งแต่เริ่มแรกคุณจะปลอดภัยจากสิ่งเหล่านี้
อย่าใช้ MD5 หรือ SHA-1 ในการออกแบบใหม่ ฉันรวม cryptographers ส่วนใหญ่แล้วจะถือว่ามันแตก แหล่งที่มาหลักของความอ่อนแอในการออกแบบทั้งสองนี้คือคุณสมบัติที่สองซึ่งฉันได้กล่าวไว้ข้างต้นไม่ได้มีไว้สำหรับสิ่งปลูกสร้างเหล่านี้ หากผู้โจมตีสามารถสร้างข้อความสองข้อความคือ m และ m 'ซึ่งทั้งคู่แฮชเป็นค่าเดียวกันพวกเขาสามารถใช้ข้อความเหล่านี้กับคุณ SHA-1 และ MD5 ยังประสบกับการโจมตีของส่วนขยายข้อความซึ่งอาจทำให้แอปพลิเคชันของคุณอ่อนแอลงหากคุณไม่ระวัง
แฮชที่ทันสมัยกว่าเช่น Whirpool เป็นตัวเลือกที่ดีกว่า ไม่ได้รับผลกระทบจากการโจมตีของส่วนขยายข้อความและใช้คณิตศาสตร์แบบเดียวกับที่ AES ใช้เพื่อพิสูจน์ความปลอดภัยจากการโจมตีที่หลากหลาย
หวังว่าจะช่วย!