Jakie są dokładne różnice poziomów protokołu między SSL a TLS?

40

To jest głębokie nurkowanie techniczne po zadaniu pytania przeglądowego .

Jakie są różnice w protokole między SSL a TLS?
Czy naprawdę jest wystarczająca różnica, aby uzasadnić zmianę nazwy? (w porównaniu z nazywaniem go „SSLv4” lub SSLv5 w przypadku nowszych wersji TLS)

goodguys_activate
źródło
3
Podejrzewam, że jeśli chcesz naprawdę dogłębnie zrozumieć, musisz zacząć czytać specyfikacje. Sprawdź stronę wiki . Zawiera łącza do specyfikacji RFC i specyfikacji.
Zoredache,
7
@Zoredache, proszę nie używać „wiki” w skrócie „Wikipedia”.
Spiff

Odpowiedzi:

36

SSLv2 i SSLv3 są całkowicie różne (i oba są teraz uważane za niebezpieczne). SSLv3 i TLSv1.0 są bardzo podobne, ale mają kilka różnic.

Można uznać TLSv1.0 za SSLv3.1 (w rzeczywistości dzieje się to w ramach wymienianych rekordów). Po prostu łatwiej jest porównać TLSv1.0 z TLSv1.1 i TLSv1.2, ponieważ wszystkie zostały edytowane w IETF i mają mniej więcej tę samą strukturę. Edytowanie SSLv3 przez inną instytucję (Netscape) sprawia, że ​​zauważenie różnic jest nieco trudniejsze.

Oto kilka różnic, ale wątpię, czy mogę wymienić je wszystkie:

  • W ClientHellowiadomości (pierwsza wiadomość wysłana przez klienta w celu zainicjowania uzgadniania) wersja jest {3,0}dla SSLv3, {3,1}dla TLSv1.0 i {3,2}dla TLSv1.1.
  • W ClientKeyExchangeróżni.
  • MAC / HMAC różni się (TLS używa HMAC, podczas gdy SSL używa wcześniejszej wersji HMAC).
  • Wyprowadzanie klucza jest różne.
  • Dane aplikacji klienckiej można wysłać bezpośrednio po wysłaniu wiadomości SSL / TLS Finishedw SSLv3. W TLSv1 musi czekać na komunikat serwera Finished.
  • Lista zestawów szyfrów różni się (a niektóre z nich zostały zmienione z SSL_*na na TLS_*, zachowując ten sam numer identyfikacyjny).
  • Istnieją również różnice dotyczące nowego rozszerzenia renegocjacji .

Zdecydowanie poleciłbym książkę Erica Rescorli - SSL i TLS: Projektowanie i budowanie bezpiecznych systemów , Addison-Wesley, 2001 ISBN 0-201-61598-3 , jeśli naprawdę chcesz więcej szczegółów. Dowiedziałem się o niektórych punktach wspomnianych powyżej z tej książki. Autor od czasu do czasu wspomina o różnicach między SSLv3 a TLS (wersja 1.0 tylko w momencie pisania książki), wyjaśniając niektóre wiadomości SSL / TLS, ale potrzebujesz wyjaśnienia w tle tych wiadomości, aby mieć szansę zrozumieć ( i nie jest właściwe kopiowanie / wklejanie z tej książki tutaj).

Bruno
źródło
Wygląda na to, że rozszerzenia TLS dotyczą tylko TLS, a nie SSL, prawda? Na przykład klienci TLS mogą wysyłać rozszerzony ClientHellorekord, a klienci korzystający wyłącznie z protokołu SSL3 wysyłaliby tylko oryginał ClientHello.
culix
@culix, ogólnie mówiąc, to jest rzeczywiście poprawne (głównie dlatego, że rozszerzenia TLS są zdefiniowane w ramach IETF). SSLv3 mógł także mieć dodatkowe dane w swoim rekordzie ClientHello (tak samo jak TLS 1.0 i 1.1). (Poszukaj draft302.txti „ W celu zapewnienia zgodności do przodu ... ” porównaj z sekcjami 7.4.1.2 specyfikacji TLS). Aby poradzić sobie ze stosami, które tego nie obsługują, istnieją również obejścia, takie jak pseudo-pakiet szyfrów SCSV w rozszerzeniu renegocjacji.
Bruno
@Bruno, Rezerwuj link w dół .....
Pacerier
4

Po prostu powtórzę pozostałe odpowiedzi, ale może z nieco innym naciskiem.

Istniał protokół bezpiecznego gniazda, który był „własnością” firmy Netscape, który nazywał się SSL wersja 2. Nowa wersja z inną strukturą rekordów i ulepszeniami bezpieczeństwa również „posiadanymi” przez Netscape została wydana i nosiła nazwę SSL wersja 3. Wewnątrz protokołu w kilku places to binarne pole numeru wersji. W przypadku wersji SSL 3 to pole jest ustawione na 0x03 0x00, tj. Wersja 3.0. Następnie IETF postanowił stworzyć własny standard. Być może dlatego, że istniały pewne wątpliwości dotyczące własności intelektualnej dotyczące SSL, w tym to, czy „SSL” był znakiem towarowym Netscape, kiedy IETF wydało kolejną wersję tego protokołu, nadali mu własną nazwę: protokół Transport Layer Security lub TLS wersja 1.0. Format rekordu i ogólna struktura są identyczne i zgodne z SSL v3. Numer wersji binarnej został zmieniony na 0x03 0x01, a jak zauważyli inni, nastąpiły niewielkie zmiany w kryptografii. Od tamtej pory istnieje wersja TLS 1.1 i 1.2, dla której numery protokołów wewnętrznych to 0x03 0x02 i 0x03 0x03.

Ignorując SSLv2, była to po prostu zmiana nazwy wraz z normalnym dostrajaniem protokołu, które ma miejsce, gdy ludzie stają się mądrzejsi w kwestii bezpieczeństwa i wydajności.

James przywraca Monikę Polk
źródło
3

Zasadniczo jest to zmiana nazwy nowszej wersji protokołu. Uważam, że głównym powodem tego było odróżnienie go od starszego, nieformalnego standardu zaprojektowanego głównie przez Netscape po tym, jak stał się oficjalnym protokołem śledzenia standardów IETF.

Jak powiedziano w odpowiedziach na twoje wcześniejsze pytanie, nie oznacza to, że SSLv3 i TLSv1.0 są kompatybilne. Cytowanie z RFC 2246:

różnice między tym protokołem a SSL 3.0 nie są dramatyczne, ale są na tyle znaczące, że TLS 1.0 i SSL 3.0 nie współpracują ze sobą.

Myślę, że jeśli naprawdę chcesz poznać dokładne różnice w protokołach, musisz przeczytać standardy i porównać się.

Projekt protokołu SSLv3 z Netscape TLSv1.0 RFC 2246

Sven
źródło
@ SvenW Porównałbym dla siebie, ale to duże wyzwanie, nie jestem pewien, czy chcę się podjąć. Ten standard istnieje już od 10 lat. Z pewnością ktoś już dokonał porównania, z ładną grafiką, aby faceci tacy jak ja mogli to zrozumieć.
goodguys_activate
@ MakerOfThings7 Niestety to pytanie nie jest sprowadzone do wykresu kołowego. Jedyne, co można umieścić na wykresie, to szybkości szyfrowania lub (i rozciągam się tutaj) poziom bezpieczeństwa (gdzie SSLv3 to „-”, a TLS to „=” ...). można uzyskać, czytając specyfikację lub przynajmniej stronę Wikipedii (którą dostarczyłem w poprzednim pytaniu)
gWaldo
@ SvvenW Czy sam przeczytałeś i zrozumiałeś obie specyfikacje?
goodguys_activate
Nie, dlaczego powinienem? Nie jestem programistą piszącym oprogramowanie w oparciu o tę specyfikację, co stanowi jedyny powód, dla którego mogę to wymyślić. Jeśli potrzebuję użyć SSL / TLS, czytam dokument dotyczący OpenSSL itp., Który jest wystarczający dla użytkowników i administratorów.
Sven
@ SvenW Bez obrazy, ale będę to otwarte, dopóki nie otrzymam odpowiedzi od kogoś, kto przeczytał i zrozumiał specyfikację ... co jest rozsądne, biorąc pod uwagę moje pytanie.
goodguys_activate
0

Protokół szyfrowania SSL nosi teraz nazwę TLS, co daje dwie nazwy tego samego protokołu. Obecne oprogramowanie automatycznie negocjuje TLS w wersji 1 lub SSL w wersji 3. Z drugiej strony ludzie muszą zdecydować się na użycie bardziej rozpoznawalnego terminu SSL w porównaniu z oficjalnym oznaczeniem TLS.

SSL jest poprzednikiem TLS.

TLS i SSL szyfrują segmenty połączeń sieciowych w warstwie aplikacji, aby zapewnić bezpieczny transport od końca do końca w warstwie transportowej.

Aleroot
źródło
Więc to jest zmiana nazwy? Otóż ​​to?
goodguys_activate
tak TLS to nowsza wersja, TLS może w razie potrzeby przekształcić się w SSL3.
aleroot
3
Nie, to nie całkiem zmiana nazwy. TLSv1 jest kompatybilny z SSLv3 (i zostanie wycofany), ale niekoniecznie jest to prawda na odwrót. TLSv1 jest jak SSLv4. Uwaga: istnieje również wiele wersji TLS.
Philip Reynolds,
-2

Różnice:

  • TLS działa całkiem nad standardowym protokołem. Połączenie TLS zaczyna się jak niezaszyfrowana sesja standardowej usługi, ale w pewnym momencie zaczynają negocjować szyfrowanie. Wymaga to rozszerzenia standardowego protokołu do negocjacji.
  • Standardowe protokoły działają na bazie protokołu SSL. Połączenie SSL najpierw negocjuje szyfrowanie, a następnie uruchamia nad nim podstawowy protokół.
LatinSuD
źródło
To nie jest poprawne, mówisz o różnicy między uruchomieniem z SSL / TLS a przejściem na TLS w ramach protokołu za pomocą poleceń takich jak STARTTLS: stackoverflow.com/questions/3660798/...
Bruno