Score:0

Key Exchange ได้รับการรับรองความถูกต้องและเป็นความลับหรือไม่?

ธง in

ฉันได้สร้างโปรแกรมส่งข้อความส่วนตัวและต้องการตรวจสอบว่าไม่มีอะไรโง่ในการใช้การเข้ารหัสของฉัน ฉันเป็นมือสมัครเล่นและไม่มีอะไรสำหรับการผลิต ฉันขอขอบคุณล่วงหน้า

การแลกเปลี่ยนข้อความเข้ารหัสแบบ end-to-end ด้วย AES-OCB มีการแลกเปลี่ยนคีย์เซสชันดังนี้:

ในตอนเริ่มต้น คีย์ส่วนตัวจะถูกโหลดและสร้างคีย์สาธารณะ เซิร์ฟเวอร์ส่งรหัสสาธารณะไปยังไคลเอ็นต์ ไคลเอนต์ตรวจสอบรหัสสาธารณะของเซิร์ฟเวอร์ด้วยไฟล์ know_host ในไฟล์นี้ที่อยู่โฮสต์จะถูกเก็บแฮช (sha256) ด้วยรหัสสาธารณะ (sha256) ลูกค้าตรวจสอบว่ารหัสสาธารณะที่ได้รับเป็นรหัสที่ถูกต้อง มิฉะนั้น sha256 ลายนิ้วมือของรหัสสาธารณะจะแสดงให้ผู้ใช้ตรวจสอบ

ลูกค้าสร้างคีย์เซสชัน 128 บิตและเข้ารหัสด้วยคีย์สาธารณะของเซิร์ฟเวอร์ ไคลเอนต์ส่งไปยังเซิร์ฟเวอร์: คีย์เซสชันที่เข้ารหัส, คีย์สาธารณะ, ลายเซ็น RSASSA-PSS (sha256) ของคีย์เซสชัน

เซิร์ฟเวอร์ตรวจสอบตัวตนของไคลเอนต์ด้วยไฟล์ know_host ของตัวเอง มันถอดรหัสคีย์เซสชัน ตรวจสอบลายเซ็นของคีย์เซสชันด้วยคีย์สาธารณะของลูกค้า

ทั้งสองฝ่ายได้รับการรับรองความถูกต้องและมีคีย์เซสชัน การสื่อสารตามปกติจะเริ่มต้นขึ้น

Score:1
ธง kr
  1. โครงการของคุณมี ไม่มีความลับส่งต่อ. หากผู้โจมตีได้รับคีย์ส่วนตัวของเซิร์ฟเวอร์ในสักวันหนึ่ง เซสชันที่ผ่านมาทั้งหมดสามารถถอดรหัสได้: คีย์เซสชันสามารถถอดรหัสได้ ดังนั้นจึงสามารถถอดรหัสเซสชันที่เกี่ยวข้องได้ ดูรายละเอียด ที่นี่.

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

SAI Peregrinus avatar
si flag
นอกจากนี้ยังไม่ได้ระบุวิธีที่ไคลเอ็นต์ใช้ในการเข้ารหัสคีย์เซสชัน หากเป็น RSAES-OAEP ก็ไม่เป็นไร แต่อย่างอื่นก็จะมีคำเตือนหรือไม่ปลอดภัยเลย และเป็นการดีกว่าที่จะใช้ RSA-KEM หรือ ECDH เพื่อสร้างความลับที่ใช้ร่วมกันแทนที่จะเข้ารหัสแล้วส่ง
kr flag
@SAIPeregrinus: แน่นอน และอุโมงค์ SSH หรือ TLS จะดีกว่าโปรโตคอลที่สร้างขึ้นเอง
SAI Peregrinus avatar
si flag
เห็นด้วย หรืออย่างน้อยโปรโตคอล Noise หาก SSH หรือ TLS (หรือ Wireguard) ไม่ทำงานไม่ว่าจะด้วยเหตุผลใดก็ตาม
in flag
สำหรับการเข้ารหัสคีย์เซสชัน ฉันใช้ RSAES-OAEP หากฉันใช้ ECDH สำหรับการแลกเปลี่ยนคีย์เซสชัน ปัญหา "ไม่มีการส่งต่อความลับ" จะได้รับการแก้ไขหรือไม่
kr flag
@ Laurent57: ไม่ค่อย ควรเป็น ECDHE, ECDH ชั่วคราว จากนั้นคุณจะมีความลับไปข้างหน้า
in flag
ขอบคุณสำหรับคำตอบที่เป็นประโยชน์ ฉันให้ความสำคัญกับความคิดเห็นของคุณ

โพสต์คำตอบ

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