การโจมตีประเภทหนึ่งที่เราพยายามป้องกันที่นี่ด้วยกลไกดังกล่าวเรียกว่า "การเลียนแบบการประนีประนอมที่สำคัญ"ที่งานเลี้ยง ได้รับรหัสส่วนตัวของคุณ (ไม่ใช่ของอีกฝ่าย) และกำลังพยายาม ปลอมตัวเป็นบุคคลอื่นกับคุณ.
ตอนนี้ ฉันจะพยายามจัดการกับคำถามต่างๆ ของคุณในลำดับที่แตกต่างกัน เนื่องจากฉันมีเหตุผลมากขึ้นและควรช่วยให้เข้าใจทั่วโลกเกี่ยวกับเงื่อนไขพื้นฐาน:
คำถามที่ 3
- สำหรับฉันแล้ว ดูเหมือนว่าโครงร่าง C(0e, 2s) ที่มีการยืนยันคีย์ทวิภาคีควรพิสูจน์การครอบครองคีย์ส่วนตัวแบบคงที่ เหตุใดจึงต้องใช้คีย์ชั่วคราว
ไม่ เมื่อใช้ 2 สแตติกคีย์และ 0 คีย์ชั่วคราว ผู้โจมตีที่รู้เฉพาะคีย์ส่วนตัวของคุณ แต่ไม่มีคีย์ส่วนตัวของอีกฝ่ายจะสามารถคำนวณความลับที่ใช้ร่วมกันเดียวกันกับคุณได้
ปัญหาซ่อนอยู่ในข้อความเช่น ใน 6.3.3.3 มันบอกว่า:
ความสำเร็จของกระบวนการยืนยันคีย์ทำให้แต่ละฝ่ายมั่นใจได้ว่าอีกฝ่ายหนึ่งได้รับค่า Z ที่เป็นความลับเหมือนกัน
ดังนั้น สิ่งที่คุณได้รับการยืนยันก็คือแค่นั้นจริงๆ ความลับที่ได้รับนั้นเหมือนกับของคุณแต่ไม่ใช่ว่าอีกฝ่ายใช้ความรู้จริง ๆ เกี่ยวกับรหัสคงที่ลับที่พวกเขาอ้างว่าถืออยู่
ดังนั้น คุณสามารถตรวจสอบได้ว่าไม่มีบุคคลที่อยู่ตรงกลางแก้ไขข้อตกลงหลักของคุณ: คุณทั้งคู่ได้รับคีย์ที่ตกลงกันไว้เหมือนกัน
เหตุใดจึงต้องใช้คีย์ชั่วคราว
เนื่องจากเป็นกุญแจชั่วคราวที่เราเพิ่งสร้างขึ้น อีกฝ่ายจะไม่ทราบรหัสลับชั่วคราวที่เกี่ยวข้อง (สมมติว่าเป็นศัตรูกับ เท่านั้น ความรู้เกี่ยวกับรหัสลับแบบคงที่ของคุณ)
ดังนั้น ในระหว่างข้อตกลงคีย์ เนื่องจากคุณกำลังรวมคีย์ลับชั่วคราวของคุณเข้ากับคีย์สแตติกสาธารณะ (อ้างสิทธิ์) ของพวกเขา หากพวกเขาไม่รู้คีย์สแตติกลับ (อ้างสิทธิ์) ลับของพวกเขา พวกเขาจะไม่สามารถทำรากศัพท์เดียวกันได้ เช่นเดียวกับที่คุณใช้คีย์สาธารณะชั่วคราวที่คุณส่งไป
ด้วยคีย์ชั่วคราว นี่คือสิ่งที่เกิดขึ้นโดยปกติในด้านของคุณ:
- คุณรวมรหัสลับชั่วคราวของคุณเข้ากับรหัสสาธารณะแบบคงที่ (อ้างสิทธิ์) ของพวกเขา คุณจะได้รับความลับ $Z_e$
- คุณรวมรหัสลับแบบคงที่ของคุณกับรหัสสาธารณะแบบคงที่ (อ้างสิทธิ์) คุณจะได้รับความลับ $Z_s$
- คุณใช้ทั้งสองอย่าง $Z_e$ และ $Z_s$ ในกระบวนการสืบเชื้อสายของคุณเพื่อรับความลับสุดท้ายที่ใช้ร่วมกัน $Z$
- คุณใช้กระบวนการยืนยันคีย์เพื่อให้แน่ใจว่าคุณทั้งคู่ได้รับความลับที่ใช้ร่วมกันเหมือนกัน $Z$
และอีกฝ่ายกำลังทำแบบเดียวกันไม่มากก็น้อย แต่พวกเขากำลังใช้รหัสชั่วคราวสาธารณะของคุณแทน
(นี่คือข้อตกลงคีย์ C(1e,2s) แบบคลาสสิกโดยสรุป)
ตอนนี้ศัตรูรู้ ของคุณ รหัสลับสามารถเลียนแบบขั้นตอนที่ 2 ได้ แต่ไม่สามารถเลียนแบบขั้นตอนที่ 1 ได้ ทำให้ไม่สามารถดำเนินการขั้นตอนที่ 3 ได้อย่างถูกต้องและจะได้ จับได้ ในขั้นตอนที่ 4 หากคุณใช้คีย์ชั่วคราว
แต่ถ้าคุณไม่มีรหัสชั่วคราว แสดงว่าคุณอาศัยเพียงขั้นตอนที่ 2 ในขั้นตอนที่ 3 เท่านั้น ดังนั้นการแอบอ้างบุคคลอื่นจะไม่ถูกตรวจพบในขั้นตอนที่ 4
นี่คือส่วนสำคัญของสิ่งที่พูดใน 5.6.2.2.3.2 เงื่อนไขแรก (เน้นของฉัน):
- ผู้รับคีย์สาธารณะแบบสแตติกจะมอบคีย์สาธารณะชั่วคราวให้กับกระบวนการข้อตกลงคีย์ ที่ตั้งใจจะรวมทางเลขคณิตกับเจ้าของที่อ้างสิทธิ์ (เช่น อีกฝ่ายหนึ่ง) คีย์ส่วนตัวแบบคงที่ในการคำนวณที่ดำเนินการโดยเจ้าของที่อ้างสิทธิ์ (หากมีการใช้โครงร่างข้อตกลงหลักที่เหมาะสม เจ้าของที่อ้างสิทธิ์จะถูกท้าทายให้แสดงความรู้ปัจจุบันเกี่ยวกับคีย์ส่วนตัวแบบสแตติกของเขาโดยดำเนินการคำนวณให้สำเร็จในระหว่างการทำธุรกรรม.)
ซึ่งหมายความว่าขั้นตอนที่ 1 และ 3 จะต้องเกิดขึ้น
จากนั้นเรามีเงื่อนไขที่สอง:
- ผู้รับคีย์สาธารณะแบบคงที่ยังเป็นผู้รับการยืนยันคีย์ด้วย โดยเจ้าของที่อ้างสิทธิ์ (เช่น บุคคลอื่น) จะทำหน้าที่เป็นผู้ให้บริการการยืนยันคีย์ (ด้วยการยืนยันคีย์สำเร็จ เจ้าของที่อ้างสิทธิ์สามารถแสดงความเป็นเจ้าของคีย์สาธารณะแบบสแตติกที่ได้รับและความรู้ปัจจุบันเกี่ยวกับคีย์ส่วนตัวแบบสแตติกที่สอดคล้องกัน)
โดยพื้นฐานแล้วหมายความว่าขั้นตอนที่ 4 จะต้องเกิดขึ้น ดังนั้นจึงเป็นการประกันว่ากระบวนการรับคีย์ได้รับการดำเนินการตามที่คาดไว้ และด้วยเหตุนี้จึงรับประกันได้ว่าขั้นตอนที่ 1 ไม่สามารถ "ปลอมแปลง" โดยใครบางคนที่ไม่ทราบรหัสสแตติกลับของสาธารณะสแตติกที่ได้รับ คีย์ แต่แทนที่จะเป็นคีย์สแตติกลับของคุณเอง
คำถามที่ 2
- รูปแบบ C(2e, 2s) ที่มีการยืนยันคีย์ทวิภาคีควรเป็นไปตามเงื่อนไขที่กำหนดด้วยใช่ไหม
ใช่ พวกเขามักจะทำ พวกเขาสามารถสร้างความพึงพอใจให้กับเวอร์ชันที่แรงกว่ามาก ซึ่งคุณยังได้รับการรับประกันการครอบครองคีย์ลับชั่วคราว (ที่อ้างสิทธิ์) หากคุณดูที่ส่วน 5.6.2.2.4 โครงร่าง C(2e, 2s) ที่เป็นไปตามเงื่อนไข 2 และ 3 เป็นไปตามเงื่อนไข 1 และ 2 ของ 5.6.2.2.3.2 ตามธรรมชาติ
โปรดสังเกตว่ามีการอ้างถึงเฉพาะโมเดล DH และ One Pass Unified นั่นเป็นเพราะตามที่กล่าวไว้ใน 7.1 (ฉันเน้นย้ำ):
หากมีการใช้รูปแบบ MQV (MQV2 หรือ Full MQV) ในระหว่างการทำธุรกรรมกับฝ่ายตรงข้ามที่ครอบครองคีย์ส่วนตัวแบบสแตติกที่ถูกบุกรุก (หรือลายเซ็นโดยปริยายที่ถูกบุกรุกซึ่งสอดคล้องกับคีย์ส่วนตัวแบบสแตติกนั้น) ศัตรูจะถูกจำกัดให้ปลอมตัวเป็นเจ้าของคู่กุญแจที่ถูกบุกรุกเท่านั้น (หรือเป็นเจ้าของคู่คีย์คงที่ซึ่งสอดคล้องกับลายเซ็นโดยปริยายที่ถูกบุกรุก) อย่างไรก็ตาม การใช้รูปแบบ Full Unified หรือรูปแบบ dhHybrid1 ทำให้ศัตรูมีโอกาสเพิ่มเติมในการปลอมตัว: หากฝ่ายตรงข้ามบุกรุกคีย์ส่วนตัวแบบคงที่ของเอนทิตี ฝ่ายตรงข้ามอาจสามารถปลอมตัวเป็นเอนทิตีอื่นใดในระหว่างการทำธุรกรรมข้อตกลงคีย์ตามโมเดลแบบครบวงจรเต็มรูปแบบหรือ dhHybrid1 กับเอนทิตีนั้น
แบบแผน MQV ในรูปแบบ "สองรอบ" สามารถต้านทานการโจมตี Key Compromise Impersonation ได้แล้ว และไม่ต้องการขั้นตอนเพิ่มเติมที่แบบแผนตามโมเดล DH หรือ Full Unified ซึ่งมีรายละเอียดอยู่ใน 5.6.2.2.3.2 และ 5.6.2.2.4. นี่น่าจะเป็นเหตุผลที่ไม่มีการอ้างถึงอย่างชัดเจนใน 5.6.2.2.4
คำถามที่ 1
และในที่สุด ฉันคิดว่าคำตอบสำหรับคำถามแรกของคุณเป็นไปตามรายละเอียดข้างต้นโดยธรรมชาติ:
- การคำนวณข้อตกลงคีย์พร้อมการยืนยันคีย์ยังพิสูจน์การครอบครองคีย์ส่วนตัวแบบคงที่ ดังนั้นจึงไม่จำเป็นต้องถามคำถามอื่นกับอีกฝ่าย ถูกต้องหรือไม่
ไม่เลย มันสามารถพิสูจน์ความครอบครองของรหัสส่วนตัวแบบคงที่ของคุณแทน นี่คือเหตุผลที่เราต้องการขั้นตอนสำคัญชั่วคราว