Score:1

การยืนยันตัวตนร่วมกันแบบนี้ปลอดภัยหรือไม่?

ธง in

ต่อไปนี้เป็นปัญหาในโลกแห่งความเป็นจริง ในโปรโตคอลมาตรฐาน ไคลเอนต์สามารถเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้การยืนยันตัวตน 4 รอบร่วมกันบนช่อง TCP ที่ไม่ปลอดภัย:

  • pass-1: ลูกค้าส่ง Challenge C แบบสุ่มไปยังเซิร์ฟเวอร์
  • pass-2: เซิร์ฟเวอร์ตอบโดยการส่งคำท้า S แบบสุ่มไปยังไคลเอนต์
  • pass-3: ลูกค้าเตรียม res(S, K) และส่งไปยัง S
  • pass-4: เซิร์ฟเวอร์ตอบกลับลูกค้าด้วย res(C, K)

res(.) คือแท็ก GCM-GMAC ที่ขึ้นอยู่กับคีย์สมมาตร K (อันที่จริง AES128 แต่อาจไม่เกี่ยวข้องที่นี่)

เมื่อการรับรองความถูกต้องร่วมกันสำเร็จ ลูกค้าและเซิร์ฟเวอร์สามารถสื่อสารต่อไปได้ภายใต้สิ่งที่เรียกว่า "การเชื่อมโยง" เช่น ลูกค้าสามารถขอข้อมูลบางอย่างจากเซิร์ฟเวอร์

ป้อนคำอธิบายรูปภาพที่นี่

อย่างไรก็ตาม จะเกิดอะไรขึ้นหากผู้โจมตี (ไม่มีคีย์) กำลังดักฟังเครือข่ายและเริ่มการทำงานแบบคนกลางเช่นเดียวกับไคลเอนต์ที่เป็นอันตราย (สีแดง) เมื่อไคลเอนต์จริงเริ่ม pass-1 และส่ง C1 ไปยังเซิร์ฟเวอร์ ในขณะเดียวกันไคลเอ็นต์ที่ไม่ดีก็ส่ง C2 เซิร์ฟเวอร์ตอบสนองต่อคำขอทั้งสอง แต่ MitM จัดการฉีด S2 เพื่อส่งไปยังไคลเอ็นต์ที่ดี ซึ่งเตรียม res (S2) และส่งไปยังเซิร์ฟเวอร์ แต่ MitM จับ res(S2) และฉีดเป็น pass-3 เพื่อส่งไปยังเซิร์ฟเวอร์ ตอนนี้เซิร์ฟเวอร์ตรวจสอบไคลเอ็นต์ที่ไม่ดีและส่งกลับ res (C2) ซึ่งไคลเอนต์ที่ไม่ดีจะละเว้น ดังนั้นการเชื่อมต่อระหว่างไคลเอนต์และเซิร์ฟเวอร์ที่ดูเหมือนจะตรวจสอบความถูกต้องร่วมกันจึงถูกสร้างขึ้น

ป้อนคำอธิบายรูปภาพที่นี่

ฉันสงสัยว่าการตรวจสอบร่วมกันแบบนี้มีประสิทธิภาพจริงหรือไม่

Maarten Bodewes avatar
in flag
ในรูปแบบข้างต้นคีย์หายไป ฉันไม่คิดว่าการโจมตี MitM ของคุณจะเป็นไปได้ด้วยการจัดการคีย์ที่เหมาะสม แย่กว่านั้น หากไม่มีส่วนการจัดการคีย์ คำถามอาจตอบได้ไม่ครบถ้วน และฉันไม่ชอบเมื่อผู้ใช้ต้องเดาว่าจะใช้คีย์ใดและประเภทใด โปรด [แก้ไข] คำถามของคุณเพื่อรวมคีย์
knaccc avatar
es flag
คุณควรใช้คีย์เซสชันที่อิงตามข้อมูลแบบสุ่มจากทั้งไคลเอ็นต์และเซิร์ฟเวอร์ เพื่อไม่ให้คุณเสี่ยงต่อการถูกโจมตีซ้ำ นอกจากนี้ คุณควรคิดถึงการสร้างและหมุนเวียนคีย์เซสชันเมื่อเวลาผ่านไป (หากเซสชันทำงานเป็นเวลานาน) เพื่อให้คุณส่งต่อความลับได้
MichaelW avatar
in flag
@Maarten Bodewes: ฉันอัปเดตรูปภาพด้วยกุญแจ มันเป็นเพียงคีย์ AES128 ที่แชร์ล่วงหน้าซึ่งสร้างแท็กโดย GCM-GMAC: Res(S, K) = GMAC(S, K, IV) โดยมีเวกเตอร์การเริ่มต้นซึ่งเพิ่มขึ้นเสมอ
MichaelW avatar
in flag
@knaccc: โปรโตคอลนี้ไม่ใช่ทั้ง "สิ่งประดิษฐ์" ของฉันและไม่สามารถเปลี่ยนแปลงได้ ฉันต้องการเพียงแค่เข้าใจ
knaccc avatar
es flag
@MichaelW คุณกำลังบอกว่าคีย์ 128 บิต K ถูกใช้โดยตรงเป็นคีย์เข้ารหัส/ถอดรหัสสำหรับเซสชัน โดยที่การเข้ารหัสดำเนินการโดยใช้ AES128
MichaelW avatar
in flag
@knaccc: ใช่ K ใช้สำหรับสร้างแท็กที่ใช้สำหรับการตรวจสอบร่วมกัน เช่นเดียวกับการเข้ารหัส/การตรวจสอบความถูกต้องของข้อความหลังจากสร้างเซสชันดังกล่าวแล้ว บางทีฉันไม่เข้าใจคำถามของคุณ
knaccc avatar
es flag
หากใช้ K เป็นคีย์ AES128 โดยตรงสำหรับการสื่อสารเซสชัน แทนที่จะสร้างคีย์สมมาตรใหม่ตาม K และ C1 และ S1 ดังนั้น การโจมตีแบบ MITM สามารถรอให้เซสชันได้รับการตรวจสอบสิทธิ์โดยสมบูรณ์ แล้วจึงติดตั้งการโจมตีแบบเล่นซ้ำ ส่งสำเนาของคำขอเข้ารหัสที่สังเกตเห็นก่อนหน้านี้เพื่อหลอกให้เซิร์ฟเวอร์ทำบางสิ่ง ฉันจึงไม่ถือว่าการสื่อสารเซสชันได้รับการรับรองความถูกต้องอย่างถูกต้อง
MichaelW avatar
in flag
@knaccc: สามารถแนบข้อความคำขอพร้อมกับแท็กการรับรองความถูกต้อง แท็กนี้ขึ้นอยู่กับเวกเตอร์การเริ่มต้นซึ่งจะต้องแตกต่างกันในแต่ละครั้งและไม่ซ้ำกัน (อันที่จริงมีตัวนับซึ่งเพิ่มขึ้นในแต่ละครั้ง) ดังนั้นการเล่นซ้ำง่ายๆ จะถูกบล็อกโดยเซิร์ฟเวอร์
knaccc avatar
es flag
หากคุณไม่ผูกเซสชันคีย์กับการตรวจสอบสิทธิ์และไม่ได้ใช้การเข้ารหัสที่รับรองความถูกต้อง แสดงว่าคุณกำลังละเมิดหลักการ Cryptographic Doom https://moxie.org/2011/12/13/the-cryptographic-doom-principle html
MichaelW avatar
in flag
อืมมม...หลังจากตั้งค่าเซสชันที่ตรวจสอบสิทธิ์แล้ว จะมีการใช้คีย์ที่แบ่งปันล่วงหน้าเดียวกันเสมอ อย่างไรก็ตาม มีสิ่งที่เรียกว่าตัวนับเฟรมซึ่งจะต้องเพิ่มขึ้นทุกครั้งและไหลเข้าสู่เวกเตอร์การเริ่มต้นสำหรับ GCM-GMAC นี่เป็นคำถามเดิมของฉันเล็กน้อย แต่อย่างไรก็ตามฉันจะอ่านบทความเพราะมันดูน่าสนใจ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา