ฉันจะกล่าวถึงเฉพาะส่วน HKDF เท่านั้น
HKDF ได้รับการแนะนำในบทความต่อไปนี้: https://eprint.iacr.org/2010/264.pdf
ในบริบทนี้ HMAC ใช้เพื่อวัตถุประสงค์ที่แตกต่างกันสองประการ: 1) การสกัดแบบสุ่ม และ 2) PRF ความยาวตัวแปร (อินพุต/เอาต์พุต)
การสลับคีย์เกิดขึ้นสำหรับการสกัดแบบสุ่ม สถานการณ์ในที่นี้คือเราได้รับเอกสารสำคัญ $IKM$ ที่ไม่ใช่ (หลอก) สุ่มแบบเดียวกันและต้องการสร้างคีย์ $PRK$ นั่นคือ pseudorandom (กล่าวคือแยกไม่ออกจากการคำนวณแบบสุ่ม)
ตามที่คุณระบุไว้ HMAC ก็แสดงว่าเป็น PRF อย่างไรก็ตาม เราไม่สามารถพึ่งพาความปลอดภัยของ PRF เพื่อโต้แย้งความปลอดภัยของ $PRK$. แต่บทความระบุว่าการใช้ HMAC นี้เหมาะสำหรับการจัดเตรียมตัวแยกความสุ่มทางการคำนวณ (ดูหัวข้อ 6)
เมื่อพูดถึง PRF สิ่งที่น่าสนใจที่ควรทราบก็คือการพิสูจน์ความปลอดภัยบางอย่าง เช่น TLS อาศัยสิ่งที่เรียกว่าสมมติฐาน PRF-ODH (https://eprint.iacr.org/2017/517.pdf). เมื่อนำไปใช้กับการใช้ HKDF ใน TLS: จำไว้ว่าทั้งสองฝ่ายแลกเปลี่ยนหุ้น DH $(g^x, g^y)$; สมมติฐาน (ตามตัวแปรของ) พูดอย่างคร่าว ๆ ว่า: ฟังก์ชัน $F(K, X) = HMAC (X, K) $ เป็น PRF ภายใต้สมมติฐานว่าฟังก์ชันการบีบอัดพื้นฐานนั้นเป็นออราเคิลแบบสุ่ม แม้ว่าผู้โจมตีจะได้รับสิทธิ์เข้าถึงออราเคิลก็ตาม $\mathcal{O}(T,v) = F (T^x, v) $. (ละไว้ที่นี่: ข้อจำกัดเกี่ยวกับค่าของ $(ท,x)$ และจำนวนข้อความค้นหาสูงสุด)
โปรดทราบว่าฟังก์ชัน $F$ ด้านบนมีคีย์สเปซ $\langle G \rangle$กลุ่มที่ใช้สำหรับการแลกเปลี่ยน DH ดังนั้นเราจึงจัดการกับคีย์สุ่มแบบเดียวกันบนคีย์สเปซในบริบทของ PRF-ODH
PS: ลองอ่านคำตอบนี้ด้วย https://crypto.stackexchange.com/a/30461/58690