Что такое протокол TLS?

«Что такое протокол TLS?» — вопрос из категории Тестирование безопасности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

TLS (Transport Layer Security) — это криптографический протокол, предназначенный для обеспечения безопасной связи по сети (например, Интернет). Он является преемником устаревшего и небезопасного протокола SSL.

Основные цели TLS:

  1. Шифрование: Защищает передаваемые данные от прослушивания (конфиденциальность).
  2. Аутентификация: Проверяет подлинность сервера (с помощью сертификатов), а при Mutual TLS — и клиента.
  3. Целостность данных: Гарантирует, что данные не были подменены в пути (с помощью кодов аутентификации сообщений).

Как это работает (упрощённо):

  1. "Рукопожатие" (Handshake): Клиент и сервер договариваются о параметрах шифрования, проверяют сертификаты и создают общий секретный ключ.
  2. Шифрование приложения: Данные приложения шифруются симметричным шифром с использованием этого ключа.

Пример проверки TLS-соединения на Python:

import requests
import ssl

# Стандартный запрос с проверкой сертификата (verify=True по умолчанию)
try:
    response = requests.get('https://example.com')
    print(f"Успех. Используется: {response.raw.connection.socket.version()}")
except requests.exceptions.SSLError as e:
    print(f"Ошибка TLS/SSL: {e}")

# Пример создания безопасного контекста
context = ssl.create_default_context()
context.minimum_version = ssl.TLSVersion.TLSv1_2  # Запрет устаревших версий

Актуальные версии: Используйте TLS 1.2 или TLS 1.3. Версии TLS 1.0 и 1.1 считаются уязвимыми и не должны применяться. Где используется: HTTPS (HTTP over TLS), защищённые API (REST/gRPC), VPN, электронная почта (SMTPS, IMAPS), передача файлов (FTPS).