LibreSSL - LibreSSL
Оригинальный автор (ы) | В OpenSSL Проект |
---|---|
Разработчики) | В OpenBSD Проект |
изначальный выпуск | 2.0.0 / 11 июля 2014 г. |
Стабильный выпуск | 3.2.3 (8 декабря 2020 г.[2][3]) [±] |
Предварительный выпуск | 3.3.1 (8 декабря 2020 г.[4][5]) [±] |
Репозиторий | |
Написано в | C, сборка, Perl |
Операционная система | OpenBSD, FreeBSD, NetBSD, Linux, HP-UX, Солярис, macOS, Windows и другие[6] |
Тип | Криптография библиотека |
Лицензия | Лицензия Apache 1.0, 4-п. Лицензия BSD, Лицензия ISC, всеобщее достояние |
Интернет сайт | www |
LibreSSL является Открытый исходный код реализация Безопасность транспортного уровня (TLS) протокол. Реализация названа в честь Уровень защищенных гнезд (SSL), устаревший предшественник TLS, поддержка которого была удалена в версии 2.3.0. В OpenBSD проект раздвоенный LibreSSL от OpenSSL 1.0.1g в апреле 2014 г. в ответ на Heartbleed безопасность уязвимость,[7][8][9][10] с целью модернизации кодовая база, улучшение безопасность, и применяя разработку лучшие практики.[11][12][13]
История
После Heartbleed безопасность уязвимость был обнаружен в OpenSSL, то OpenBSD команда проверенный кодовой базы и решил, что необходимо вилка OpenSSL для удаления опасного кода.[7] Домен libressl.org был зарегистрирован 11 апреля 2014 г .; проект объявил название 22 апреля 2014 года. За первую неделю разработки было удалено более 90 000 строк кода C.[12][14] Неиспользуемый код был удален, а поддержка устаревшего операционные системы был удален.
LibreSSL изначально разрабатывался как предполагаемая замена OpenSSL в OpenBSD 5.6 и был перенесен на другие платформы после того, как урезанная версия библиотеки стала стабильной.[15][16] По состоянию на апрель 2014 г.[Обновить], проект стремился получить «стабильное обязательство» внешнего финансирования.[14] 17 мая 2014 года на конференции BSDCan 2014 года Боб Бек представил «LibreSSL: первые 30 дней и что ждет нас в будущем», на которой он описал прогресс, достигнутый за первый месяц.[17] 5 июня 2014 г. стало известно о нескольких ошибках OpenSSL. Хотя несколько проектов были уведомлены заранее,[18] LibreSSL не было; Тео де Раадт обвинил разработчиков OpenSSL в намеренном сокрытии этой информации от OpenBSD и LibreSSL.[19]
20 июня 2014 г. Google создал еще один форк OpenSSL под названием BoringSSL, и обещал обменяться исправлениями с LibreSSL.[20][21] Google уже перелицензированный некоторые из его вкладов в Лицензия ISC, как того требовали разработчики LibreSSL.[20][22] 21 июня 2014 года Тео де Раадт приветствовал BoringSSL и рассказал о планах по созданию переносимого LibreSSL.[23] С 8 июля перенос кода для macOS и Солярис началось,[24] при первоначальном переносе на Linux началось 20 июня.[25]
Принятие
LibreSSL является поставщиком TLS по умолчанию для:
- Стрекоза BSD[26]
- OpenBSD[27]
- OpenELEC[28]
- TrueOS пакеты[29][30]
- Пустота Linux[31]
- Гипербола GNU / Linux-libre[32]
LibreSSL - это выбираемый поставщик TLS для:
Изменения
Изменения включают замену пользовательских вызовов памяти на вызовы из стандартной библиотеки (например, strlcpy
, каллок
, asprintf
, reallocarray
, так далее.).[36][37] Этот процесс может помочь позже поймать переполнение буфера ошибки с более продвинутыми анализ памяти инструменты или наблюдая за сбоями программы (через ASLR, использование Бит NX, стек канареек, так далее.).
Исправления для потенциальных двойной бесплатно сценарии также цитировались в VCS журналы фиксации (включая явное присвоение нулевой указатель значения).[38] Были дополнительные проверки вменяемости также цитируется в журналах фиксации, связанных с обеспечением длины аргументов, назначением переменных без знака со знаком, значениями указателей и возвратами методов.
Профилактические меры
В целях поддержания надлежащей практики программирования по умолчанию включен ряд параметров компилятора и флагов, предназначенных для обеспечения безопасности, чтобы помочь выявить потенциальные проблемы, чтобы их можно было исправить раньше (-Wall, -Werror, -Wextra, -Wuninitialized). Также были обновления для читабельности кода, которые помогают будущим участникам проверять правильность программы (KNF, пробел, перенос строк и т. д.). Модификация или удаление ненужных оболочек методов и макросов также помогают улучшить читаемость кода и аудит (ошибки и Абстракция ввода / вывода ссылки на библиотеки).
Были внесены изменения, чтобы гарантировать, что LibreSSL будет 2038 год совместимый наряду с сохранением переносимости для других подобных платформ. Кроме того, explicit_bzero
и bn_clear
были добавлены вызовы для предотвращения их оптимизации компилятором и предотвращения чтения злоумышленниками ранее выделенной памяти.
Криптографический
Были внесены изменения, чтобы обеспечить правильное посев из генератор случайных чисел - методы, основанные на замене небезопасных методов раздачи (с использованием функций, предлагаемых самим ядром изначально).[39][40] Что касается внесенных заметных дополнений, OpenBSD добавил поддержку новых и более авторитетных алгоритмов (ЧаЧа потоковый шифр и Поли1305 код аутентификации сообщения) вместе с более безопасным набором эллиптические кривые (кривые мозга от RFC 5639, до 512 бит).
Добавленные функции
В первоначальном выпуске LibreSSL добавлен ряд функций: ЧаЧа и Поли1305 алгоритм, Brainpool и ANSSI эллиптические кривые, а AES-GCM и ChaCha20 -Поли1305 AEAD режимы.
Более поздние версии добавили следующее:[41]
- 2.1.0: Автоматические эфемерные ключи EC[42]
- 2.1.2: Встроенный arc4random реализация на macOS и FreeBSD[43]
- 2.1.2: Переработана поддержка набора шифров ГОСТ.
- 2.1.3: ALPN поддерживать[44]
- 2.1.3: SHA-256 Камелия наборы шифров
- 2.1.4: TLS_FALLBACK_SCSV серверная поддержка[45]
- 2.1.4: certhash как замена скрипта c_rehash
- 2.1.4: API X509_STORE_load_mem для загрузки сертификатов из памяти (улучшенная поддержка chroot)
- 2.1.4: Экспериментальные двоичные файлы Windows
- 2.1.5: Незначительное обновление в основном для улучшения поддержки Windows, первые рабочие 32- и 64-битные двоичные файлы[46]
- 2.1.6: libtls объявлен стабильным и включен по умолчанию[47]
- 2.2.0: AIX и Cygwin поддерживать[48]
- 2.2.1: Добавление EC_curve_nid2nist и EC_curve_nist2nid[49] из OpenSSL, начальная поддержка Windows XP / 2003
- 2.2.2: определяет LIBRESSL_VERSION_NUMBER,[50] добавлены методы TLS_ * в качестве замены для вызовов методов SSLv23_ *, поддержка сборки cmake
Старые небезопасные функции
В первоначальной версии LibreSSL по умолчанию отключен ряд функций.[27] Часть кода для этих функций была позже удаленный, включая Kerberos, Шифры экспорта США, Сжатие TLS, Сердцебиение DTLS, SSL v2 и SSL v3.
В более поздних версиях отключены дополнительные функции:
- 2.1.1: После открытия ПУДЕЛЬ уязвимость в наследство SSL 3.0 протокол, LibreSSL теперь по умолчанию отключает использование SSL 3.0.[51]
- 2.1.3: ГОСТ Р 34.10-94 подпись аутентификации[41][44]
- 2.2.1: Удаление поддержки Dynamic Engine и MDC-2DES[49]
- 2.2.2: Удаление SSL 3.0 из двоичного файла openssl, удаление Internet Explorer 6 обходных путей, движок RSAX.[50]
- 2.3.0: Полное удаление SSL 3.0, SHA-0 и DTLS 1_BAD_VER
Удаление кода
В первоначальном выпуске LibreSSL был удален ряд функций, которые считались небезопасными, ненужными или устаревшими как часть OpenBSD 5.6.[27]
- В ответ на Heartbleed, функция сердцебиения[52] была одна из первых функций, которые были удалены
- Ненужные платформы (Классическая Mac OS, NetWare, OS / 2, VMS, 16 бит Windows, так далее.)
- Поддержка несуществующих платформ, таких как прямой порядок байтов i386 и amd64[53]
- Поддержка старых компиляторов
- В IBM 4758, Broadcom ubsec, Sureware, Nuron, GOST, GMP, CSwift, CHIL, CAPI, Atalla и механизмы AEP были удалены из-за несоответствия оборудования или зависимости от несвободных библиотек.
- OpenSSL ГПСЧ был удален (и заменен на ChaCha20 -на основе arc4random)
- Макросы препроцессора которые были сочтены ненужными или небезопасными или уже давно устарели в OpenSSL (например, des_old.h)
- Старые ненужные файлы для язык ассемблера, C, и Perl (например. EGD )
- MD2, СЕМЯ функциональность
- SSL 3.0, SHA-0, DTLS1_BAD_VER
В Двойной ЭК DRBG алгоритм, который подозревается в наличии задняя дверь,[54] был вырезан вместе с опорой для FIPS 140-2 стандарт, который требовал этого. Также были удалены неиспользуемые протоколы и небезопасные алгоритмы, включая поддержку FIPS 140-2,[55] MD4 /MD5[41] J-PAKE,[27] и SRP.[56]
Журнал ошибок
Одной из жалоб OpenSSL было количество открытых ошибок, обнаруженных в системе отслеживания ошибок, которые не исправлялись годами. В LibreSSL сейчас исправляются старые ошибки.[57]
Смотрите также
Рекомендации
- ^ Кук, Брент (2 мая 2017 г.). "LibreSSL, почти два года спустя". InfoSec Southwest. YouTube. Получено 15 сентября 2018.
- ^ "LibreSSL". Получено 9 декабря 2020.
- ^ "Релизы LibreSSL". Получено 9 декабря 2020.
- ^ "LibreSSL". Получено 9 декабря 2020.
- ^ «Релизы LibreSSL». Получено 9 декабря 2020.
- ^ "Релизы LibreSSL".
- ^ а б Unangst, Тед (22 апреля 2014 г.). "Истоки libressl". зенитный огонь. Получено 24 апреля 2014.
- ^ Кемер, Шон Майкл (22 апреля 2014 г.). «После Heartbleed OpenSSL переходит в LibreSSL». eWeek. Получено 24 апреля 2014.
- ^ "Больше не просто очистка: анонсирован проект LibreSSL". Slashdot. 22 апреля 2014 г.. Получено 24 апреля 2014.
- ^ М., Константин (17 мая 2014 г.). Soulskill (ред.). "30-дневное обновление статуса LibreSSL". Slashdot.
- ^ "LibreSSL".
- ^ а б Зельцер, Ларри (21 апреля 2014 г.). "OpenBSD разветвляет, сокращает, исправляет OpenSSL". Нулевой день. ZDNet. Получено 21 апреля 2014.
- ^ Хесслер, Питер (15 апреля 2014 г.). «OpenBSD начала массовое разборку и очистку OpenSSL». Журнал OpenBSD. Получено 24 апреля 2014.
- ^ а б Бродкин, Джон (22 апреля 2014 г.). «Код OpenSSL не подлежит ремонту, - утверждает создатель вилки LibreSSL». Ars Technica. Получено 24 апреля 2014.
- ^ МакКаллион, Джейн (22 апреля 2014 г.). "Heartbleed: LibreSSL очищает" безответственный "код OpenSSL". ПК Pro. Архивировано из оригинал 26 июня 2014 г.. Получено 23 апреля 2014.
- ^ Ларабель, Майкл (9 мая 2014 г.). «OpenBSD подтверждает, что LibreSSL будет переносимым». Фороникс. Получено 30 мая 2014.
- ^ Бек, Боб (17 мая 2014 г.). «LibreSSL: первые 30 дней и что ждет нас в будущем». Получено 17 мая 2014.
- ^ «Re: OpenSSL семь исправлений безопасности». осс-сек (Список рассылки). 5 июня 2014 г.. Получено 9 июн 2014.
- ^ де Раадт, Тео (5 июня 2014 г.). «Re: новые недостатки OpenSSL». openbsd-misc (Список рассылки). Получено 9 июн 2014.
- ^ а б Лэнгли, Адам (20 июня 2014 г.). «BoringSSL (20 июня 2014 г.)». Imperialviolet.org. Получено 21 июн 2014.
- ^ Гудин, Дэн (20 июня 2014 г.). "Google представляет независимую" вилку "OpenSSL под названием" BoringSSL """. Ars Technica. Получено 21 июн 2014.
- ^ Пой, Джоэл (21 июня 2014 г.). "OpenBSD - lib / libssl / src / crypto / evp evp_aead.c e_chacha20poly1305.c". Архивировано из оригинал 22 июня 2014 г.. Получено 21 июн 2014.
- ^ де Раадт, Тео (21 июня 2014 г.). "Boringssl и все такое". 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 г.
- ^ Марино, Джон. "[Beta] Переключить базу на использование частных библиотек LibreSSL [sic]". Получено 9 ноября 2018.
- ^ а б c d Жакуто, Антуан (1 ноября 2014 г.). «Выпущена OpenBSD 5.6». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
- ^ Рауэ, Стефан. «OpenELEC Mediacenter - [Beta] 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.
- ^ "LibreSSL включен по умолчанию". Пустота Linux. Получено 6 июля 2019.
- ^ «Релиз Milky Way v0.3». Проект Гипербола. 23 сентября 2019 г.. Получено 23 сентября 2019.
- ^ "Добавить DEFAULT_VERSIONS = ssl = XXX". Svnweb.freebsd.org.
- ^ "Проект: LibreSSL - Gentoo". Wiki.gentoo.org.
- ^ «Выпущена версия 15.7 OPNsense». OPNsense. Получено 15 октября 2015.
- ^ Орр, Уильям (23 апреля 2014 г.). «Краткий обзор прошлой недели». OpenSSL Valhalla Rampage. Получено 30 апреля 2014.[самостоятельно опубликованный источник? ]
- ^ "OpenBSD LibreSSL CVS Calloc фиксирует". Secure.freshbsd.org.
- ^ "OpenBSD LibreSSL CVS Double Free Commits". Secure.freshbsd.org.
- ^ "Небезопасное заполнение CVS OpenBSD LibreSSL". Secure.freshbsd.org.
- ^ "Заполнение ядра OpenBSD LibreSSL CVS". Secure.freshbsd.org. Архивировано из оригинал 16 сентября 2014 г.
- ^ а б c "Переносимый список изменений LibreSSL". LibreSSL.
- ^ Бек, Боб (12 октября 2014 г.). «Выпущен LibreSSL 2.1.0». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
- ^ Бек, Боб (9 декабря 2014 г.). «Выпущен LibreSSL 2.1.2». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
- ^ а б Кук, Брент (22 января 2015 г.). «Выпущен LibreSSL 2.1.3». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
- ^ Кук, Брент (4 марта 2015 г.). «Выпущен LibreSSL 2.1.4». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
- ^ Кук, Брент (17 марта 2015 г.). «Выпущен LibreSSL 2.1.5». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
- ^ Кук, Брент (19 марта 2015 г.). «Выпущен LibreSSL 2.1.6». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
- ^ Кук, Брент (11 июня 2015 г.). «Выпущены LibreSSL 2.1.7 и 2.2.0». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
- ^ а б Кук, Брент (9 июля 2015 г.). «Выпущен LibreSSL 2.2.1». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
- ^ а б Кук, Брент (6 августа 2015 г.). «Выпущен LibreSSL 2.2.2». openbsd-анонс (Список рассылки). Получено 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-анонс (Список рассылки). Получено 28 октября 2015.
- ^ Валлат, Миод (10 ноября 2014 г.). "Re: CVS: cvs.openbsd.org: src". openbsd-cvs (Список рассылки). Получено 28 октября 2015.