Паффи, талисман OpenBSD, напоминающий короля Фердинанда | |
Автор (ы) | Проект OpenSSL |
---|---|
Разработчик (и) | OpenBSD Проект |
Первоначальный выпуск | 2.0.0 / 11 июля 2014 г.; 6 лет назад (11.07.2014) |
Стабильный выпуск | 3.2.2 (18 октября 2020 г.; 3 дня назад (18.10.2020)) |
Предварительный выпуск | 3.2.1 (24 Август 2020; 58 дней назад (2020-08-24) |
Репозиторий | |
Написано на | C, сборка, Perl |
Операционная система | OpenBSD, FreeBSD, NetBSD, Linux, HP-UX, Solaris, macOS, Windows и другие |
Тип | Криптография библиотека |
Лицензия | Лицензия Apache 1.0, 4 пункта лицензия BSD, лицензия ISC, общественное достояние |
Веб-сайт | www. libressl.org |
LibreSSL - это реализация с открытым исходным кодом протокола Transport Layer Security (TLS). Реализация названа в честь Secure Sockets Layer (SSL), устаревшего предшественника TLS, поддержка которого была удалена в версии 2.3.0. Проект OpenBSD разветвил LibreSSL из OpenSSL 1.0.1g в апреле 2014 года в ответ на уязвимость Heartbleed security <203.>, с целью модернизации кодовой базы, повышения безопасности и применения передовых методов разработки.
После того, как Heartbleed security уязвимость была обнаружена в OpenSSL, команда OpenBSD провела аудит кодовой базы и решила, что необходимо форк OpenSSL, чтобы удалить опасный код. Домен libressl.org был зарегистрирован 11 апреля 2014 г.; проект объявил название 22 апреля 2014 года. За первую неделю разработки было удалено более 90 000 строк кода C. Неиспользуемый код был удален, а поддержка устаревших операционных систем удалена.
LibreSSL изначально разрабатывался как предполагаемая замена OpenSSL в OpenBSD 5.6 и был перенесен на другие платформы, как только урезанная версия библиотеки стала стабильной. По состоянию на апрель 2014 года проект искал «стабильное обязательство» внешнего финансирования. 17 мая 2014 года на конференции BSDCan 2014 года Боб Бек представил «LibreSSL: первые 30 дней и что ждет нас в будущем», на которой он описал прогресс, достигнутый за первый месяц. 5 июня 2014 г. стало известно о нескольких ошибках OpenSSL. В то время как несколько проектов были уведомлены заранее, LibreSSL - нет; Тео де Раадт обвинил разработчиков OpenSSL в намеренном сокрытии этой информации от OpenBSD и LibreSSL.
20 июня 2014 года Google создал еще один ответвление OpenSSL под названием BoringSSL и обещал обменяться исправлениями с LibreSSL. Google уже перелицензировал некоторые из своих вкладов в соответствии с лицензией ISC, как это было запрошено разработчиками LibreSSL. 21 июня 2014 года Тео де Раадт приветствовал BoringSSL и рассказал о планах по созданию переносимого LibreSSL. 8 июля начался перенос кода для macOS и Solaris, а первоначальный перенос на Linux начался 20 июня.
LibreSSL является поставщиком TLS по умолчанию для:
LibreSSL - это выбираемый поставщик TLS для:
Изменения включают замену пользовательских вызовов памяти на вызовы из стандартной библиотеки (например, strlcpy
, calloc
, asprintf
, и т. Д.). Этот процесс может помочь в дальнейшем обнаруживать ошибки переполнения буфера с помощью более продвинутых инструментов анализа памяти или путем наблюдения за сбоями программы (через ASLR, использование NX бит, стек канареек и т. Д.).
Исправления для потенциальных сценариев двойного освобождения также были указаны в журналах фиксации VCS (включая явное присвоение значений нулевого указателя ). В журналах фиксации также упоминались дополнительные проверки работоспособности, связанные с обеспечением аргументов длины, назначениями переменных без знака и подписи, значениями указателей и возвратами методов.
В целях поддержания хорошей практики программирования по умолчанию включен ряд параметров компилятора и флагов, предназначенных для обеспечения безопасности, чтобы помочь в обнаружении потенциальных проблем, чтобы их можно было исправить раньше ( -Wall, -Werror, -Wextra, -Wuninitialized). Также были обновления для читабельности кода, которые помогают будущим участникам проверять правильность программы (KNF, пробелы, перенос строк и т. Д.). Модификация или удаление ненужных оболочек методов и макросов также помогает улучшить читаемость кода и аудит (ссылки на библиотеки ошибок и абстракции ввода-вывода ).
Были внесены изменения, гарантирующие, что LibreSSL будет совместимым с 2038 годом вместе с сохранением переносимости для других подобных платформ. Кроме того, были добавлены вызовы explicit_bzero
и bn_clear
, чтобы предотвратить их оптимизацию компилятором и предотвратить чтение злоумышленниками ранее выделенной памяти.
Были внесены изменения для обеспечения правильного заполнения методов генераторов случайных чисел путем замены небезопасных методов заполнения (с использованием функции, предлагаемые самим ядром изначально). Что касается внесенных заметных дополнений, в OpenBSD добавлена поддержка новых и более авторитетных алгоритмов (ChaCha потоковый шифр и Poly1305 код аутентификации сообщений) вместе с более безопасным набором эллиптических кривых. (кривые мозга из RFC 5639, до 512 бит).
В первоначальную версию LibreSSL добавлен ряд функций: алгоритм ChaCha и Poly1305, Brainpool и эллиптические кривые ANSSI, а также режимы AES-GCM и ChaCha20 -Poly1305 AEAD.
В более поздних версиях добавлено следующее:
Первоначальный выпуск LibreSSL по умолчанию отключал ряд функций. Некоторый код для этих функций был позже удален, в том числе Kerberos, шифры экспорта США, сжатие TLS, пульс DTLS, SSL v2 и SSL v3.
В более поздних версиях отключены дополнительные функции:
В первоначальном выпуске LibreSSL был удален ряд функций, которые были признаны небезопасными, ненужными или устаревшими как часть OpenBSD 5.6.
Алгоритм Dual EC DRBG, который, как предполагается, имеет черный ход, был сокращен с поддержкой стандарта FIPS 140-2, который требовал этого. Также были удалены неиспользуемые протоколы и небезопасные алгоритмы, включая поддержку FIPS 140-2, MD4 / MD5 J-PAKE и SRP.
Одной из жалоб OpenSSL было количество открытых ошибок, о которых сообщалось в трекер ошибок, который не исправлялся годами. Старые ошибки теперь исправляются в LibreSSL.