← Назад ко всем вопросам

Что такое TLS

1️⃣ Как кратко ответить

TLS (Transport Layer Security) — это криптографический протокол, обеспечивающий безопасность передачи данных в сети. Он защищает данные от перехвата и изменения, обеспечивая конфиденциальность и целостность информации между клиентом и сервером.

2️⃣ Подробное объяснение темы

TLS (Transport Layer Security) — это протокол, который используется для защиты данных, передаваемых по сети. Он является преемником протокола SSL (Secure Sockets Layer) и обеспечивает три основных аспекта безопасности: конфиденциальность, целостность и аутентификацию.

  • Конфиденциальность: TLS шифрует данные, чтобы они не могли быть прочитаны третьими лицами. Это достигается с помощью симметричного шифрования, где и отправитель, и получатель используют один и тот же ключ для шифрования и дешифрования данных.

  • Целостность: TLS использует механизмы проверки целостности данных, чтобы гарантировать, что данные не были изменены во время передачи. Это достигается с помощью хеш-функций и кодов аутентификации сообщений (MAC).

  • Аутентификация: TLS обеспечивает аутентификацию сторон, участвующих в обмене данными. Обычно это достигается с помощью цифровых сертификатов, которые подтверждают подлинность сервера и, в некоторых случаях, клиента.

Пример работы TLS

Когда вы заходите на веб-сайт, который использует HTTPS (HTTP Secure), ваш браузер и сервер устанавливают защищенное соединение с помощью TLS. Процесс установки этого соединения называется "рукопожатием" (handshake).

  1. Клиентское приветствие: Браузер отправляет серверу список поддерживаемых версий TLS и криптографических алгоритмов.

  2. Серверное приветствие: Сервер выбирает версию TLS и алгоритмы из предложенных клиентом и отправляет свой цифровой сертификат.

  3. Проверка сертификата: Браузер проверяет подлинность сертификата с помощью доверенного центра сертификации (CA).

  4. Генерация ключей: Клиент и сервер совместно генерируют симметричный ключ, который будет использоваться для шифрования данных.

  5. Шифрование данных: После успешного рукопожатия все данные между клиентом и сервером шифруются с использованием сгенерированного ключа.

Пример кода на Python с использованием библиотеки ssl

import socket
import ssl
​
# Создаем TCP-сокет
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
​
# Оборачиваем сокет в SSL-контекст
context = ssl.create_default_context()
​
# Устанавливаем защищенное соединение с сервером
secure_sock = context.wrap_socket(sock, server_hostname='example.com')
​
# Подключаемся к серверу
secure_sock.connect(('example.com', 443))
​
# Отправляем HTTP-запрос
secure_sock.sendall(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
​
# Получаем ответ от сервера
response = secure_sock.recv(4096)
​
# Закрываем соединение
secure_sock.close()
​
# Выводим ответ
print(response.decode('utf-8'))
  • import socket и import ssl: Импортируем модули для работы с сокетами и SSL.
  • socket.socket(socket.AF_INET, socket.SOCK_STREAM): Создаем TCP-сокет.
  • ssl.create_default_context(): Создаем контекст SSL, который содержит настройки безопасности.
  • context.wrap_socket(sock, server_hostname='example.com'): Оборачиваем сокет в SSL-контекст для установки защищенного соединения.
  • secure_sock.connect(('example.com', 443)): Подключаемся к серверу по защищенному каналу.
  • secure_sock.sendall(...): Отправляем HTTP-запрос.
  • secure_sock.recv(4096): Получаем ответ от сервера.
  • secure_sock.close(): Закрываем соединение.
  • print(response.decode('utf-8')): Выводим ответ сервера в читаемом виде.

TLS широко используется для защиты данных в интернете, особенно в веб-приложениях, где он обеспечивает безопасность соединений через HTTPS.

Тема: Безопасность и авторизация
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки