ฉันได้อ่านเอกสารที่เกี่ยวข้องกับปัญหานี้มากมาย แต่ฉันยังไม่สามารถรวบรวมทุกส่วนเข้าด้วยกันได้ดังนั้นฉันจึงอยากถามคำถามสองสามข้อ
ก่อนอื่นฉันจะอธิบายสั้น ๆ เกี่ยวกับขั้นตอนการรับรองความถูกต้องตามที่ฉันเข้าใจเนื่องจากฉันอาจเข้าใจผิดในเรื่องนั้น: ไคลเอนต์เริ่มการเชื่อมต่อซึ่งเซิร์ฟเวอร์ตอบสนองด้วยการรวมกันของคีย์สาธารณะข้อมูลเมตาและลายเซ็นดิจิทัลของ ผู้มีอำนาจที่เชื่อถือได้ จากนั้นไคลเอ็นต์จะตัดสินใจว่าเธอเชื่อถือเซิร์ฟเวอร์หรือไม่เข้ารหัสคีย์เซสชันแบบสุ่มด้วยคีย์สาธารณะและส่งกลับ รหัสเซสชันนี้สามารถถอดรหัสได้ด้วยคีย์ส่วนตัวที่เก็บไว้บนเซิร์ฟเวอร์เท่านั้น เซิร์ฟเวอร์ทำสิ่งนี้แล้วเซสชัน HTTPS จะเริ่มขึ้น
ดังนั้นถ้าฉันพูดถูกต้องข้างต้นคำถามคือการโจมตีแบบคนตรงกลางสามารถเกิดขึ้นได้อย่างไรในสถานการณ์เช่นนี้? ฉันหมายถึงแม้ว่าจะมีคนขัดขวางการตอบสนองของเซิร์ฟเวอร์ (เช่น www.server.com) ด้วยคีย์สาธารณะและมีวิธีการบางอย่างที่ทำให้ฉันคิดว่าเขาเป็น www.server.com เขาก็ยังไม่สามารถถอดรหัสคีย์เซสชันของฉันได้ ไม่มีคีย์ส่วนตัว
การพูดเกี่ยวกับการพิสูจน์ตัวตนซึ่งกันและกันทั้งหมดเกี่ยวกับความเชื่อมั่นของเซิร์ฟเวอร์เกี่ยวกับข้อมูลประจำตัวของไคลเอ็นต์หรือไม่? ฉันหมายความว่าลูกค้ามั่นใจได้แล้วว่าเธอกำลังสื่อสารกับเซิร์ฟเวอร์ที่ถูกต้อง แต่ตอนนี้เซิร์ฟเวอร์ต้องการค้นหาว่าลูกค้าคือใครใช่ไหม?
และคำถามสุดท้ายเกี่ยวกับทางเลือกในการพิสูจน์ตัวตนร่วมกัน หากฉันทำหน้าที่เป็นไคลเอนต์ในสถานการณ์ที่อธิบายไว้ฉันจะทำอย่างไรหากฉันส่งล็อกอิน / รหัสผ่านในส่วนหัว HTTP หลังจากสร้างเซสชัน SSL อย่างที่ฉันเห็นข้อมูลนี้ไม่สามารถดักจับได้เนื่องจากการเชื่อมต่อมีความปลอดภัยแล้วและเซิร์ฟเวอร์สามารถใช้เพื่อระบุตัวตนของฉันได้ ฉันผิดเหรอ? อะไรคือข้อเสียของวิธีการดังกล่าวเมื่อเทียบกับการรับรองความถูกต้องร่วมกัน (เฉพาะปัญหาด้านความปลอดภัยเท่านั้นที่มีความสำคัญไม่ใช่ความซับซ้อนของการนำไปใช้งาน)