แฮชที่มีคีย์จะไม่ไวต่อการชนกัน / ความขัดแย้งในวันเกิดเนื่องจากผู้โจมตีไม่มีคีย์ คุณไม่สามารถทำการคำนวณล่วงหน้าและสร้างชุดของแฮชที่ทราบได้เนื่องจากสิ่งนั้น (คุณสามารถทำได้หากคุณมี Oracle พร้อมคีย์ แต่ในกรณีนั้น Oracle จะลงนามข้อมูลแบบสุ่มที่ส่งไปให้)
ดังนั้นคุณจึงประเมินความปลอดภัยที่เสนอโดย HMAC ต่ำเกินไป ในกรณีส่วนใหญ่มีการรักษาความปลอดภัยที่ใกล้เคียงกับขนาด / ขนาดเอาต์พุตของคีย์โดยประมาณ ดูสิ่งนี้ด้วย keylength.com / คำแนะนำของ NIST ตัวอย่างเช่น (คุณต้องดูที่ "แฮช (B)" สำหรับ HMAC ในตาราง)
อย่างไรก็ตาม คุณกำลังใช้ y = SHA384(ญ)
. ตอนนี้หากผู้โจมตีสามารถพยายามสร้างการปะทะกันสำหรับค่าเฉพาะของ ว
ซึ่งหมายความว่ามีการใช้การชนกันของแฮชภายในอินพุต HMAC ซึ่งแน่นอนว่าจะส่งผลให้ค่า HMAC เหมือนกันด้วย ดังนั้นที่นี่จึงใช้ขอบเขตวันเกิด
ใช่ ในกรณีนี้ คุณสามารถลองใช้ SHA-384 หรือ SHA-512 ได้ (เนื่องจากการโจมตีแบบขยายความยาวจะไม่ส่งผลให้เกิดการปะทะกัน ดังนั้นสิ่งเหล่านี้จึงไม่อยู่ในหัวข้อ) สามารถใช้ SHA-384 หากคุณสงสัยว่าจำเป็นต้องมีการแฮชอีกบล็อกหนึ่งหากใช้ SHA-512 จากนั้น SHA-384 อาจมีประสิทธิภาพมากกว่าเล็กน้อย - หากต้องการประสิทธิภาพดังกล่าวเลย
อย่างไรก็ตาม โปรดทราบว่าโดยทั่วไปแล้ว เราถือว่า SHA-256 มีความแข็งแกร่งที่ 128 บิตอยู่แล้ว แม้ว่าจะมีการโจมตีในวันเกิดก็ตาม ดังนั้นจึงยังไม่มีความจำเป็นเร่งด่วนที่จะใช้ SHA-384