แผนนี้บรรลุความต้องการของฉันหรือไม่? การตัดทอน 48 บิตสุดท้ายมีความเสี่ยงด้านความปลอดภัยหรือไม่?
แผนการถูกทำลายโดยศัตรูที่แฝงอยู่ซึ่งได้รับคู่เดียว $(t,r)$. สังเกตว่าสามารถกู้คืนคีย์ 48 บิตสุดท้ายเป็น $K[:48] = t \oบวก r$. ดังนั้นตอนนี้ผู้โจมตีสามารถส่งโดยพลการ $(t^*, r^*)$ ค่าที่ผู้รับจะยอมรับได้ จำได้ว่าผู้ตรวจสอบทำสิ่งต่อไปนี้
$r' = t' \oบวก K$ (เก็บเฉพาะ 48 บิตสุดท้าย); ตรวจสอบ $r = r'$
เราเห็นว่าไม่จำเป็นต้องมีความรู้เกี่ยวกับคีย์ที่เหลือ
นอกจากนี้ ค่า 48 บิตยังมีการป้องกันการชนกันต่ำ แต่นั่นอาจใช้ได้สำหรับแอปพลิเคชันของคุณ...
เล่นซ้ำ: การโจมตีที่ตรงไปตรงมามากขึ้นคือการเล่นซ้ำของทั้งคู่ $(ร, เสื้อ)$. คำอธิบายไม่ได้บอกว่าผู้รับตรวจสอบสิ่งนี้อย่างไร
ทางออกที่เป็นไปได้: จากคำอธิบายเบื้องต้น ดูเหมือนว่าเครื่องรับมีข้อจำกัดในการพูดเชิงคำนวณพอสมควร และพวกเขาสามารถคำนวณได้เฉพาะ xors เท่านั้นและไม่ใช่ AES-CTR เป็นต้น ซึ่งจะเป็นเรื่องแปลกดังต่อไปนี้
ดังนั้นจึงมีการตรวจสอบสิทธิ์ล่วงหน้าบางประเภทที่ได้เกิดขึ้นแล้ว แต่ที่นี่ไม่ได้มีความสำคัญ
อย่างไรก็ตาม วิธีแก้ไขที่เป็นไปได้คือใช้ฟังก์ชันสุ่มหลอกสองตัว หากเครื่องรับสามารถทำได้มากกว่า xors (สงสัยจะปลอดภัย...). เริ่มแรกให้ขยาย $K$ เข้าไปข้างใน $K_1, K_2, K_3$ มีความยาวพอเหมาะ
ผู้ส่งดำเนินการดังต่อไปนี้
- $r=$ AES-CTR$(K_1, ตัวนับ)$ (เก็บ 48 บิตสุดท้าย)
- ส่ง $เคาน์เตอร์, r, \tau = HMAC(K_2, ตัวนับ,r)$
ผู้รับดำเนินการดังต่อไปนี้
- เมื่อได้รับ $r, \tau$, ตรวจสอบ $\tau$
- เคาน์เตอร์ตรวจสอบเพิ่มขึ้น
- ทำซ้ำ $r$.
ข้อสังเกตบางประการ:
- การแพร่ภาพที่นี่ไม่จำเป็นด้วยซ้ำหากผู้ส่งและผู้รับเป็นคนที่ใช้นาฬิการ่วมกัน
- ทางเลือกมีปัญหาเล็กน้อยเมื่อพูดถึงความทนทานในกรณีของการรีบูตดังที่ Paul ระบุไว้ในความคิดเห็น