Які точні відмінності рівня протоколу між SSL та TLS?


40

Це технічне глибоке занурення після того, як було задано це оглядове питання.

Які протокольні відмінності між SSL та TLS?
Чи дійсно достатньо різниці для того, щоб вимагати зміни імені? (навпаки, називаючи його "SSLv4" або SSLv5 для новіших версій TLS)


3
Я підозрюю, що якщо ви хочете по-справжньому глибокого розуміння, вам доведеться почати читати характеристики. Перегляньте сторінку вікі . Він включає посилання на RFC та характеристики.
Zoredache

7
@Zoredache, не використовуйте "wiki" як "Вікіпедію".
Spiff

Відповіді:


36

SSLv2 і SSLv3 абсолютно різні (і обидва зараз вважаються небезпечними). SSLv3 і TLSv1.0 дуже схожі, але мають кілька відмінностей.

Ви можете розглянути TLSv1.0 як SSLv3.1 (адже саме це відбувається в обмінених записах). Просто простіше порівняти TLSv1.0 з TLSv1.1 і TLSv1.2, оскільки всі вони були відредаговані в IETF і дотримуються більш-менш тієї ж структури. Під час редагування SSLv3 іншою установою (Netscape) дещо складніше помітити відмінності.

Ось кілька відмінностей, але я сумніваюся, що я можу перерахувати їх усі:

  • У ClientHelloповідомленні (перше повідомлення, надіслане клієнтом, щоб ініціювати рукостискання), версія призначена {3,0}для SSLv3, {3,1}для TLSv1.0 та {3,2}для TLSv1.1.
  • У ClientKeyExchangeрізний.
  • MAC / HMAC відрізняється (TLS використовує HMAC, тоді як SSL використовує більш ранню версію HMAC).
  • Ключове походження відрізняється.
  • Дані клієнтської програми можна надсилати відразу після відправлення повідомлення SSL / TLS Finishedв SSLv3. У TLSv1 він повинен дочекатися Finishedповідомлення сервера .
  • Перелік набір шифрів відрізняється (і деякі з них були перейменовані з SSL_*на TLS_*, зберігаючи той самий ідентифікаційний номер).
  • Існують також розбіжності щодо нового розширення переговорів .

Я настійно рекомендую книгу Еріка Рескорла - SSL та TLS: Проектування та побудова захищених систем , Аддісон-Веслі, 2001 ISBN 0-201-61598-3 , якщо ви дійсно хочете більше деталей. Я дізнався про деякі моменти, згадані вище з цієї книги. Автор час від часу згадує про різницю між SSLv3 та TLS (v1.0 лише на той час, коли книга написана), коли пояснюється деяке повідомлення SSL / TLS, але вам потрібно фонове пояснення цих повідомлень, щоб мати можливість зрозуміти ( і не доцільно копіювати / вставляти сюди з цієї книги).


Схоже, розширення TLS стосуються лише TLS, а не SSL, правда? Так, наприклад, клієнти TLS можуть надсилати розширений ClientHelloзапис ' ', тоді як клієнти, що лише для SSL3, коли-небудь надсилають оригінали ' ClientHello'.
кулікс

@culix, загалом кажучи, це дійсно правильно (головним чином тому, що розширення TLS визначені в рамках IETF). SSLv3 також міг мати додаткові дані у своєму записі ClientHello (те саме, що і TLS 1.0 та 1.1). (Шукайте draft302.txtта " В інтересах сумісності вперед ... ", порівняйте з розділами 7.4.1.2 у специфікаціях TLS). Щоб впоратися зі стеками, які не підтримують це, також існують шляхи вирішення, такі як псевдо-шифрний пакет SCSV у розширенні для повторних переговорів.
Бруно

@Bruno, Книга посилання вниз .....
Pacerier

4

Я просто повторюю інші відповіді, але, можливо, з дещо іншим наголосом.

Існував протокол захищених сокетів, який "належав" Netscape, який називався SSL версія 2. Нова версія з різною структурою запису та поліпшеннями безпеки, також "належить" Netscape, була випущена і названа SSL версія 3. Всередині протоколу в декількох місця - це номер номера двійкової версії. Для SSL версії 3 це поле встановлено на 0x03 0x00, тобто версію 3.0. Тоді IETF вирішив створити власний стандарт. Можливо, тому, що існували певні невизначеності щодо інтелектуальної власності щодо SSL, зокрема, чи "SSL" була торговою маркою Netscape, коли IETF випустив чергову версію цього протоколу, вони дали їй своє ім'я: протокол безпеки транспортного шару або TLS версії 1.0. Формат запису та загальна структура ідентичні та відповідають SSL v3. Номер двійкової версії було відновлено до 0x03 0x01, і, як зазначають інші, були незначні зміни криптовалют. З тих пір існували версії 1.1 та 1.2 TLS, для яких внутрішні номери протоколів - 0x03 0x02 та 0x03 0x03.

Ігноруючи SSLv2, в основному це була лише зміна імені, а також звичайна настройка протоколу, яка відбувається, коли люди стають розумнішими щодо безпеки та продуктивності.


3

По суті, це не що інше, як зміна імені для нової версії протоколу. Я вважаю, що основною причиною цього було відмежування його від старого, неофіційного стандарту, головним чином розробленого Netscape після того, як він став офіційним протоколом треку стандартів IETF.

Як було сказано у відповідях на попереднє запитання, це не означає, що SSLv3 та TLSv1.0 сумісні. Посилаючись на RFC 2246:

відмінності між цим протоколом та SSL 3.0 не є суттєвими, але вони досить вагомі, що TLS 1.0 та SSL 3.0 не взаємодіють.

Я думаю, якщо ви дійсно хочете знати точні відмінності в протоколах, ви повинні прочитати стандарти і порівняти себе.

Чернетка протоколу SSLv3 від Netscape TLSv1.0 RFC 2246


@SvenW Я б порівнював для себе, але це велике завдання, я не впевнений, що хочу взяти на себе. Цей стандарт існує вже 10 років. Напевно, хтось уже робив порівняння, з гарною графікою, щоб хлопці, як я, могли це зрозуміти.
goodguys_activate

@ MakerOfThings7 На жаль, це питання не те, що можна звести до кругової діаграми. Єдині речі, які можна поставити на графік, - це бітрейт-шифрування шифрування або (і я тут розтягуюсь) рівень наданої безпеки (де SSLv3 - "-", а TLS - "=" ...). Ви можете отримати, отримавши фактичні характеристики, або принаймні сторінку Вікіпедії (яку я вам надав у попередньому запитанні)
gWaldo

@SvenW Чи читали ви та розуміли обидві характеристики самостійно?
goodguys_activate

Ні. Чому я повинен? Я не розробник програмного забезпечення, яке пише цю специфікацію, і це єдина причина, яку я можу придумати. Якщо мені потрібно використовувати SSL / TLS, я читаю документ для OpenSSL тощо, що достатньо для користувачів та адміністраторів.
Свен

@SvenW Без образи, але я буду тримати це відкритим, поки не отримаю відповідь від того, хто читав і розумів характеристики ... що розумно з огляду на моє запитання.
goodguys_activate

0

Протокол шифрування SSL тепер називається TLS, в результаті чого два імені для одного протоколу. Поточне програмне забезпечення буде узгоджувати TLS версії 1 або SSL версії 3 автоматично. Люди, з іншого боку, повинні вирішити між використанням більш впізнаваного терміна SSL проти офіційного позначення TLS.

SSL є попередником TLS.

TLS і SSL зашифровують сегменти мережевих з'єднань на рівні програми, щоб забезпечити безпечний транзит від кінця до кінця на транспортному шарі.


Так це зміна імені? Це воно?
goodguys_activate

так, TLS - це нова версія, TLS може перетворити себе в SSL3, якщо це необхідно.
aleroot

3
Ні, це не зовсім зміна імені. TLSv1 сумісний із SSLv3 (і буде резервним), але це не обов'язково вірно навпаки. TLSv1 - це як SSLv4. Примітка: також є кілька версій TLS.
Філіп Рейнольдс

-2

Відмінності:

  • TLS працює цілком поверх стандартного протоколу. З'єднання TLS починається як незашифрований сеанс стандартної послуги, але в якийсь момент вони починають узгоджувати шифрування. Для цього потрібно розширити стандартний протокол.
  • Стандартні протоколи запускаються поверх SSL. З'єднання SSL спочатку узгоджує шифрування, потім запускає базовий протокол над ним.

Це не правильно, ви говорите про різницю між початком SSL / TLS та переходом на TLS в рамках протоколу за допомогою таких команд, як STARTTLS: stackoverflow.com/questions/3660798/…
Бруно
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.