Tôi đã đọc rất nhiều tài liệu liên quan đến vấn đề này nhưng tôi vẫn không thể tổng hợp tất cả các phần lại với nhau, vì vậy tôi muốn hỏi một vài câu hỏi.
Trước hết, tôi sẽ mô tả ngắn gọn thủ tục xác thực khi tôi hiểu, vì tôi có thể nhầm lẫn về vấn đề đó: Máy khách bắt đầu một kết nối, mà máy chủ phản hồi bằng sự kết hợp của khóa công khai, một số siêu dữ liệu và chữ ký số của một cơ quan đáng tin cậy. Sau đó, khách hàng sẽ đưa ra quyết định nếu cô ấy tin tưởng máy chủ, mã hóa một số khóa phiên ngẫu nhiên bằng khóa công khai và gửi lại. Khóa phiên này chỉ có thể được giải mã với khóa riêng được lưu trữ trên máy chủ. Máy chủ thực hiện điều này và sau đó phiên HTTPS bắt đầu.
Vì vậy, nếu tôi đúng ở trên, câu hỏi đặt ra là làm thế nào mà cuộc tấn công kẻ trung gian lại có thể xảy ra trong tình huống như vậy? Ý tôi là, ngay cả khi ai đó chặn phản hồi của máy chủ (ví dụ: www.server.com) bằng khóa công khai và có một số cách để khiến tôi nghĩ rằng anh ta là www.server.com, anh ta vẫn không thể giải mã khóa phiên của tôi không có khóa riêng.
Nói về xác thực lẫn nhau, có phải là tất cả về độ tin cậy của máy chủ về danh tính khách hàng không? Ý tôi là, khách hàng đã có thể chắc chắn rằng cô ấy đang giao tiếp với đúng máy chủ, nhưng bây giờ máy chủ muốn tìm xem khách hàng là ai, phải không?
Và câu hỏi cuối cùng là về giải pháp thay thế cho xác thực lẫn nhau. Nếu tôi đóng vai trò khách hàng trong tình huống được mô tả, điều gì sẽ xảy ra nếu tôi gửi thông tin đăng nhập / mật khẩu trong tiêu đề HTTP sau khi phiên SSL được thiết lập? Theo tôi thấy, thông tin này không thể bị chặn vì kết nối đã được bảo mật và máy chủ có thể dựa vào đó để nhận dạng của tôi. Liệu tôi có sai? Nhược điểm của cách tiếp cận như vậy so với xác thực lẫn nhau là gì (chỉ các vấn đề bảo mật là quan trọng, không phải sự phức tạp khi thực hiện)?