Sự khác biệt cấp độ giao thức chính xác giữa SSL và TLS là gì?


40

Đây là một kỹ thuật lặn sâu sau khi câu hỏi tổng quan này được hỏi.

Sự khác biệt về giao thức giữa SSL và TLS là gì?
Có thực sự đủ sự khác biệt để đảm bảo thay đổi tên? (so với việc gọi nó là "SSLv4" hoặc SSLv5 cho các phiên bản TLS mới hơn)


3
Tôi nghi ngờ nếu bạn muốn có một sự hiểu biết thực sự sâu sắc, bạn sẽ phải bắt đầu đọc thông số kỹ thuật. Kiểm tra trang wiki . Nó bao gồm các liên kết đến RFC và thông số kỹ thuật.
Zoredache

7
@Zoredache, vui lòng không sử dụng "wiki" là viết tắt của "Wikipedia".
Spiff

Câu trả lời:


36

SSLv2 và SSLv3 hoàn toàn khác nhau (và cả hai hiện được coi là không an toàn). SSLv3 và TLSv1.0 rất giống nhau, nhưng có một vài điểm khác biệt.

Bạn có thể coi TLSv1.0 là SSLv3.1 (thực tế đó là những gì xảy ra trong các hồ sơ được trao đổi). Việc so sánh TLSv1.0 với TLSv1.1TLSv1.2 chỉ đơn giản hơn vì tất cả chúng đều được chỉnh sửa trong IETF và theo cùng một cấu trúc. SSLv3 được chỉnh sửa bởi một tổ chức khác (Netscape), điều này làm cho việc phát hiện sự khác biệt trở nên khó khăn hơn một chút.

Dưới đây là một vài điểm khác biệt, nhưng tôi nghi ngờ tôi có thể liệt kê tất cả:

  • Trong ClientHellotin nhắn (tin nhắn đầu tiên được gửi bởi khách hàng, để bắt đầu bắt tay), phiên bản {3,0}dành cho SSLv3, {3,1}cho TLSv1.0 và {3,2}cho TLSv1.1.
  • Sự ClientKeyExchangekhác biệt.
  • MAC / HMAC khác nhau (TLS sử dụng HMAC trong khi SSL sử dụng phiên bản trước đó của HMAC).
  • Các dẫn xuất quan trọng khác nhau.
  • Dữ liệu ứng dụng khách có thể được gửi thẳng sau khi gửi Finishedtin nhắn SSL / TLS trong SSLv3. Trong TLSv1, nó phải chờ Finishedtin nhắn của máy chủ .
  • Danh sách các bộ mật mã khác nhau (và một số trong số chúng đã được đổi tên từ SSL_*sang TLS_*, giữ cùng một số id).
  • Cũng có những khác biệt liên quan đến việc gia hạn đàm phán lại mới .

Tôi rất muốn giới thiệu cuốn sách của Eric Rescorla - SSL và TLS: Thiết kế và xây dựng hệ thống bảo mật , Addison-Wesley, 2001 ISBN 0-201-61598-3 , nếu bạn thực sự muốn biết thêm chi tiết. Tôi đã tìm hiểu về một số điểm được đề cập ở trên từ cuốn sách này. Đôi khi tác giả đề cập đến sự khác biệt giữa SSLv3 và TLS (chỉ v1.0 tại thời điểm cuốn sách được viết) khi giải thích một số thông điệp SSL / TLS, nhưng bạn cần giải thích nền về những thông điệp này để có cơ hội hiểu ( và nó không thích hợp để sao chép / dán từ cuốn sách này ở đây).


Có vẻ như Tiện ích mở rộng TLS chỉ áp dụng cho TLS chứ không phải SSL, đúng không? Vì vậy, ví dụ, khách hàng TLS có thể gửi ClientHellobản ghi ' ' mở rộng , trong khi khách hàng chỉ sử dụng SSL3 sẽ chỉ gửi bản gốc ' ClientHello'.
kết hợp

@culix, nói chung, điều đó thực sự chính xác (chủ yếu là do các tiện ích mở rộng TLS được xác định trong khuôn khổ của IETF). SSLv3 cũng có thể có thêm dữ liệu trong bản ghi ClientHello của mình (giống như TLS 1.0 và 1.1). (Tìm kiếm draft302.txtvà "Vì lợi ích của khả năng tương thích về phía trước ... ", hãy so sánh với các phần 7.4.1.2 trong thông số kỹ thuật của TLS). Để đối phó với các ngăn xếp không hỗ trợ điều này, cũng có cách giải quyết như bộ mật mã giả SCSV trong phần mở rộng đàm phán lại.
Bruno

@Bruno, Liên kết sách xuống .....
Pacerier

4

Tôi sẽ chỉ lặp lại các câu trả lời khác nhưng có lẽ với một sự nhấn mạnh hơi khác.

Có một giao thức ổ cắm an toàn được Netscape "sở hữu", được gọi là SSL phiên bản 2. Một phiên bản mới với cấu trúc bản ghi khác và các cải tiến bảo mật cũng được Netscape "sở hữu" và được gọi là SSL phiên bản 3. Bên trong giao thức trong một số giao thức địa điểm là một trường số phiên bản nhị phân. Đối với SSL phiên bản 3, trường này được đặt thành 0x03 0x00, tức là phiên bản 3.0. Sau đó, IETF quyết định tạo ra tiêu chuẩn của riêng mình. Có thể do có một số sự không chắc chắn về sở hữu trí tuệ về SSL, bao gồm cả "SSL" có phải là nhãn hiệu Netscape hay không, khi IETF phát hành phiên bản tiếp theo của giao thức này, họ đặt tên riêng là: Giao thức bảo mật lớp vận chuyển hoặc phiên bản TLS 1.0. Định dạng bản ghi và cấu trúc tổng thể giống hệt và phù hợp với SSL v3. Số phiên bản nhị phân được sửa đổi thành 0x03 0x01 và như những người khác đã lưu ý rằng có một số thay đổi nhỏ về tiền điện tử. Kể từ đó đã có TLS phiên bản 1.1 và 1.2, trong đó các số giao thức nội bộ là 0x03 0x02 và 0x03 0x03.

Bỏ qua SSLv2, về cơ bản, đây chỉ là một sự thay đổi tên cùng với việc tinh chỉnh giao thức thông thường xảy ra khi mọi người trở nên thông minh hơn về bảo mật và hiệu suất.


3

Về cơ bản, nó không có gì ngoài một sự thay đổi tên cho một phiên bản mới hơn của giao thức. Tôi tin rằng lý do chính cho điều đó là để phân biệt nó với tiêu chuẩn cũ, không chính thức chủ yếu được thiết kế bởi Netscape sau khi nó trở thành giao thức theo dõi tiêu chuẩn IETF chính thức.

Như đã nói trong các câu trả lời cho câu hỏi trước đó của bạn, điều này không có nghĩa là SSLv3 và TLSv1.0 tương thích. Trích dẫn từ RFC 2246:

sự khác biệt giữa giao thức này và SSL 3.0 là không đáng kể, nhưng chúng đủ quan trọng để TLS 1.0 và SSL 3.0 không tương tác với nhau.

Tôi đoán nếu bạn thực sự muốn biết sự khác biệt chính xác trong các giao thức, bạn phải đọc các tiêu chuẩn và so sánh chính mình.

Dự thảo giao thức SSLv3 từ Netscape TLSv1.0 RFC 2246


@SvenW Tôi sẽ tự so sánh nhưng đó là một thách thức lớn Tôi không chắc mình muốn thực hiện. Tiêu chuẩn đó đã được khoảng 10 năm nay. Chắc chắn ai đó đã làm so sánh, với đồ họa đẹp để những kẻ như tôi có thể hiểu nó.
goodguys_activate

@ MakerOfThings7 Thật không may, câu hỏi này không phải là câu hỏi có thể rút gọn thành biểu đồ hình tròn. Điều duy nhất có thể được đưa vào biểu đồ là tốc độ bit mã hóa hoặc (và tôi đang kéo dài ở đây) mức độ bảo mật được cấp (trong đó SSLv3 là "-" và TLS là "=" ...) có thể đạt được bằng cách thực sự đọc thông số kỹ thuật, hoặc ít nhất là trang Wikipedia (mà tôi đã cung cấp cho bạn trong câu hỏi trước.)
gWaldo

@SvenW Bạn đã đọc và hiểu cả thông số kỹ thuật chưa?
goodguys_activate

Không. Tại sao tôi nên? Tôi không phải là một nhà phát triển viết phần mềm chống lại đặc điểm kỹ thuật này, đó là lý do duy nhất để làm điều đó mà tôi có thể nghĩ ra. Nếu tôi cần sử dụng SSL / TLS, tôi đã đọc tài liệu cho OpenSSL, v.v., điều đó là đủ cho người dùng và quản trị viên.
Sven

@SvenW Không xúc phạm, nhưng tôi sẽ giữ điều này mở cho đến khi tôi nhận được phản hồi từ một người đọc và hiểu thông số kỹ thuật ... đó là điều hợp lý cho câu hỏi của tôi.
goodguys_activate

0

Giao thức mã hóa SSL hiện được đặt tên là TLS, dẫn đến hai tên cho cùng một giao thức. Phần mềm hiện tại sẽ tự động đàm phán TLS phiên bản 1 hoặc SSL phiên bản 3. Mặt khác, con người phải quyết định giữa việc sử dụng thuật ngữ SSL dễ nhận biết hơn so với chỉ định TLS chính thức.

SSL là tiền thân của TLS.

TLS và SSL mã hóa các phân đoạn kết nối mạng tại Lớp ứng dụng để đảm bảo vận chuyển từ đầu đến cuối an toàn tại Lớp vận chuyển.


Vì vậy, đó là một sự thay đổi tên? Đó là nó?
goodguys_activate

có TLS là phiên bản mới hơn, TLS có thể tự chuyển đổi thành SSL3 nếu cần thiết.
aleroot

3
Không, đó không phải là một sự thay đổi tên. TLSv1 có thể tương thích với SSLv3 (và sẽ dự phòng) nhưng điều đó không nhất thiết đúng theo cách khác. TLSv1 giống như SSLv4. Lưu ý: cũng có nhiều phiên bản TLS.
Philip Reynold

-2

Sự khác biệt:

  • TLS chạy khá trên giao thức chuẩn. Kết nối TLS bắt đầu giống như một phiên không được mã hóa của một dịch vụ tiêu chuẩn, nhưng tại một số điểm, chúng bắt đầu đàm phán mã hóa. Nó đòi hỏi phải mở rộng giao thức chuẩn cho cuộc đàm phán này.
  • Các giao thức chuẩn chạy trên SSL. Một kết nối SSL trước tiên sẽ thương lượng mã hóa, sau đó chạy giao thức cơ bản qua nó.

Điều đó không chính xác, bạn đang nói về sự khác biệt giữa bắt đầu với SSL / TLS và chuyển sang TLS trong giao thức thông qua các lệnh như STARTTLS: stackoverflow.com/questions/3660798/ Lỗi
Bruno
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.