LibreSSL - LibreSSL

LibreSSL
Паффи, талисман OpenBSD, сделан в образе короля Фердинанда [1]
Пухлый, талисман OpenBSD, чтобы напоминать Король Фердинанд[1]
Оригинальный автор (ы)В OpenSSL Проект
Разработчики)В OpenBSD Проект
изначальный выпуск2.0.0 / 11 июля 2014 г.; 6 лет назад (2014-07-11)
Стабильный выпуск3.2.3 (8 декабря 2020 г.; 14 дней назад (2020-12-08)[2][3]) [±]
Предварительный выпуск3.3.1 (8 декабря 2020 г.; 14 дней назад (2020-12-08)[4][5]) [±]
Репозиторий Отредактируйте это в Викиданных
Написано вC, сборка, Perl
Операционная системаOpenBSD, FreeBSD, NetBSD, Linux, HP-UX, Солярис, macOS, Windows и другие[6]
ТипКриптография библиотека
ЛицензияЛицензия Apache 1.0, 4-п. Лицензия BSD, Лицензия ISC, всеобщее достояние
Интернет сайтwww.libressl.org

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 по умолчанию для:

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]

Смотрите также

Рекомендации

  1. ^ Кук, Брент (2 мая 2017 г.). "LibreSSL, почти два года спустя". InfoSec Southwest. YouTube. Получено 15 сентября 2018.
  2. ^ "LibreSSL". Получено 9 декабря 2020.
  3. ^ "Релизы LibreSSL". Получено 9 декабря 2020.
  4. ^ "LibreSSL". Получено 9 декабря 2020.
  5. ^ «Релизы LibreSSL». Получено 9 декабря 2020.
  6. ^ "Релизы LibreSSL".
  7. ^ а б Unangst, Тед (22 апреля 2014 г.). "Истоки libressl". зенитный огонь. Получено 24 апреля 2014.
  8. ^ Кемер, Шон Майкл (22 апреля 2014 г.). «После Heartbleed OpenSSL переходит в LibreSSL». eWeek. Получено 24 апреля 2014.
  9. ^ "Больше не просто очистка: анонсирован проект LibreSSL". Slashdot. 22 апреля 2014 г.. Получено 24 апреля 2014.
  10. ^ М., Константин (17 мая 2014 г.). Soulskill (ред.). "30-дневное обновление статуса LibreSSL". Slashdot.
  11. ^ "LibreSSL".
  12. ^ а б Зельцер, Ларри (21 апреля 2014 г.). "OpenBSD разветвляет, сокращает, исправляет OpenSSL". Нулевой день. ZDNet. Получено 21 апреля 2014.
  13. ^ Хесслер, Питер (15 апреля 2014 г.). «OpenBSD начала массовое разборку и очистку OpenSSL». Журнал OpenBSD. Получено 24 апреля 2014.
  14. ^ а б Бродкин, Джон (22 апреля 2014 г.). «Код OpenSSL не подлежит ремонту, - утверждает создатель вилки LibreSSL». Ars Technica. Получено 24 апреля 2014.
  15. ^ МакКаллион, Джейн (22 апреля 2014 г.). "Heartbleed: LibreSSL очищает" безответственный "код OpenSSL". ПК Pro. Архивировано из оригинал 26 июня 2014 г.. Получено 23 апреля 2014.
  16. ^ Ларабель, Майкл (9 мая 2014 г.). «OpenBSD подтверждает, что LibreSSL будет переносимым». Фороникс. Получено 30 мая 2014.
  17. ^ Бек, Боб (17 мая 2014 г.). «LibreSSL: первые 30 дней и что ждет нас в будущем». Получено 17 мая 2014.
  18. ^ «Re: OpenSSL семь исправлений безопасности». осс-сек (Список рассылки). 5 июня 2014 г.. Получено 9 июн 2014.
  19. ^ де Раадт, Тео (5 июня 2014 г.). «Re: новые недостатки OpenSSL». openbsd-misc (Список рассылки). Получено 9 июн 2014.
  20. ^ а б Лэнгли, Адам (20 июня 2014 г.). «BoringSSL (20 июня 2014 г.)». Imperialviolet.org. Получено 21 июн 2014.
  21. ^ Гудин, Дэн (20 июня 2014 г.). "Google представляет независимую" вилку "OpenSSL под названием" BoringSSL """. Ars Technica. Получено 21 июн 2014.
  22. ^ Пой, Джоэл (21 июня 2014 г.). "OpenBSD - lib / libssl / src / crypto / evp evp_aead.c e_chacha20poly1305.c". Архивировано из оригинал 22 июня 2014 г.. Получено 21 июн 2014.
  23. ^ де Раадт, Тео (21 июня 2014 г.). "Boringssl и все такое". openbsd-tech (Список рассылки). Получено 28 октября 2015.
  24. ^ Бек, Боб (8 июля 2014 г.). "OpenBSD - lib / libcrypto / crypto getentropy_osx.c getentropy_solaris.c". Архивировано из оригинал 22 июля 2014 г.. Получено 8 июля 2014.
  25. ^ Бек, Боб (20 июня 2014 г.). "OpenBSD - lib / libcrypto / crypto getentropy_linux.c". Архивировано из оригинал 9 июля 2014 г.
  26. ^ Марино, Джон. "[Beta] Переключить базу на использование частных библиотек LibreSSL [sic]". Получено 9 ноября 2018.
  27. ^ а б c d Жакуто, Антуан (1 ноября 2014 г.). «Выпущена OpenBSD 5.6». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
  28. ^ Рауэ, Стефан. «OpenELEC Mediacenter - [Beta] OpenELEC 6.0 Beta 2 выпущен». Openelec.tv. Архивировано из оригинал 26 ноября 2015 г.. Получено 20 августа 2015.
  29. ^ «PC-BSD превращается в TrueOS». Архивировано из оригинал 16 сентября 2016 г.. Получено 16 сентября 2016.
  30. ^ ФонФанж, Марк. «PC-BSD 10.1.2: интервью с Крисом Мур». Официальный блог PC-BSD. Получено 15 октября 2015.
  31. ^ "LibreSSL включен по умолчанию". Пустота Linux. Получено 6 июля 2019.
  32. ^ «Релиз Milky Way v0.3». Проект Гипербола. 23 сентября 2019 г.. Получено 23 сентября 2019.
  33. ^ "Добавить DEFAULT_VERSIONS = ssl = XXX". Svnweb.freebsd.org.
  34. ^ "Проект: LibreSSL - Gentoo". Wiki.gentoo.org.
  35. ^ «Выпущена версия 15.7 OPNsense». OPNsense. Получено 15 октября 2015.
  36. ^ Орр, Уильям (23 апреля 2014 г.). «Краткий обзор прошлой недели». OpenSSL Valhalla Rampage. Получено 30 апреля 2014.[самостоятельно опубликованный источник? ]
  37. ^ "OpenBSD LibreSSL CVS Calloc фиксирует". Secure.freshbsd.org.
  38. ^ "OpenBSD LibreSSL CVS Double Free Commits". Secure.freshbsd.org.
  39. ^ "Небезопасное заполнение CVS OpenBSD LibreSSL". Secure.freshbsd.org.
  40. ^ "Заполнение ядра OpenBSD LibreSSL CVS". Secure.freshbsd.org. Архивировано из оригинал 16 сентября 2014 г.
  41. ^ а б c "Переносимый список изменений LibreSSL". LibreSSL.
  42. ^ Бек, Боб (12 октября 2014 г.). «Выпущен LibreSSL 2.1.0». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
  43. ^ Бек, Боб (9 декабря 2014 г.). «Выпущен LibreSSL 2.1.2». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
  44. ^ а б Кук, Брент (22 января 2015 г.). «Выпущен LibreSSL 2.1.3». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
  45. ^ Кук, Брент (4 марта 2015 г.). «Выпущен LibreSSL 2.1.4». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
  46. ^ Кук, Брент (17 марта 2015 г.). «Выпущен LibreSSL 2.1.5». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
  47. ^ Кук, Брент (19 марта 2015 г.). «Выпущен LibreSSL 2.1.6». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
  48. ^ Кук, Брент (11 июня 2015 г.). «Выпущены LibreSSL 2.1.7 и 2.2.0». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
  49. ^ а б Кук, Брент (9 июля 2015 г.). «Выпущен LibreSSL 2.2.1». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
  50. ^ а б Кук, Брент (6 августа 2015 г.). «Выпущен LibreSSL 2.2.2». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
  51. ^ Бек, Боб (16 октября 2014 г.). «Выпущен LibreSSL 2.1.1». openbsd-tech (Список рассылки).
  52. ^ "OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEATS".
  53. ^ Миод Валлат. «Убрать поддержку i386 и amd64 с прямым порядком байтов». openbsd-cvs (Список рассылки).
  54. ^ Перлрот, Николь (10 сентября 2013 г.). «Правительство объявляет о шагах по восстановлению доверия к стандартам шифрования». Нью-Йорк Таймс. Получено 9 мая 2014.
  55. ^ «Будущее (или его отсутствие) объектного модуля FIPS в LibreSSL».
  56. ^ Бек, Боб (3 августа 2014 г.). «Выпущен LibreSSL 2.0.4». openbsd-анонс (Список рассылки). Получено 28 октября 2015.
  57. ^ Валлат, Миод (10 ноября 2014 г.). "Re: CVS: cvs.openbsd.org: src". openbsd-cvs (Список рассылки). Получено 28 октября 2015.

внешняя ссылка