В чём разница между протоколами SSL и TLS?

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

Ответ

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

Основные отличия:

  1. История и стандартизация:

    • SSL: Разработан Netscape (SSL 1.0, 2.0, 3.0).
    • TLS: Стандартизирован IETF. TLS 1.0 = SSL 3.1, TLS 1.2, TLS 1.3 — современные версии.
  2. Безопасность: TLS устраняет критические уязвимости SSL (например, POODLE в SSL 3.0) и использует более стойкие алгоритмы.

  3. Алгоритмы шифрования:

    • SSL: Устаревшие (RC4, MD5).
    • TLS: Современные (AES-GCM, ChaCha20, SHA-256/384).
  4. Процесс рукопожатия (Handshake): В TLS он более эффективен и безопасен (в TLS 1.3 сокращён до 1 RTT).

Важно: Термины "SSL" и "TLS" часто используются как синонимы (например, "SSL-сертификат"), но технически все современные реализации используют TLS. SSL считается небезопасным и deprecated.

Проверка используемого протокола (пример на Python):

import ssl
import socket

hostname = 'google.com'
context = ssl.create_default_context()

with socket.create_connection((hostname, 443)) as sock:
    with context.wrap_socket(sock, server_hostname=hostname) as ssock:
        print(f'Используемый протокол: {ssock.version()}')  # Вывод: TLSv1.2 или TLSv1.3

Рекомендация: Настраивайте сервисы на поддержку минимум TLS 1.2, а лучше — TLS 1.3.