Открыть сервис

OpenSSL

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

История

Предшественники (SSLeay)

Разработка OpenSSL началась как форк проекта SSLeay, созданного австралийским программистом Эриком Янгом (Eric Young) и Тимом Хадсоном (Tim Hudson). Первая версия SSLeay была выпущена в 1995 году. После того как Янг и Хадсон покинули проект в 1998 году для работы в коммерческой компании RSA Security, исходный код остался в открытом доступе.

Основание OpenSSL

В декабре 1998 года группа разработчиков, возглавляемая Марком Коксом (Mark Cox), Ричардом Левинсоном (Richard Levitte) и другими, создала форк SSLeay под названием OpenSSL. Первый публичный релиз (версия 0.9.1) состоялся в марте 1999 года. Проект был зарегистрирован как некоммерческая организация OpenSSL Software Foundation.

Ключевые события

  • 2000 год — выход версии 0.9.6 с поддержкой протокола TLS 1.0.
  • 2005 год — версия 0.9.7, добавившая поддержку AES (Advanced Encryption Standard).
  • 2014 год — обнаружение уязвимости Heartbleed (CVE-2014-0160) в версиях 1.0.1–1.0.1f. Уязвимость позволяла злоумышленнику читать память сервера, включая закрытые ключи и пароли. Heartbleed привёл к массовому обновлению систем и перевыпуску сертификатов.
  • 2015 год — выход версии 1.0.2 с поддержкой TLS 1.2 и алгоритма ECDHE.
  • 2018 годвыпуск версии 1.1.1 с полной поддержкой TLS 1.3.
  • 2023 год — выход версии 3.0 (LTS — Long Term Support) с архитектурными изменениями, включая модульность и улучшенную поддержку FIPS 140-3.

Архитектура и основные компоненты

Библиотеки

OpenSSL состоит из двух основных библиотек:

  • libcrypto — реализация криптографических алгоритмов: симметричное шифрование (AES, ChaCha20), асимметричное шифрование (RSA, ECDSA), хеширование (SHA-2, SHA-3), генерация случайных чисел, управление ключами.
  • libssl — реализация протоколов SSL/TLS, включая установление соединения, обмен сертификатами и согласование параметров шифрования.

Утилита командной строки openssl

Пакет включает универсальную утилиту openssl, которая позволяет выполнять криптографические операции из командной строки:

  • Генерация ключей и сертификатов (req, genrsa, ecparam)
  • Проверка сертификатов (verify)
  • Шифрование и расшифровка файлов (enc)
  • Вычисление хешей (dgst)
  • Установление защищённого соединения (s_client, s_server)

Модульная структура (OpenSSL 3.0)

Начиная с версии 3.0, OpenSSL перешёл на модульную архитектуру с использованием провайдеров (providers). Провайдеры — это подключаемые модули, реализующие криптографические алгоритмы. Основные провайдеры:

  • default — стандартная реализация алгоритмов
  • legacy — поддержка устаревших алгоритмов (например, DES, MD5)
  • fips — реализация, сертифицированная по стандарту FIPS 140-3

Поддерживаемые протоколы и алгоритмы

Протоколы SSL/TLS

  • SSL 2.0 и SSL 3.0 (отключены по умолчанию из-за уязвимостей)
  • TLS 1.0, 1.1, 1.2, 1.3 (активная поддержка)
  • DTLS (Datagram TLS) для UDP-соединений

Криптографические алгоритмы

КатегорияАлгоритмы
Симметричное шифрованиеAES (128, 192, 256), ChaCha20, Camellia, ARIA
Асимметричное шифрованиеRSA, DSA, ECDSA, Ed25519, SM2
ХешированиеSHA-1, SHA-2 (224–512), SHA-3, BLAKE2, SM3
Обмен ключамиDiffie-Hellman, ECDH, X25519
Аутентифицированное шифрованиеAES-GCM, AES-CCM, ChaCha20-Poly1305

Применение

Веб-серверы

OpenSSL является основой для защищённых соединений HTTPS. Большинство веб-серверов (Apache HTTP Server, Nginx, Lighttpd) используют OpenSSL для реализации TLS. По данным Netcraft на 2024 год, около 70% всех HTTPS-сайтов используют OpenSSL.

Почтовые серверы

Протоколы SMTP, IMAP и POP3 с поддержкой TLS (STARTTLS) также полагаются на OpenSSL для шифрования трафика.

VPN и туннелирование

OpenSSL используется в решениях для VPN (например, OpenVPN) и в реализации протокола SSH (через библиотеку libssh).

Встраиваемые системы

Благодаря кроссплатформенности и относительно небольшому размеру, OpenSSL применяется в маршрутизаторах, IoT-устройствах, медицинском оборудовании и промышленных контроллерах.

Безопасность и критика

Основные уязвимости

  • Heartbleed (2014) — утечка памяти из-за непроверки границ в расширении Heartbeat. Затронуты миллионы серверов.
  • POODLE (2014) — атака на SSL 3.0, потребовавшая отключения протокола.
  • DROWN (2016) — атака на серверы, поддерживающие SSLv2 даже при отключённом протоколе.
  • CVE-2022-3602 и CVE-2022-3786 (2022)переполнение буфера в проверке сертификатов X.509.

Критика

  • Сложность кода — кодовая база OpenSSL исторически считалась трудной для аудита и поддержки. Проект насчитывает более 500 000 строк кода.
  • Медленное исправление уязвимостей — после Heartbleed проект подвергся критике за недостаточную оперативность в выпуске патчей.
  • Отсутствие современной архитектуры — до версии 3.0 код был монолитным, что затрудняло изоляцию компонентов.

Альтернативы

  • LibreSSL — форк OpenSSL, созданный разработчиками OpenBSD в 2014 году. Отличается упрощённой архитектурой и удалением устаревших функций.
  • BoringSSL — форк Google, используемый в Chrome и Android. Оптимизирован для нужд Google и не поддерживает обратную совместимость.
  • GnuTLS — реализация TLS из проекта GNU, используемая в GNOME и других свободных приложениях.

Лицензирование

OpenSSL распространяется под двойной лицензией:

  • Лицензия OpenSSL — разрешительная лицензия, позволяющая использовать библиотеку в коммерческих продуктах при условии указания авторства.
  • Лицензия SSLeay — исходная лицензия, унаследованная от SSLeay.

Обе лицензии совместимы с GPL, но имеют дополнительные условия, которые могут конфликтовать с GPLv2 (например, требование упоминания в рекламных материалах). Начиная с версии 3.0, проект перешёл на лицензию Apache 2.0.

Разработка и сообщество

OpenSSL разрабатывается сообществом добровольцев и финансируется через OpenSSL Software Foundation. Основные спонсоры включают корпорации (Google, Microsoft, IBM, Red Hat) и государственные организации. Разработка ведётся в открытом репозитории на GitHub. Релизная политика предусматривает:

  • LTS-версии (например, 1.1.1, 3.0) — поддержка в течение 5–7 лет.
  • Промежуточные версии (например, 3.1, 3.2) — поддержка до выхода следующей LTS.
  • Прекращение поддержки — версии 1.0.2 и 1.1.1 объявлены устаревшими в 2023 году.

Источники

  • OpenSSL Software Foundation. OpenSSL – Cryptography and SSL/TLS Toolkit. Официальная документация.
  • Rescorla, E. SSL and TLS: Designing and Building Secure Systems. Addison-Wesley, 2001.
  • CVE-2014-0160 (Heartbleed). National Vulnerability Database.
  • Netcraft. Web Server Survey, январь 2024.
  • OpenSSL 3.0 Release Notes. OpenSSL Software Foundation, 2023.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →