Tại sao Wireshark hiển thị Phiên bản TLS 1.2 tại đây thay vì TLS 1.3?


8

Tôi đang truy cập máy chủ thử nghiệm TLS 1.3 " https://tls13.pinterjann.is " thông qua ứng dụng java http sử dụng TLS 1.3. Mọi thứ dường như hoạt động tốt khi phản hồi html chỉ ra:

Phản hồi HTML

Điều tôi không hiểu: Tại sao Wireshark hiển thị trong tổng quan Giao thức TLSv1.3 nhưng trong chi tiết Phiên bản TLS 1.2?

Wireshark chỉ hiển thị Phiên bản sai hay tôi thực sự đang sử dụng TLS 1.2?

Cảm ơn trước sự ủng hộ của bạn.

Khách hàng của Wireshark Xin chào Wireshark Wireshark ClientHello 2 Máy chủ Wireshark


Bản sao của Wireshark có được cập nhật không?
Jesse P.

1
Có, tôi đang sử dụng phiên bản Wireshark 2.6.5.
dùng120513

1
Thật thú vị, nó nói 1.3 trên một dòng nhưng sau đó nói 1.0 trên một dòng khác, sau đó là 1.2 trên một dòng khác. Bạn đã thử một tiện ích chụp khác, chẳng hạn như Fiddler?
Jesse P.

Không, tôi đã không thử một công cụ chụp khác. Fiddler có hỗ trợ hiển thị tin nhắn TLS 1.3 không?
dùng120513

BTW: Tôi tìm thấy bản chụp này cloudshark.org/captures/64d433b1585a trên internet, nơi điều tương tự xảy ra. Tôi đoán đó là một sự không chính xác trong cách Wireshark hiển thị phiên bản trong phần chi tiết.
dùng120513

Câu trả lời:


14

Xin lỗi, vì sự nhầm lẫn, tôi đã thiếu ngữ nghĩa TLS 1.3 chính xác: Ví dụ: trong Client Hello, trường "phiên bản" phải chứa giá trị cố định 0x0303 (TLS 1.2), trong khi phiên bản ưa thích được chứa trong tiện ích mở rộng "được hỗ trợ" phiên bản ".

Từ RFC 8446 (thông số TLS 1.3):

struct {
      ProtocolVersion legacy_version = 0x0303;    /* TLS v1.2 */
      Random random;
      opaque legacy_session_id<0..32>;
      CipherSuite cipher_suites<2..2^16-2>;
      opaque legacy_compression_methods<1..2^8-1>;
      Extension extensions<8..2^16-1>;
  } ClientHello;

legacy_version: Trong các phiên bản trước của TLS, trường này được sử dụng để đàm phán phiên bản và thể hiện số phiên bản cao nhất được khách hàng hỗ trợ. Kinh nghiệm đã chỉ ra rằng nhiều máy chủ không thực hiện đúng việc đàm phán phiên bản, dẫn đến "không dung nạp phiên bản" trong đó máy chủ từ chối một ClientHello có thể chấp nhận khác với số phiên bản cao hơn số phiên bản hỗ trợ. Trong TLS 1.3, ứng dụng khách biểu thị các tùy chọn phiên bản của nó trong phần mở rộng "hỗ trợ_versions" (Mục 4.2.1) và trường legacy_version PHẢI được đặt thành 0x0303, là số phiên bản cho TLS 1.2. TLS 1. 3 ClientHellos được xác định là có legacy_version là 0x0303 và phần mở rộng được hỗ trợ có mặt với 0x0304 là phiên bản cao nhất được chỉ định trong đó. (Xem Phụ lục D để biết chi tiết về khả năng tương thích ngược.)

Điều này đồng ý với những gì Wireshark hiển thị:

Phiên bản được hỗ trợ của Wireshark


1
Đẹp tìm thấy. Chúc mừng.
Jesse P.

1
Điều này đã được đề cập 4 ngày trước trong một bài giảng ở 35C3: media.ccc.de/v/NH Vấn đề "không dung nạp phiên bản" dường như khá phổ biến trên các thiết bị "doanh nghiệp"
cg909

5

Tại sao Wireshark hiển thị trong tổng quan Giao thức TLSv1.3 nhưng trong chi tiết Phiên bản TLS 1.2?

Wireshark báo cáo TLS 1.3 trong cột giao thức do Server Hello chứa tiện ích mở rộng Phiên bản được hỗ trợ với TLS 1.3.

Hãy nhớ lại rằng các phiên TLS bắt đầu bằng một cái bắt tay để đàm phán các tham số như phiên bản giao thức và mật mã. Máy khách gửi tin nhắn bắt tay Client Xin chào trong bản ghi TLS có chứa:

  • Bản ghi TLS - Phiên bản: phiên bản TLS được hỗ trợ tối thiểu (trong TLS 1.2 trở về trước). Trong TLS 1.3, trường này không thực sự được sử dụng và PHẢI là 0x0303 ("TLS 1.2") hoặc 0x602 ("TLS 1.0") cho mục đích tương thích. Tham khảo: RFC 8446 (trang 79)
  • Xin chào khách hàng - Phiên bản: phiên bản TLS được hỗ trợ tối đa (trong TLS 1.2 trở về trước). Trong TLS 1.3, trường này không được sử dụng nhưng PHẢI được đặt thành 0x0303 ("TLS 1.2"). Tham khảo: RFC 8446 (4.1.2. Xin chào khách hàng)
  • Xin chào khách hàng - Tiện ích mở rộng phiên bản được hỗ trợ: danh sách các phiên bản được hỗ trợ. Đây là giá trị duy nhất được sử dụng bởi các triển khai TLS 1.3 (có thể đồng ý TLS 1.3, 1.2 hoặc các phiên bản khác). Tham khảo: RFC 8446 (4.2.1. Phiên bản được hỗ trợ)

Máy chủ gửi tin nhắn bắt tay Server Hello với:

  • Máy chủ Hello - Phiên bản: phiên bản đã thương lượng (đối với TLS 1.2 trở về trước). Nếu TLS 1.3 được đàm phán, nó PHẢI được đặt thành 0x0303 ("TLS 1.2").
  • Máy chủ Xin chào - Phiên bản được hỗ trợ: phiên bản thương lượng duy nhất (đối với TLS 1.3). Không thể được sử dụng để đàm phán các phiên bản trước đó.

Vì vậy, trong TLS 1.2, máy khách sẽ gửi một loạt các phiên bản được hỗ trợ trong khi máy khách TLS 1.3 gửi danh sách các phiên bản được hỗ trợ. Sau đó, máy chủ sẽ chọn một phiên bản duy nhất, nhưng với mục đích tương thích, nó sẽ sử dụng một trường mới để chọn TLS 1.3 hoặc mới hơn.

(Ngay cả khi khách hàng quảng cáo hỗ trợ cho một số phiên bản (ví dụ: thông qua phiên bản bản ghi TLS có chứa "TLS 1.0"), nó vẫn có thể không bắt tay mặc dù nếu máy chủ đồng ý với phiên bản thấp này.)

Một điều khác cần lưu ý: Wireshark cố gắng giải thích một gói ngay lập tức khi nhận được. Tại thời điểm Client Hello được nhận, nó sẽ không biết phiên bản cuối cùng và do đó giả sử Phiên bản Bản ghi TLS. Khi nhận được Máy chủ Hello, nó có thể điều chỉnh phiên bản phù hợp:

$ tshark -r test/captures/tls13-rfc8446.pcap 
    1   0.000000     10.9.0.1 → 10.9.0.2     TLSv1 304 Client Hello
    2   0.002634     10.9.0.2 → 10.9.0.1     TLSv1.3 658 Server Hello, Change Cipher Spec, Application Data
    3   0.005266     10.9.0.1 → 10.9.0.2     TLSv1.3 130 Change Cipher Spec, Application Data
    4   0.005772     10.9.0.2 → 10.9.0.1     TLSv1.3 468 Application Data
...

Trong phân tích hai đường chuyền (bao gồm GUI Wireshark), phiên bản đã thỏa thuận sẽ được biết khi in kết quả của đường chuyền thứ hai:

$ tshark -r test/captures/tls13-rfc8446.pcap -2
    1   0.000000     10.9.0.1 → 10.9.0.2     TLSv1.3 304 Client Hello
    2   0.002634     10.9.0.2 → 10.9.0.1     TLSv1.3 658 Server Hello, Change Cipher Spec, Application Data
    3   0.005266     10.9.0.1 → 10.9.0.2     TLSv1.3 130 Change Cipher Spec, Application Data
    4   0.005772     10.9.0.2 → 10.9.0.1     TLSv1.3 468 Application Data
...

Kiểm tra chụp được sử dụng ở trên: https://github.com/wireshark/wireshark/blob/master/test/captures/tls13-rfc8446.pcap

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.