ดังนั้นปัญหาที่ AWS กำลังแก้ไขอยู่นี้คือพวกเขามีค่าทูเพิล ได้แก่ บริการ ภูมิภาค และวันที่ปัจจุบัน และพวกเขาต้องการได้รับรหัสลับที่แตกต่างกันซึ่งขึ้นอยู่กับค่าเหล่านี้ทั้งหมด
คุณสามารถดำเนินการต่อกับ PRF ทั่วไปได้ แต่จากนั้นคุณพบปัญหา: กล่าวคือคุณไม่ต้องการให้มีสถานการณ์ที่ค่าที่ไม่ถูกต้องของรายการ tuple ใด ๆ ทำให้เกิดการชนกันของคีย์ ข้อผิดพลาดแบบคลาสสิกเช่น ให้ใช้การเรียงต่อกันแบบตรง และถ้าพวกเขาไม่ระวัง คุณก็จะจบลงด้วย (วันนี้)
และ (วันนี้)
ให้คีย์เดียวกัน เห็นได้ชัดว่าสตริงที่เล่นที่นี่มีโครงสร้างมากกว่าตัวอย่าง แต่ความกังวลพื้นฐานควรชัดเจน
ตอนนี้ วิธีที่มีประสิทธิภาพที่สุดในการแก้ไขปัญหาข้างต้นคือการใช้ฟังก์ชันจับคู่ที่ รับประกัน ที่ไม่มีทูเพิลอินพุตที่แตกต่างกันสองตัวให้เอาต์พุตเดียวกัน ดังนั้นอินพุตเดียวกันไปยัง PRF อย่างไรก็ตาม การออกแบบฟังก์ชันดังกล่าวยังเกิดข้อผิดพลาดได้เล็กน้อย
ฉัน เดา เป็นเพราะเหตุนี้ AWS จึงเลือกใช้สายการเรียก HMAC ที่ซับซ้อนนี้ ตอนนี้พวกเขาไม่ต้องกังวลเกี่ยวกับฟังก์ชันการจับคู่ที่ซับซ้อนแล้ว สิ่งที่จำเป็นต้องมีคือการประเมิน HMAC จำนวนมาก ซึ่งควรจะเป็นไปได้ในเกือบทุกภาษา/สภาพแวดล้อม ความจริงที่ว่าสิ่งนี้ต้องการการดำเนินการ HMAC ไม่น้อยไปกว่านั้นจะถูกหักล้างด้วยข้อเท็จจริงที่ว่าอินพุตทั้งหมดของการได้มาของคีย์นี้คือ ค่อนข้าง แบบคงที่และคุณสามารถแคชคีย์ได้ประมาณหนึ่งวันหากการดำเนินการของ HMAC ใช้เวลาในการประมวลผลมากสำหรับคุณ