กำหนดแฮช H() เช่น sha256
และข้อความลับ S
และพีเกลือสาธารณะ
จะรู้ H(S) เปิดเผย HMAC(P, S) หรือไม่
เพื่อชี้แจง: คำถามคือสามารถเรียนรู้สรุปได้หรือไม่ ไม่ใช่ความลับ
ในกรณีเฉพาะของฉัน HMAC(S) คือ HKDF(S) จริงๆ แต่ฉันถือว่าสำหรับคำถามนี้ ส่วนที่เกี่ยวข้องกับความปลอดภัยเป็นเพียงขั้นตอนการแยกข้อมูล
โปรโตคอลมีดังนี้:
Alice->Bob: ดึงข้อความ 2 หลังจาก message1 ซึ่งมีเนื้อหา H(message1)
Bob->Alice: message2 จาก Charlie พูดว่า: chacha(HKDF(message1), ธรรมดา)
ดูเหมือนว่าค่อนข้างชัดเจนว่าการบังคับ S อย่างโหดเหี้ยมยังไม่สามารถทำได้:
ในแต่ละรอบ ผู้โจมตีจะมีความสามารถในการทดสอบกับ H(S) หรือ HMAC(S) แต่สิ่งนี้ไม่ได้ช่วยอะไรเพราะความพยายามนั้นเหมือนกัน การทดสอบกับทั้งคู่ทำให้ช้าลงสองเท่า
อย่างไรก็ตาม เราใส่ใจเกี่ยวกับความลับของแฮชเอง เนื่องจากเป็นคีย์ที่ได้รับมา แม้ว่าเราจะสันนิษฐานว่าอาจเป็นไปได้ที่จะ "ดำเนินการต่อ" ฟังก์ชันแฮชจากไดเจสต์ของมัน [1]
จากนั้นดำเนินการต่อเป็น HMAC ซึ่งจะใช้ได้กับ H(S+salt) เท่านั้น ไม่ใช่กับ H(salt+S) ซึ่ง HKDF คือ [2]
ตอนนี้สิ่งสุดท้ายที่ฉันไม่เข้าใจก็คือเอนโทรปี การเปิดเผยแฮชของ S จะลดเอนโทรปีเพื่อให้ hmac อ่อนแอลงหรือไม่ เท่าที่ฉันเข้าใจ การย่อยของบางสิ่งจะกระจายเอนโทรปีออกไปจนแยกไม่ออกจากการสุ่ม ดังนั้นคุณจึงไม่สามารถ "ทำซ้ำ" การกระจายตัวเดิมได้ ถ้ามันหายไปแล้ว
- https://stackoverflow.com/questions/20895009/what-state-needs-to-be-stored-to-allow-resumable-hash-computations
- เหตุใด HKDF จึงใช้ HMAC (เกลือ คีย์) แทน HMAC (คีย์ เกลือ)