Як працює SSL/TLS Handshake

watch 20s
views 2

17:06, 02.12.2022

Зміст статті
arrow

  • Шифрування даних
  • Як відбувається SSL/TLS-рукотиснення
  • Алгоритм Діффі-Геллмана в TLS Handshake 1.2
  • Шифронабори TLS 1.3
  • Висновок

SSL/TLS Handshake – "рукостискання" між сервером і клієнтом. Простіше кажучи – ідентифікація один одного. Відбувається під час HTTPS-з'єднання всередині зашифрованого тунелю SSL/TLS, який гарантує безпеку як серверу, так і клієнту. Після успішної ідентифікації генерується секретний сеансовий ключ, який забезпечує захищений зв'язок – він слугує одночасно як для шифрування, так і для дешифрування переданих даних.

Шифрування даних

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

Симетричне шифрування запобігає можливості прочитання даних сторонніми особами. Крім того, навіть у разі перехоплення пакетів їх не вдасться змінити, оскільки кожне повідомлення містить код MAC, за допомогою яких перевіряється цілісність даних.

Як відбувається SSL/TLS-рукотиснення

Якщо уявити SSL-рукостискання як діалог між сервером і клієнтом, то процес матиме такий вигляд:

  1. Клієнт звертається до сервера з проханням встановити безпечне з'єднання і пропонує набір шифрів, які "розуміє", а також сумісну версію SSL/TLS.
  2. Сервер перевіряє надісланий шифронабір, порівнює зі своїм і надсилає відповідь клієнту з файлом сертифіката і відкритим ключем.
  3. Клієнт перевіряє сертифікат і, якщо все гаразд, пропонує перевірити закритий ключ. Для цього він його генерує і шифрує спільний секретний ключ за допомогою надісланого раніше відкритого ключа сервера.
  4. Сервер приймає ключ, перевіряє його своїм закритим ключем. Далі він створює головний секрет, який і буде використовуватися для шифрування обмінюваної інформації.

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

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

Як працює ssl/tls handshake

Алгоритм Діффі-Геллмана в TLS Handshake 1.2

Версія протоколу TLS 1.2 з'явилася 2008 року як велике оновлення протоколу 1.1 з поліпшеним механізмом узгодження сторонами списків підтримуваних методів шифрування. Має такий вигляд:

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256


Тут:

  • TLS – протокол передавання даних;
  • ECDHE – тимчасовий (ефемерний) ключ;
  • ECDSA – алгоритм автентифікації;
  • AES 128 GCM – алгоритм симетричного шифрування;
  • SHA256 – алгоритм хешування даних.

Це і є алгоритм Діффі-Геллмана, але на сьогодні він уже вважається застарілим і рідко де використовується.

Шифронабори TLS 1.3

Ця версія протоколу побачила світ у 2018 році і зазнала низки істотних поліпшень:

  • розділено процеси узгодження ключів, аутентифікацій і набори шифрування;
  • додано правило, яке стверджує обов'язковість наявності цифрового підпису;
  • впроваджено функцію отримання ключа HKDF;
  • прискорено процеси з'єднання;
  • заборонено стиснення даних, шифри без автентифікації повідомлень і неузгодження, які забезпечували певну вразливість попередньої версії протоколу;
  • додали потоковий шифр ChaCha20 з MAC кодом Poly1305, ефективні алгоритми цифрового підпису Ed25519 і Ed448, а також відповідні їм протоколи обміну ключами Curve25519 і Curve448.

Виглядає шифронабір рукостискання TLS 1.3 так:

TLS_AES_256_GCM_SHA384


Відповідно, тут:

  • TLS – протокол;
  • AES-256 у режимі GCM – алгоритм шифрування та аутентифікації з додатковими даними (AEAD);
  • SHA384 – алгоритм функції формування хешованого ключа (HKFD).

Протокол TLS 1.3 зазнав величезної кількості змін і поліпшень, що позитивно позначилося на безпеці та продуктивності процесів Handshake, а сама аутентифікація стала займати значно менше часу. Швидкість рукостискання збільшилася майже в 2 рази, водночас протокол позбувся кількох вразливостей, які раніше доставляли чимало проблем системним адміністраторам.

Висновок

Найбезпечніший варіант – криптографічний протокол TLS 1.3, але він має специфічну зворотну сумісність. Під час встановлення з'єднання клієнт і сервер обмінюються версіями протоколу і вибирається той, з яким можуть працювати обидві сторони. Однак на практиці виявилося, що деяка кількість серверів на старому протоколі TLS 1.2 миттєво обривали з'єднання в разі, якщо процес "рукостискання" повинен був відбутися через протокол TLS 1.3. Цей феномен було названо осифікацією, і через нього в перші роки виникали проблеми з впровадженням нового протоколу. На сьогодні ця проблема не зустрічається практично ніде, а самі сервери здебільшого перейшли на TLS 1.3, тож ми рекомендуємо використовувати саме його.

Поділитися

Чи була ця стаття корисною для вас?

Популярні пропозиції VPS

CPU
CPU
10 Epyc Cores
RAM
RAM
64GB
Space
Space
400 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 65536
OS
CentOS
Software
Software
Keitaro

При оплаті за 3 місяці

-8.6%

CPU
CPU
6 Epyc Cores
RAM
RAM
8 GB
Space
Space
100 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 8192 Windows

42.3

При оплаті за рік

-26.7%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
20 GB SSD
Bandwidth
Bandwidth
1 TB
KVM-SSD 1024 Metered Linux

10

При оплаті за рік

-9.9%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 4096 Linux

12.08

При оплаті за рік

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
200 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 8192 Linux

20.59

При оплаті за рік

-21.5%

CPU
CPU
2 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
300 GB
wKVM-SSD 4096 HK Windows

40

При оплаті за рік

-10%

CPU
CPU
8 Epyc Cores
RAM
RAM
32 GB
Space
Space
200 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 32768 Linux

96.8

При оплаті за рік

-20.5%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
10 TB
KVM-SSD 16384 Metered Linux

95

При оплаті за рік

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 16384 Linux

52

При оплаті за рік

-10%

CPU
CPU
6 Epyc Cores
RAM
RAM
8 GB
Space
Space
100 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 8192 Linux

36.3

При оплаті за рік

Інші статті на цю тему

cookie

Чи приймаєте ви файли cookie та політику конфіденційності?

Ми використовуємо файли cookie, щоб забезпечити вам найкращий досвід роботи на нашому сайті. Якщо ви продовжуєте користуватися сайтом, не змінюючи налаштувань, вважайте, що ви згодні на отримання всіх файлів cookie на сайті HostZealot.