ขอผมลองจัดโครงสร้างปัญหาใหม่ เพราะมันอาจช่วยได้นิดหน่อย ข้อกำหนดมีดังต่อไปนี้:
- ที่จุดเริ่มต้นของการเชื่อมต่อ จุดสิ้นสุดทั้งสองดำเนินการ Diffie-Hellman เพื่อให้ได้คีย์ร่วมกัน $K$.
- จากนั้น EP1 จำเป็นต้องสร้างค่า 48 บิตแบบสุ่ม $R$ และส่งไปยัง EP2 ค่าสุ่มนี้จำเป็นต้องมีคุณสมบัติสองประการต่อไปนี้: (a) an
ผู้โจมตีไม่สามารถเดาค่าสุ่มถัดไปที่ EP1 สร้างขึ้น และ (b) EP2 สามารถตรวจสอบได้ $R$ มาจาก EP1 จริงๆ
- จุดสิ้นสุดทั้งสองยังใช้ค่าข้อมูลเวลาร่วมกัน $T$ซึ่งเป็นเหมือนตัวนับเวลาและเป็น 64 บิต ฉันไม่รู้เพิ่มเติม ฉันรู้แค่ว่าค่านี้ไม่ซ้ำกันในแต่ละการเชื่อมโยงและเป็นที่รู้จักโดย EP ทั้งสอง
- โดยการเชื่อมโยง ฉันหมายถึงลำดับทั้งหมดของขั้นตอนที่ 1-4 ข้างต้น หาก EPs ยกเลิกการเชื่อมต่อพวกเขาจะเรียกใช้ข้อความเหล่านั้นตั้งแต่เริ่มต้น แต่ EP ทั้งสองจะลบคีย์ $K$ และตั้งขึ้นใหม่ในสมาคมต่อไป.
ดังนั้น เพื่อแก้ไขคำตอบของฉันด้านบนเล็กน้อย ฉันกำลังคิดวิธีแก้ปัญหาต่อไปนี้:
EP1 EP2
-----------------------------------------|
1.s1 = AES-CTR(K,T||เคาน์เตอร์,K) --------->|
2.R1 = s1 XOR K------------------------>|
| 3. s1' = AES-CTR(K,T||เคาน์เตอร์,K)
| 4. R1' = s1' XOR K
| ตรวจสอบ R1' == R1
ในขั้นตอนที่ 1 EP1 ใช้ AES ในโหมด CTR ด้วยคีย์ $K$ฟิลด์ nonce/counter ที่จะเชื่อมข้อมูล $T||เคาน์เตอร์$และข้อความที่จะเข้ารหัสเป็นอีกครั้ง $K$.
ในขั้นตอนที่ 2 ค่าที่ดูสุ่ม $s_1$ จากขั้นตอนที่ 1 ถูก xored ด้วยคีย์เดียวกัน $K$ และส่ง 48 บิตสุดท้ายไปยัง EP2 ฉันกำลังใช้ซ้ำ $K$ เป็นข้อความอินพุตเพียงเพราะมันเป็นค่าที่รู้จักใน EP2 และสามารถตรวจสอบค่าที่เข้ารหัสได้ แต่โปรดแจ้งให้เราทราบหากนี่เป็นการปฏิบัติที่ไม่ดี
ในขั้นตอนที่ 3 และ 4 EP2 ทำการคำนวณแบบเดียวกันเนื่องจากค่าทั้งหมดเป็นค่าทั่วไป และในขั้นตอนที่ 5 ให้ตรวจสอบว่า $R_1'==R_1$. ถ้าเป็นเช่นนั้น แสดงว่า EP1 ได้รับการพิสูจน์ตัวตนแล้ว เนื่องจากต้องใช้คีย์ที่ถูกต้อง $K$, และนอกจากนี้ยังมี $R_1$ ค่าไม่ควรคาดเดาได้
คุณเห็นข้อบกพร่องหรือความซ้ำซ้อนในโครงการของฉันหรือไม่? จะบรรลุข้อกำหนดที่กล่าวถึงในตอนต้นของโพสต์ของฉันหรือไม่