it-swarm-vi.com

Tại sao có thể đánh hơi được yêu cầu HTTPS / SSL?

Tôi chưa quen với lĩnh vực yêu cầu và bảo mật HTTP và tất cả những thứ hay ho đó, nhưng từ những gì tôi đã đọc, nếu bạn muốn các yêu cầu và phản hồi của mình được mã hóa, hãy sử dụng HTTPS và SSL, và bạn sẽ ổn. Ai đó trong một câu hỏi trước đã đăng một liên kết đến ứng dụng này http://www.charlesproxy.com/ cho thấy thực sự có thể đánh hơi các yêu cầu HTTPS và xem yêu cầu và trả lời trong văn bản PLAIN.

Tôi đã thử điều này với thông tin đăng nhập facebook.com và tôi thực sự có thể thấy tên người dùng VÀ mật khẩu của mình ở dạng văn bản thuần túy. Thật dễ dàng . Chuyện gì đang xảy ra vậy? Tôi nghĩ đó là toàn bộ quan điểm của HTTPS - để mã hóa các yêu cầu và phản hồi?

48
bitmoe

Điều này được giải thích trong trang của họ trên ủy quyền SSL , có lẽ không có đủ giải thích.

Theo định nghĩa, proxy là một man-in-the-middle : máy khách kết nối với proxy và proxy kết nối với máy chủ.

SSL thực hiện hai điều:

  • Nó đảm bảo tính bảo mật và tính toàn vẹn của kết nối được thiết lập.
  • Nó thực hiện một số xác minh về người mà bạn đang kết nối.

Đây là phần thứ hai quan trọng và dường như bị hỏng ở đây: bạn đang ngồi trên trình duyệt của mình và ngạc nhiên rằng trình duyệt của bạn đang kết nối với proxy trong khi bạn mong đợi nó sẽ kết nối với Facebook. Về mặt kỹ thuật, proxy không đánh hơi lưu lượng HTTPS, nó chuyển tiếp nó.

Trình duyệt của bạn biết rằng nó được kết nối với Facebook vì trang web có chứng chỉ có nghĩa là tôi thực sự www.facebook.com TIẾNG. Mật mã khóa công khai , có nghĩa là tôi sẽ không vào được đây, đảm bảo rằng chỉ người giữ khóa riêng mới có thể bắt đầu kết nối hợp lệ với chứng chỉ này. Đó chỉ là một nửa trận chiến: bạn chỉ có yêu cầu của máy chủ rằng đó thực sự là www.facebook.com và không randomhijacker.com. Những gì trình duyệt của bạn làm là kiểm tra thêm rằng chứng chỉ đã được xác thực bởi cơ quan chứng nhận . Trình duyệt hoặc hệ điều hành của bạn đi kèm với một danh sách các cơ quan cấp chứng chỉ mà nó tin tưởng. Một lần nữa, mật mã khóa công khai đảm bảo rằng chỉ CA mới có thể phát chứng chỉ mà trình duyệt của bạn chấp nhận.

Khi bạn kết nối với proxy, trình duyệt của bạn sẽ nhận được chứng chỉ ghi rằng tôi thực sự www.facebook.com TIẾNG. Nhưng chứng chỉ này không được ký bởi CA mà trình duyệt của bạn tin tưởng theo mặc định. Vì thế:

  • hoặc bạn đã nhận được cảnh báo về kết nối HTTPS không an toàn mà bạn đã nhấp qua để xem sự tập trung tại https://www.facebook.com/;
  • hoặc bạn đã thêm CA đã ký chứng chỉ proxy (Chứng chỉ CA của Charles Charles) vào danh sách CA mà trình duyệt của bạn tin tưởng.

Dù bằng cách nào, bạn đã nói với trình duyệt của mình tin tưởng proxy. Nó cũng vậy. Kết nối SSL không an toàn nếu bạn bắt đầu tin tưởng người lạ ngẫu nhiên.

Đề nghị đọc để biết thêm thông tin:

Bạn không thể ngắt https trừ khi bạn có quyền truy cập vào phiên khóa đối xứng . Nói tóm lại, https phiên hoạt động theo cách này:

  1. Máy khách và máy chủ trao đổi một số thông tin ban đầu
  2. Sử dụng thông tin này, khách hàng có thể xác thực máy chủ , đảm bảo rằng đó là giá trị tin cậy
  3. Máy khách sử dụng máy chủ khóa công khai để gửi cho anh ta một bí mật được mã hóa
  4. Máy chủ giải mã bí mật này bằng cách sử dụng khóa riêng (chỉ máy chủ được xác thực mới có thể làm điều đó!)
  5. Cả máy khách và máy chủ đều sử dụng bí mật để tạo cục bộ khóa đối xứng phiên
  6. Bây giờ họ có thể nói chuyện với nhau một cách an toàn vì không ai biết khóa đối xứng phiên của họ

Nếu bằng cách nào đó, bên thứ ba có thể có quyền truy cập vào bí mật được chia sẻ, anh ta cũng sẽ có thể tạo khóa đối xứng phiên và giải mã liên lạc.

1