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 →