ขณะนี้เรากำลังออกแบบโปรโตคอล Challenge-Response Authentication Mechanism (CRAM) อย่างง่าย โดยยึดตามการเข้ารหัสแบบสมมาตรที่จะใช้กับอุปกรณ์ฝังตัวที่มีข้อจำกัดซึ่งจะทำงานในเครือข่ายระยะสั้นแบบปิด
ต้องการการรับรองความถูกต้องร่วมกัน ความสามารถด้านความปลอดภัยที่นำเสนอโดยอุปกรณ์ยังไม่เป็นที่รู้จักในขณะนี้ ดังนั้นเราจึงมุ่งเน้นเฉพาะการใช้โปรโตคอล AES ระหว่างการพิสูจน์ตัวตนเป็นหลัก ในกรณีที่เราสามารถใช้ เช่น โปรโตคอล MAC เราจะขยายออกไปในระหว่างการสื่อสารช่องทางที่ปลอดภัยหลังจากนั้น
เราถือว่าอุปกรณ์ทั้งสองมีคีย์สมมาตรที่เหมาะสม ความท้าทาย (chg_x) ถูกกำหนดให้เป็น 16 ไบต์และสร้างขึ้นแบบสุ่มโดยใช้ RNG จริง
ลำดับของโปรโตคอลจะเป็น:
- $A \rightarrow B : id_A, chg_A $
- $A \leftarrow B : id_B, enc(chg_A), enc(chg_B)$
- $A \rightarrow B : dec(enc(chg_B))$
อุปกรณ์ $A$ จะตรวจสอบความท้าทายในระหว่างการตอบกลับและถอดรหัสและส่งความท้าทายจากอุปกรณ์อื่นการเข้ารหัสบนอุปกรณ์ $B$ ของความท้าทาย $chg_B$ ทำเพื่อหลีกเลี่ยงการโจมตีแบบสะท้อนตามที่ระบุไว้ใน คำถามนี้.
สำหรับช่องทางที่ปลอดภัยหลังจากนั้น เราวางแผนที่จะใช้ $ KDF(K||chg_A) $ เพื่อรับคีย์เซสชัน
คำถามของฉันคือ:
- โปรโตคอลนี้จะเพียงพอสำหรับสถานการณ์ที่ต้องการหรือยังเสี่ยงต่อการโจมตีอื่นๆ
- ยังเป็นที่พึงปรารถนาที่จะมี Hash หรือ MAC ในระหว่างการพิสูจน์ตัวตนด้วยความสามารถบางอย่างเพื่อบรรเทาภัยคุกคามที่อาจเกิดขึ้นหรือไม่?