LibreSSL
![]() | |
Оригинальный автор(ы) | Проект OpenSSL |
---|---|
Разработчик(и) | Проект OpenBSD |
Первоначальный выпуск | 2.0.0 / 11 июля 2014 г |
Стабильная версия | 3.9.2 [ 1 ] ![]() |
Предварительный выпуск | 3.9.0 (9 марта 2024 г [ 2 ] [ 3 ] ) [±] |
Репозиторий | |
Написано в | С , ассемблер , Перл |
Операционная система | OpenBSD , FreeBSD , NetBSD , Linux , HP-UX , Solaris , macOS , Windows и другие. [ 4 ] |
Тип | Криптографическая библиотека |
Лицензия | Apache-1.0 , пункт BSD-4 , ISC , общественное достояние |
Веб-сайт | www |
LibreSSL — это (TLS) с открытым исходным кодом реализация протокола Transport Layer Security . Реализация названа в честь Secure Sockets Layer (SSL), устаревшего предшественника TLS, поддержка которого была удалена в версии 2.3.0. Проект OpenBSD 1.0.1g в апреле отделил LibreSSL от OpenSSL 2014 года в ответ на Heartbleed безопасности уязвимость . [ 5 ] [ 6 ] [ 7 ] [ 8 ] с целью модернизации кодовой базы , повышения безопасности и применения лучших практик разработки . [ 9 ] [ 10 ] [ 11 ]
История
[ редактировать ]После того как Heartbleed безопасности была обнаружена уязвимость в OpenSSL , OpenBSD команда провела аудит кодовой базы и решила, что необходимо форк OpenSSL для удаления опасного кода. [ 5 ] Домен libressl.org зарегистрирован 11 апреля 2014 года; проект объявил название 22 апреля 2014 года. За первую неделю разработки было удалено более 90 000 строк кода C. [ 10 ] [ 12 ] поддержка устаревших операционных систем ( Classic Mac OS , NetWare , OS/2 , 16-битная Windows ) и некоторых старых операционных систем ( OpenVMS ). Неиспользуемый код был удален, а также удалена [ 13 ]
LibreSSL изначально разрабатывался как предполагаемая замена OpenSSL в OpenBSD 5.6 и был портирован на другие платформы, как только урезанная версия библиотеки стала стабильной. [ 14 ] По состоянию на апрель 2014 г. [update], проект стремился к «стабильному привлечению» внешнего финансирования. [ 12 ] 17 мая 2014 года Боб Бек представил «LibreSSL: первые 30 дней и что нас ждет в будущем» во время конференции BSDCan 2014 года, на которой он описал прогресс, достигнутый за первый месяц. [ 15 ] 5 июня 2014 года стало известно о нескольких ошибках OpenSSL. Хотя некоторые проекты были уведомлены заранее, [ 16 ] LibreSSL не было; Тео де Раадт обвинил разработчиков OpenSSL в намеренном сокрытии этой информации от OpenBSD и LibreSSL. [ 17 ]
20 июня 2014 года Google создал еще один форк OpenSSL под названием BoringSSL и пообещал обмениваться исправлениями с LibreSSL. [ 18 ] [ 19 ] Google уже повторно лицензировала некоторые свои разработки по лицензии ISC , как того просили разработчики LibreSSL. [ 18 ] [ 20 ] 21 июня 2014 года Тео де Раадт приветствовал BoringSSL и изложил планы по выпуску LibreSSL-portable. [ 21 ] С 8 июля началось портирование кода для macOS и Solaris . [ 22 ] а первоначальное портирование на Linux началось 20 июня. [ 23 ]
С 2021 года OpenBSD использует LibreSSL в качестве основной библиотеки SSL. Alpine Linux поддерживала LibreSSL в качестве основной библиотеки TLS в течение трех лет, до выпуска 3.9.0 в январе 2019 года. Gentoo поддерживала LibreSSL до февраля 2021 года. [ 24 ] В Python 3.10 исключен LibreSSL [ 25 ] после поддержки начиная с Python 3.4.3 (2015). [ 26 ]
Принятие
[ редактировать ]LibreSSL является поставщиком TLS по умолчанию для:
LibreSSL является поставщиком TLS по умолчанию для этих систем, производство которых сейчас прекращено:
LibreSSL — это выбираемый поставщик TLS для:
- FreeBSD пакеты [ 32 ]
- Генту Пакеты [ 33 ] (поддержка прекращена с февраля 2021 г.) [ 34 ] [ 35 ] [ 36 ] )
- OPNsense пакеты [ 37 ] (будет удалено после 22.7 [ 38 ] )
- macOS
Изменения
[ редактировать ]Связанные с памятью
[ редактировать ]Изменения включают замену вызовов пользовательской памяти на вызовы стандартной библиотеки (например, strlcpy
, calloc
, asprintf
, reallocarray
, и т. д.). [ 39 ] [ самостоятельно опубликованный источник? ] [ 40 ] Этот процесс может помочь в дальнейшем обнаружить переполнения буфера ошибки с помощью более продвинутых инструментов анализа памяти или путем наблюдения за сбоями программы (через ASLR , использование бита NX , канарейки стека и т. д.).
Исправления для потенциальных сценариев двойного освобождения также упоминались в журналах фиксации VCS (включая явное присвоение значений нулевого указателя ). [ 41 ] дополнительные проверки работоспособности, также упоминаются В журналах коммитов связанные с обеспечением длины аргументов, присвоением беззнаковых переменных , значениями указателей и возвратами методов.
Проактивные меры
[ редактировать ]Чтобы поддерживать хорошую практику программирования, по умолчанию включен ряд опций и флагов компилятора, предназначенных для обеспечения безопасности, чтобы помочь обнаружить потенциальные проблемы и их можно исправить раньше (-Wall, -Werror, -Wextra, -Wuninitialized). Также были внесены обновления для читаемости кода , которые помогают будущим участникам проверять правильность программы ( KNF , пробелы, перенос строк и т. д.). Изменение или удаление ненужных оболочек методов и макросов также помогает улучшить читаемость кода и аудит ( ссылки на библиотеки абстракций ошибок и ввода-вывода ).
Изменения были внесены, чтобы гарантировать совместимость LibreSSL с 2038 годом, а также сохранить переносимость для других подобных платформ. Кроме того, explicit_bzero
и bn_clear
вызовы были добавлены, чтобы не дать компилятору оптимизировать их и не дать злоумышленникам прочитать ранее выделенную память.
Криптографический
[ редактировать ]Были внесены изменения, помогающие обеспечить правильное заполнение методов , основанных на генераторе случайных чисел, путем замены небезопасных методов заполнения (с использованием преимуществ функций, предлагаемых ядром ). самим [ 42 ] [ 43 ] Что касается заметных дополнений, в OpenBSD добавлена поддержка новых и более надежных алгоритмов ( ChaCha потоковый шифр и код аутентификации сообщений Poly1305 ), а также более безопасный набор эллиптических кривых (кривые мозгового пула из RFC 5639, сила до 512 бит).
Добавленные возможности
[ редактировать ]В первоначальном выпуске LibreSSL добавлен ряд функций: алгоритм ChaCha и Poly1305 , эллиптические кривые Brainpool и ANSSI , а также AES-GCM и ChaCha20-Poly1305 режимы AEAD .
В более поздних версиях было добавлено следующее: [ 44 ]
- 2.1.0: Автоматические эфемерные ключи EC. [ 45 ]
- 2.1.2: Встроенная реализация arc4random в macOS и FreeBSD. [ 46 ]
- 2.1.2: Переработана ГОСТ . поддержка набора шифров
- 2.1.3: ALPN . Поддержка [ 47 ]
- 2.1.3: Поддержка наборов шифров SHA-256 и Camellia .
- 2.1.4: Поддержка TLS_FALLBACK_SCSV на стороне сервера. [ 48 ]
- 2.1.4: certhash как замена скрипта c_rehash.
- 2.1.4: X509_STORE_load_mem API для загрузки сертификатов из памяти (расширенная поддержка chroot).
- 2.1.4: Экспериментальные Windows двоичные файлы .
- 2.1.5: Небольшое обновление, главным образом для улучшения поддержки Windows, сначала работают 32- и 64-битные двоичные файлы. [ 49 ]
- 2.1.6: libtls объявлена стабильной и включена по умолчанию. [ 50 ]
- 2.2.0: AIX и Cygwin . Поддержка [ 51 ]
- 2.2.1: Добавление EC_curve_nid2nist и EC_curve_nist2nid [ 52 ] из OpenSSL, первоначальная поддержка Windows XP /2003.
- 2.2.2: Определяет LIBRESSL_VERSION_NUMBER, [ 53 ] добавлены методы TLS_* в качестве замены вызовов методов SSLv23_*, cmake . поддержка сборки
Старые небезопасные функции
[ редактировать ]Первоначальный выпуск LibreSSL по умолчанию отключил ряд функций. [ 13 ] Часть кода этих функций позже была удалена , включая Kerberos , шифры экспорта США , сжатие TLS, контрольное сообщение DTLS , SSL v2 и SSL v3 .
В более поздних версиях отключены дополнительные функции:
- 2.1.1: После обнаружения уязвимости POODLE в устаревшем протоколе SSL 3.0 LibreSSL теперь отключает использование SSL 3.0 по умолчанию. [ 54 ]
- 2.1.3: Проверка подлинности подписи по ГОСТ Р 34.10-94 . [ 44 ] [ 47 ]
- 2.2.1: Удаление Dynamic Engine и поддержки MDC-2DES. [ 52 ]
- 2.2.2: Удаление SSL 3.0 из двоичного файла openssl, удаление обходных путей Internet Explorer 6, механизма RSAX. [ 53 ]
- 2.3.0: Полное удаление SSL 3.0, SHA-0 и DTLS 1_BAD_VER.
Удаление кода
[ редактировать ]В первоначальной версии LibreSSL удален ряд функций, которые считались небезопасными, ненужными или устаревшими в OpenBSD 5.6.
- В ответ на Heartbleed функция сердцебиения [ 55 ] была одной из первых функций, которые были удалены.
- Поддержка устаревших платформ ( Classic Mac OS , NetWare , OS/2 , 16-битная Windows ) была удалена.
- Поддержка некоторых старых платформ ( OpenVMS ) была удалена.
- Поддержка несуществующих платформ, таких как с прямым порядком байтов i386 и amd64 . [ 56 ]
- Поддержка старых компиляторов.
- Механизмы IBM 4758 , Broadcom ubsec, Sureware, Nuron, GOST, GMP, CSwift, CHIL, CAPI, Atalla и AEP были удалены из-за неактуальности аппаратного обеспечения или зависимости от несвободных библиотек.
- OpenSSL PRNG был удален (и заменен реализацией arc4random на основе ChaCha20 ).
- Макросы препроцессора , которые были сочтены ненужными или небезопасными или уже давно признаны устаревшими в OpenSSL (например, des_old.h).
- Старые ненужные файлы для языков ассемблера , C и Perl (например, EGD ).
- MD2 , SEED . функциональность
- SSL 3.0, SHA-0, DTLS1_BAD_VER
Алгоритм Dual EC DRBG , который подозревается в наличии « черного хода» , [ 57 ] был сокращен вместе с поддержкой стандарта FIPS 140-2 , который требовал [ нужна ссылка ] это. Также были удалены неиспользуемые протоколы и небезопасные алгоритмы, включая поддержку FIPS 140-2 . [ 58 ] МД4 / МД5 [ 44 ] Джей-Пэйк , [ 13 ] и СРП . [ 59 ]
Журнал ошибок
[ редактировать ]Одной из жалоб OpenSSL было количество открытых ошибок , зарегистрированных в системе отслеживания ошибок, которые не были исправлены в течение многих лет. Старые ошибки сейчас исправляются в LibreSSL. [ 60 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Брент Кук (12 мая 2024 г.). «Выпущена LibreSSL 3.9.2» . Проверено 12 мая 2024 г.
- ^ «ЛибреССЛ» . Проверено 14 марта 2024 г.
- ^ «Релизы LibreSSL» . Проверено 14 марта 2024 г.
- ^ «Релизы LibreSSL» .
- ^ Jump up to: а б Унангст, Тед (22 апреля 2014 г.). «Истоки либрессла» . зенитная артиллерия . Проверено 24 апреля 2014 г.
- ^ Кернер, Шон Майкл (22 апреля 2014 г.). «После Heartbleed OpenSSL разветвляется на LibreSSL» . электронная неделя . Проверено 24 апреля 2014 г.
- ^ «Больше не просто очистка: анонсирован проект LibreSSL» . Слэшдот . 22 апреля 2014 года . Проверено 24 апреля 2014 г.
- ^ М, Константин (17 мая 2014 г.). Соулскилл (ред.). «30-дневное обновление статуса LibreSSL» . Слэшдот .
- ^ «ЛибреССЛ» .
- ^ Jump up to: а б Зельцер, Ларри (21 апреля 2014 г.). «OpenBSD расширяет, сокращает и исправляет OpenSSL» . Нулевой день . ЗДНет . Проверено 21 апреля 2014 г.
- ^ Хесслер, Питер (15 апреля 2014 г.). «OpenBSD начала масштабную очистку OpenSSL» . Журнал OpenBSD . Проверено 24 апреля 2014 г.
- ^ Jump up to: а б Бродкин, Джон (22 апреля 2014 г.). «Код OpenSSL не подлежит восстановлению, — утверждает создатель форка «LibreSSL» . Арс Техника . Проверено 24 апреля 2014 г.
- ^ Jump up to: а б с д Жакуто, Антуан (1 ноября 2014 г.). «Выпущена OpenBSD 5.6» . openbsd-announce (список рассылки) . Проверено 28 октября 2015 г.
- ^ МакКаллион, Джейн (22 апреля 2014 г.). «Heartbleed: LibreSSL очищает «безответственный» код OpenSSL» . ПК Про . Архивировано из оригинала 26 июня 2014 года . Проверено 23 апреля 2014 г.
- ^ Бек, Боб (17 мая 2014 г.). «LibreSSL: первые 30 дней и будущее» . Проверено 17 мая 2014 г.
- ^ «Re: Семь исправлений безопасности OpenSSL» . oss-sec (список рассылки). 5 июня 2014 года . Проверено 9 июня 2014 г.
- ^ де Раадт, Тео (5 июня 2014 г.). «Re: новые недостатки OpenSSL» . openbsd-misc (список рассылки) . Проверено 9 июня 2014 г.
- ^ Jump up to: а б Лэнгли, Адам (20 июня 2014 г.). «BoringSSL (20 июня 2014 г.)» . Imperialviolet.org . Проверено 21 июня 2014 г.
- ^ Гудин, Дэн (20 июня 2014 г.). «Google представляет независимую «вилку» OpenSSL под названием «BoringSSL » . Арс Техника . Проверено 21 июня 2014 г.
- ^ Синг, Джоэл (21 июня 2014 г.). «OpenBSD — lib/libssl/src/crypto/evp evp_aead.c e_chacha20poly1305.c» . Архивировано из оригинала 22 июня 2014 года . Проверено 21 июня 2014 г.
- ^ де Раадт, Тео (21 июня 2014 г.). «Борингссл и тому подобное» . openbsd-tech (список рассылки) . Проверено 28 октября 2015 г.
- ^ Бек, Боб (8 июля 2014 г.). «OpenBSD — lib/libcrypto/crypto getentropy_osx.c getentropy_solaris.c» . Архивировано из оригинала 22 июля 2014 года . Проверено 8 июля 2014 г.
- ^ Бек, Боб (20 июня 2014 г.). «OpenBSD — lib/libcrypto/crypto getentropy_linux.c» . Архивировано из оригинала 9 июля 2014 года.
- ^ «LibreSSL слабеет в Linux [LWN.net]» . lwn.net . Проверено 6 января 2021 г.
- ^ «PEP 644 — требуется OpenSSL 1.1.1 или новее» .
- ^ «Журнал изменений — документация Python 3.4.10» .
- ^ Марино, Джон. «[Бета] Переключите базу на использование частных библиотек LibreSSL» . Проверено 9 ноября 2018 г.
- ^ «Выпуск Млечного Пути v0.3» . Проект «Гипербола». 23 сентября 2019 г. Проверено 23 сентября 2019 г.
- ^ Рауэ, Стефан. «OpenELEC Mediacenter — [Бета] Выпущена OpenELEC 6.0 Beta 2» . Openelec.tv . Архивировано из оригинала 26 ноября 2015 года . Проверено 20 августа 2015 г.
- ^ «PC-BSD превращается в TrueOS» . Архивировано из оригинала 16 сентября 2016 года . Проверено 16 сентября 2016 г.
- ^ ФонФанж, Марк. «PC-BSD 10.1.2: Интервью с Крисом Муром» . Официальный блог PC-BSD . Проверено 15 октября 2015 г.
- ^ «Добавить DEFAULT_VERSIONS=ssl=XXX» . Svnweb.freebsd.org .
- ^ «Проект: LibreSSL — Gentoo» . Wiki.gentoo.org .
- ^ Горный, Михал (5 января 2021 г.). «Поддержка LibreSSL прекращена» . www.gentoo.org . Проверено 30 марта 2021 г.
- ^ Горный, Михал (31 декабря 2020 г.). «Ошибка 762847 — dev-libs/libressl: Удаление» . bugs.gentoo.org . Проверено 30 марта 2021 г.
- ^ Горный, Михал (28 декабря 2020 г.). «[gentoo-dev] [RFC] Прекращаем поддержку LibreSSL?» . archives.gentoo.org . Проверено 30 марта 2021 г.
- ^ «Выпущена версия OPNsense 15.7» . ОПНСенс . Проверено 15 октября 2015 г.
- ^ «Выпущена версия OPNsense 22.7» . ОПНСенс . Проверено 5 августа 2022 г.
- ^ Орр, Уильям (23 апреля 2014 г.). «Краткий обзор прошедшей недели» . OpenSSL Валгалла Рэмпейдж . Проверено 30 апреля 2014 г.
- ^ «Коммит OpenBSD LibreSSL CVS Calloc» . Secure.freshbsd.org .
- ^ «Двойные бесплатные фиксации OpenBSD LibreSSL CVS» . Secure.freshbsd.org .
- ^ «Небезопасное заполнение OpenBSD LibreSSL CVS» . Secure.freshbsd.org .
- ^ «Заполнение ядра OpenBSD LibreSSL CVS» . Secure.freshbsd.org . Архивировано из оригинала 16 сентября 2014 года.
- ^ Jump up to: а б с «Переносимый журнал изменений LibreSSL» . LibreSSL. 15 октября 2021 г.
- ^ Бек, Боб (12 октября 2014 г.). «Выпущена LibreSSL 2.1.0» . openbsd-announce (список рассылки) . Проверено 28 октября 2015 г.
- ^ Бек, Боб (9 декабря 2014 г.). «Выпущен LibreSSL 2.1.2» . openbsd-announce (список рассылки) . Проверено 28 октября 2015 г.
- ^ Jump up to: а б Кук, Брент (22 января 2015 г.). «Выпущен LibreSSL 2.1.3» . openbsd-announce (список рассылки) . Проверено 28 октября 2015 г.
- ^ Кук, Брент (4 марта 2015 г.). «Выпущен LibreSSL 2.1.4» . openbsd-announce (список рассылки) . Проверено 28 октября 2015 г.
- ^ Кук, Брент (17 марта 2015 г.). «Выпущен LibreSSL 2.1.5» . openbsd-announce (список рассылки) . Проверено 28 октября 2015 г.
- ^ Кук, Брент (19 марта 2015 г.). «Выпущен LibreSSL 2.1.6» . openbsd-announce (список рассылки) . Проверено 28 октября 2015 г.
- ^ Кук, Брент (11 июня 2015 г.). «Выпущены версии LibreSSL 2.1.7 и 2.2.0» . openbsd-announce (список рассылки) . Проверено 28 октября 2015 г.
- ^ Jump up to: а б Кук, Брент (9 июля 2015 г.). «Выпущен LibreSSL 2.2.1» . openbsd-announce (список рассылки) . Проверено 28 октября 2015 г.
- ^ Jump up to: а б Кук, Брент (6 августа 2015 г.). «Выпущена LibreSSL 2.2.2» . openbsd-announce (список рассылки) . Проверено 28 октября 2015 г.
- ^ Бек, Боб (16 октября 2014 г.). «Выпущен LibreSSL 2.1.1» . openbsd-tech (список рассылки).
- ^ «OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEATS» .
- ^ Миод Валлат. «Удалить поддержку i386 и amd64 с прямым порядком байтов» . openbsd-cvs (список рассылки).
- ^ Перлрот, Николь (10 сентября 2013 г.). «Правительство объявляет о шагах по восстановлению доверия к стандартам шифрования» . Нью-Йорк Таймс . Проверено 9 мая 2014 г.
- ^ «Будущее (или его отсутствие) объектного модуля FIPS LibreSSL» .
- ^ Бек, Боб (3 августа 2014 г.). «Выпущен LibreSSL 2.0.4» . openbsd-announce (список рассылки) . Проверено 28 октября 2015 г.
- ^ Валлат, Миод (10 ноября 2014 г.). «Re: CVS: cvs.openbsd.org: src» . openbsd-cvs (список рассылки) . Проверено 28 октября 2015 г.