LibreSSL

редактировать

LibreSSL
Паффи, талисман OpenBSD, сделан, чтобы напоминать короля Фердинанда [1] Паффи, талисман 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)
Репозиторий Измените это на Wikidata
Написано на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.>, с целью модернизации кодовой базы, повышения безопасности и применения передовых методов разработки.

Содержание
  • 1 История
    • 1.1 Принятие
  • 2 Изменения
    • 2.1 Связанные с памятью
    • 2.2 Профилактические меры
    • 2.3 Криптографические
    • 2.4 Добавленные функции
    • 2.5 Старые небезопасные функции
    • 2.6 Удаление кода
    • 2.7 Журнал ошибок
  • 3 См. также
  • 4 Ссылки
  • 5 Внешние ссылки
История

После того, как 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.

В более поздних версиях добавлено следующее:

  • 2.1.0: Автоматические эфемерные ключи EC
  • 2.1.2: Встроенная реализация arc4random на macOS и FreeBSD
  • 2.1.2: Переработана поддержка набора шифров ГОСТ
  • 2.1.3: ALPN support
  • 2.1.3: SHA-256 Camellia cipher suites
  • 2.1.4: TLS_FALLBACK_SCSV поддержка на стороне сервера
  • 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-битные двоичные файлы
  • 2.1.6: libtls объявлены стабильными и включены по умолчанию
  • 2.2.0: AIX и Cygwin поддержка
  • 2.2.1: Добавление EC_curve_nid2nist и EC_curve_nist2nid из OpenSSL, начальная поддержка Windows XP / 2003
  • 2.2.2: Определяет LIBRESSL_VERSION_NUMBER, добавлены методы TLS_ * в качестве замены nt для вызовов метода SSLv23_ *, поддержка сборки cmake

Старые небезопасные функции

Первоначальный выпуск LibreSSL по умолчанию отключал ряд функций. Некоторый код для этих функций был позже удален, в том числе Kerberos, шифры экспорта США, сжатие TLS, пульс DTLS, SSL v2 и SSL v3.

В более поздних версиях отключены дополнительные функции:

  • 2.1.1: после обнаружения уязвимости POODLE в устаревшем SSL 3.0 протокол, LibreSSL теперь по умолчанию отключает использование SSL 3.0.
  • 2.1.3: ГОСТ Р 34.10-94 аутентификация подписью
  • 2.2.1: Удаление Dynamic Engine и MDC-2DES поддерживают
  • 2.2.2: Удаление SSL 3.0 из двоичного файла openssl, удаление Internet Explorer 6 обходных путей, механизм RSAX.
  • 2.3.0: Полное удаление SSL 3.0, SHA-0 и DTLS 1_BAD_VER

Удаление кода

В первоначальном выпуске LibreSSL был удален ряд функций, которые были признаны небезопасными, ненужными или устаревшими как часть OpenBSD 5.6.

  • В ответ на Heartbleed функциональность контрольных сигналов была одной из первые удаляемые функции
  • Ненужные платформы (Classic Mac OS, NetWare, OS / 2, VMS, 16-бит Windows и т. Д.)
  • Поддержка несуществующих платформ, таких как big-endian i386 и amd64
  • Поддержка старых компиляторов
  • Механизмы 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, который, как предполагается, имеет черный ход, был сокращен с поддержкой стандарта FIPS 140-2, который требовал этого. Также были удалены неиспользуемые протоколы и небезопасные алгоритмы, включая поддержку FIPS 140-2, MD4 / MD5 J-PAKE и SRP.

Журнал ошибок

Одной из жалоб OpenSSL было количество открытых ошибок, о которых сообщалось в трекер ошибок, который не исправлялся годами. Старые ошибки теперь исправляются в LibreSSL.

См. также
  • Портал бесплатного программного обеспечения
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-27 08:28:03
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте