ปัญหานี้ปรากฏในข้อสอบเก่า
ในโปรโตคอล PAKE (การแลกเปลี่ยนคีย์ที่ตรวจสอบความถูกต้องด้วยรหัสผ่าน) $A$ และ $B$ ตรวจสอบแต่ละรายการ
อื่น ๆ โดยทราบรหัสผ่านที่ใช้ร่วมกันซึ่งอ่อนแอเกินกว่าที่ผู้โจมตีจะลองใช้ได้
เดาซ้ำเพื่อพยายามค้นหาโดยรู้ว่าข้อความเดียวของโปรโตคอลเป็นอย่างไร
สร้าง ไม่มีลายเซ็นเข้ารหัสหรือความลับที่ใช้ร่วมกันหรือเชื่อถือได้
บุคคลที่สามที่พวกเขาสามารถใช้ได้ โดยทั่วไปโปรโตคอลดังกล่าวจะทำงานดังนี้:
ระยะที่ 1: $A$ และ $B$ แลกเปลี่ยนข้อมูลที่พวกเขาสร้างขึ้นสำหรับเซสชันนี้และค่าต่างๆ
พวกเขาได้คำนวณจากค่านี้และค่าที่สมมติขึ้นเองสำหรับรหัสผ่าน $p_{AB}$.
โปรดทราบว่าหากเป็น A และ B ทั้งคู่จะรู้เหมือนกัน $p_{AB}$ แต่ถ้าอย่างใดอย่างหนึ่งหรือ
ทั้งคู่กำลังปลอมแปลงค่าที่พวกเขาคิดว่าน่าจะแตกต่างกัน จาก
การคำนวณเหล่านี้ทั้งคู่ได้รับคีย์ $k_A$ หรือ $k_B$ซึ่งจะเหมือนกันหากพวกเขา
ค่ารหัสผ่านเหมือนกัน
ระยะที่ 2: พวกเขาเปรียบเทียบ $k_A$ และ $k_B$ โดยการแลกเปลี่ยนข้อความที่อนุญาต
เพื่อดูว่าเห็นด้วยหรือไม่เปิดเผย $k_A$ หรือ $k_B$ แก่ชาวโลกและไม่อนุญาตเช่นกัน
ฝ่ายที่คิดว่าพวกเขาเห็นด้วยเมื่อพวกเขาไม่เห็นด้วย
ทำไมต้อง $A$ ไม่ส่ง ซึ่งเป็นส่วนหนึ่งของโปรโตคอลนี้ $hash(p_{AB}, N)$, ที่ไหน $N$ เป็นสิ่งที่ไม่มีใครรู้จัก
ถึง $B$ จนกว่าเธอจะแน่ใจว่า $B$ ไม่ใช่นักต้มตุ๋นและรู้จริง $p_{AB}$? ขยายความถึง
คำแนะนำทั่วไปเกี่ยวกับข้อความในฟอร์มแฮช ($X$) ไม่ควรส่งจาก $A$ ถึง
$B$ ที่ไหน $X$ เกี่ยวข้องกับ $p_{AB}$ ในการก่อสร้าง
ตอนนี้คิดเกี่ยวกับการดำเนินการระยะที่ 2 เท่านั้น คุณจะใช้การแฮชเพื่อให้บรรลุได้อย่างไร
วัตถุประสงค์ของระยะที่ 2 ในลักษณะที่ว่าหาก $A$ หรือ $B$ ได้พูดคุยกับผู้แอบอ้าง
ด้วยรหัสผ่านอื่นในเฟส 1 ผู้แอบอ้างไม่สามารถจัดการข้อความได้
ทำให้เธอหรือเขาคิดว่าโปรโตคอลเสร็จสมบูรณ์แล้ว
ความพยายามของฉัน:
ก) $A$ ไม่ควรส่ง $hash(p_{AB}, N)$ ในฐานะนักต้มตุ๋น $I_B$ สามารถใช้ nonce เดิมซ้ำแล้วส่ง $hash(p_{AB}, N)$ กลับไปที่ A แสร้งทำเป็นรู้รหัสผ่าน $p_{AB}$
ข) $X$ ไม่ควร $p_{AB}$ (ด้วยตัวมันเอง). นอกจากนี้ยังควรมีการระบุตัวตนสำหรับผู้ใช้แต่ละราย ซึ่งไม่ซ้ำกันกับสิ่งที่ผู้ใช้รายอื่นส่งมา เช่น ถ้าอลิสมาส่ง $แฮช(X_1)$ และบ๊อบส่ง $แฮช(X_2)$, $X_1 \neq X_2$. เพียงพอหรือไม่ ฉันไม่สามารถคิดถึงสิ่งอื่น
c) สำหรับการดำเนินการเฟส 2 ให้อลิซส่ง $hash(E_{k_A}(อลิซ|k_A))$ และบ๊อบส่ง $hash(E_{k_B}(บ๊อบ|k_B))$. ที่ไหน $E_k$ เป็นฟังก์ชันการเข้ารหัส เข้ารหัสโดยใช้คีย์ $k$. ถูกต้องหรือไม่