Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

LibreSSL - это реализация протокола TLS с открытым исходным кодом . Реализация названа в честь Secure Sockets Layer (SSL), устаревшего предшественника TLS, поддержка которого была удалена в версии 2.3.0. OpenBSD проект раздвоенного LibreSSL с OpenSSL 1.0.1g в апреле 2014 года в ответ на Heartbleed безопасности уязвимость , [7] [8] [9] [10] с целями модернизации кодового , повышения безопасности и применения разработки наилучшей практики .[11] [12] [13]

С 2021 года OpenBSD использует LibreSSL в качестве основной библиотеки SSL. Alpine Linux поддерживал LibreSSL в качестве своей основной библиотеки TLS в течение трех лет до выпуска 3.9.0 в январе 2019 года. Gentoo поддерживал LibreSSL до февраля 2021 года. [14]

История [ править ]

После Heartbleed безопасности уязвимость была обнаружена в OpenSSL , то OpenBSD команда аудита в кодовой и решила , что надо было раскошелиться OpenSSL для удаления опасного кода. [7] Домен libressl.org был зарегистрирован 11 апреля 2014 г .; проект объявил название 22 апреля 2014 года. За первую неделю разработки было удалено более 90 000 строк кода C. [12] [15] Неиспользуемый код был удален, а поддержка устаревших операционных систем была удалена.

LibreSSL изначально разрабатывался как предполагаемая замена OpenSSL в OpenBSD 5.6 и был перенесен на другие платформы после того, как урезанная версия библиотеки стала стабильной. [16] По состоянию на апрель 2014 года проект искал «стабильное обязательство» внешнего финансирования. [15] 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 и Solaris , [24] в то время как первоначальный перенос на Linux начался 20 июня. [25]

Принятие [ править ]

LibreSSL является поставщиком TLS по умолчанию для:

  • Стрекоза BSD [26]
  • OpenBSD [27]
  • OpenELEC [28]
  • Пакеты TrueOS [29] [30]
  • Гипербола GNU / Linux-libre [31]

LibreSSL - это выбираемый поставщик TLS для:

  • Пакеты FreeBSD [32]
  • Пакеты Gentoo [33] (поддержка прекращена с февраля 2021 г.)
  • Пакеты OPNsense [34]

Изменения [ править ]

Связанные с памятью [ править ]

Изменения включают в себя замену вызовов пользовательских памяти для тех , в стандартной библиотеке (например, strlcpy, calloc, asprintf, reallocarrayи т.д.). [35] [36] Этот процесс может помочь позже обнаруживать ошибки переполнения буфера с помощью более продвинутых инструментов анализа памяти или путем наблюдения за сбоями программы (через ASLR , использование бита NX , канарейки стека и т. Д.).

Исправления для потенциальных сценариев двойного освобождения также были указаны в журналах фиксации VCS (включая явное присвоение значений нулевого указателя ). [37] В журналах фиксации также упоминались дополнительные проверки работоспособности, связанные с обеспечением длины аргументов, присвоением беззнаковых переменных со знаком, значениями указателей и возвратами методов.

Профилактические меры [ править ]

В целях поддержания хорошей практики программирования по умолчанию включен ряд параметров компилятора и флагов, предназначенных для обеспечения безопасности, чтобы помочь в обнаружении потенциальных проблем, чтобы их можно было исправить раньше (-Wall, -Werror, -Wextra, -Wuninitialized). Также были обновления для читабельности кода, которые помогают будущим участникам проверять правильность программы ( KNF , пробелы, перенос строк и т. Д.). Модификация или удаление ненужных оболочек методов и макросов также помогают улучшить читаемость кода и аудит ( ссылки на библиотеки абстракции ошибок и ввода-вывода ).

Были внесены изменения, чтобы обеспечить совместимость LibreSSL с 2038 года, а также сохранить переносимость для других подобных платформ. Кроме того, explicit_bzeroи bn_clearбыли добавлены вызовы , чтобы предотвратить компилятор от оптимизации их и предотвратить злоумышленников от чтения ранее выделенной памяти.

Криптографические [ править ]

Были изменения , чтобы помочь обеспечить надлежащий посев из генератора случайных чисел -На методов с помощью замены небезопасных методов высева (пользуясь возможностей , предлагаемых самим изначально ядром). [38] [39] Что касается внесенных заметных дополнений, OpenBSD добавила поддержку новых и более авторитетных алгоритмов ( потоковый шифр ChaCha и код аутентификации сообщений Poly1305 ) вместе с более безопасным набором эллиптических кривых (кривые мозгового пула из RFC 5639 , до 512 бит).

Добавленные функции [ править ]

В первоначальном выпуске LibreSSL добавлен ряд функций: алгоритм ChaCha и Poly1305 , эллиптические кривые Brainpool и ANSSI , а также режимы AES-GCM и ChaCha20 - Poly1305 AEAD .

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

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

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

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

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

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

Удаление кода [ править ]

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

  • В ответ на Heartbleed функция сердцебиения [51] была одной из первых функций, которые были удалены.
  • Ненужные платформы ( Classic Mac OS , NetWare , OS / 2 , VMS , 16-битная Windows и т. Д.)
  • Поддержка несуществующих платформ, например i386 и amd64 с прямым порядком байтов [52]
  • Поддержка старых компиляторов
  • Механизмы IBM 4758 , Broadcom ubsec, Sureware, Nuron, GOST, GMP, CSwift, CHIL, CAPI, Atalla и AEP были удалены из-за несоответствия оборудования или зависимости от несвободных библиотек.
  • ГПСЧ OpenSSL был удален (и заменен реализацией arc4random на основе ChaCha20 )
  • Макросы препроцессора , которые были сочтены ненужными или небезопасными или уже давно объявлены устаревшими в OpenSSL (например, des_old.h)
  • Старые ненужные файлы для ассемблера , C и Perl (например, EGD )
  • MD2 , функциональность SEED
  • SSL 3.0, SHA-0, DTLS1_BAD_VER

Dual EC DRBG алгоритм, который подозревается задней дверью , [53] был покроем наряду с поддержкой для FIPS 140-2 стандарта , который потребовал от нее. Также были удалены неиспользуемые протоколы и небезопасные алгоритмы, включая поддержку FIPS 140-2 , [54] MD4 / MD5 [40], J-PAKE , [27] и SRP . [55]

Журнал ошибок [ править ]

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

См. Также [ править ]

  • Сравнение реализаций TLS
  • OpenSSH

Ссылки [ править ]

  1. ^ Кук, Брент (2 мая 2017 г.). «LibreSSL, почти два года спустя» . InfoSec Southwest . YouTube . Проверено 15 сентября 2018 года .
  2. ^ "LibreSSL" . Проверено 12 февраля 2021 года .
  3. ^ "Релизы LibreSSL" . Проверено 12 февраля 2021 года .
  4. ^ "LibreSSL" . Проверено 9 декабря 2020 .
  5. ^ "Релизы LibreSSL" . Проверено 9 декабря 2020 .
  6. ^ "Релизы LibreSSL" .
  7. ^ a b Unangst, Тед (22 апреля 2014 г.). «Истоки libressl» . зенитный огонь . Проверено 24 апреля 2014 года .
  8. Кемер, Шон Майкл (22 апреля 2014 г.). «После Heartbleed OpenSSL разветвляется на LibreSSL» . eWeek . Проверено 24 апреля 2014 года .
  9. ^ «Больше не просто уборка: анонсирован проект LibreSSL» . Slashdot . 22 апреля 2014 . Проверено 24 апреля 2014 года .
  10. M, Константин (17 мая 2014 г.). Soulskill (ред.). «30-дневное обновление статуса LibreSSL» . Slashdot .
  11. ^ "LibreSSL" .
  12. ^ a b Зельцер, Ларри (21 апреля 2014 г.). «OpenBSD разветвляет, сокращает, исправляет OpenSSL» . Нулевой день . ZDNet . Проверено 21 апреля 2014 года .
  13. Хесслер, Питер (15 апреля 2014 г.). «OpenBSD приступила к массовому сокращению и очистке OpenSSL» . OpenBSD Journal . Проверено 24 апреля 2014 года .
  14. ^ "LibreSSL томится в Linux [LWN.net]" . lwn.net . Проверено 6 января 2021 года .
  15. ^ a b Бродкин, Джон (22 апреля 2014 г.). «Код OpenSSL не подлежит ремонту, - утверждает создатель вилки LibreSSL» . Ars Technica . Проверено 24 апреля 2014 года .
  16. ^ МакКаллион, Джейн (22 апреля 2014). «Heartbleed: LibreSSL очищает» безответственный «код OpenSSL» . ПК Pro . Архивировано из оригинального 26 июня 2014 года . Проверено 23 апреля 2014 года .
  17. Бек, Боб (17 мая 2014 г.). «LibreSSL: первые 30 дней и слайды будущего» . Дата обращения 17 мая 2014 .
  18. ^ "Re: OpenSSL семь исправлений безопасности" . oss-sec (Список рассылки). 5 июня 2014 . Проверено 9 июня 2014 .
  19. Рианна де Раадт, Тео (5 июня 2014 г.). «Re: новые недостатки OpenSSL» . openbsd-misc (список рассылки) . Проверено 9 июня 2014 .
  20. ^ a b Лэнгли, Адам (20 июня 2014 г.). «BoringSSL (20 июня 2014 г.)» . Imperialviolet.org . Проверено 21 июня 2014 года .
  21. ^ Goodin, Dan (20 июня 2014). «Google представляет независимую„вилку“из OpenSSL называется„BoringSSL » . Ars Technica . Проверено 21 июня 2014 года .
  22. Sing, Joel (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. ^ a b c d Жакуто, Антуан (1 ноября 2014 г.). «Выпущена OpenBSD 5.6» . openbsd-announce (Список рассылки) . Проверено 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. ^ "Млечный Путь v0.3 релиз" . Проект Гипербола. 23 сентября 2019 . Проверено 23 сентября 2019 года .
  32. ^ "Добавить DEFAULT_VERSIONS = ssl = XXX" . Svnweb.freebsd.org .
  33. ^ "Проект: LibreSSL - Gentoo" . Wiki.gentoo.org .
  34. ^ «Выпущена версия 15.7 OPNsense» . OPNsense . Проверено 15 октября 2015 года .
  35. Орр, Уильям (23 апреля 2014 г.). «Краткий обзор за последнюю неделю» . OpenSSL Valhalla Rampage . Проверено 30 апреля 2014 года .[ самостоятельно опубликованный источник? ]
  36. ^ "OpenBSD LibreSSL CVS Calloc фиксирует" . Secure.freshbsd.org .
  37. ^ "OpenBSD LibreSSL CVS Double Free Commits" . Secure.freshbsd.org .
  38. ^ "Небезопасное заполнение CVS OpenBSD LibreSSL" . Secure.freshbsd.org .
  39. ^ "Заполнение ядра OpenBSD LibreSSL CVS" . Secure.freshbsd.org . Архивировано из оригинального 16 сентября 2014 года.
  40. ^ a b c "Переносимый LibreSSL журнал изменений" . LibreSSL.
  41. Бек, Боб (12 октября 2014 г.). «Выпущен LibreSSL 2.1.0» . openbsd-announce (Список рассылки) . Проверено 28 октября 2015 года .
  42. Бек, Боб (9 декабря 2014 г.). «Выпущен LibreSSL 2.1.2» . openbsd-announce (Список рассылки) . Проверено 28 октября 2015 года .
  43. ^ a b Кук, Брент (22 января 2015 г.). «Выпущен LibreSSL 2.1.3» . openbsd-announce (Список рассылки) . Проверено 28 октября 2015 года .
  44. Кук, Брент (4 марта 2015 г.). «Выпущен LibreSSL 2.1.4» . openbsd-announce (Список рассылки) . Проверено 28 октября 2015 года .
  45. ^ Кук, Брент (17 марта 2015 г.). «Выпущен LibreSSL 2.1.5» . openbsd-announce (Список рассылки) . Проверено 28 октября 2015 года .
  46. Кук, Брент (19 марта 2015 г.). «Выпущен LibreSSL 2.1.6» . openbsd-announce (Список рассылки) . Проверено 28 октября 2015 года .
  47. ^ Кук, Брент (11 июня 2015 г.). «Выпущены LibreSSL 2.1.7 и 2.2.0» . openbsd-announce (Список рассылки) . Проверено 28 октября 2015 года .
  48. ^ a b Кук, Брент (9 июля 2015 г.). «Выпущен LibreSSL 2.2.1» . openbsd-announce (Список рассылки) . Проверено 28 октября 2015 года .
  49. ^ a b Кук, Брент (6 августа 2015 г.). «Выпущен LibreSSL 2.2.2» . openbsd-announce (Список рассылки) . Проверено 28 октября 2015 года .
  50. Бек, Боб (16 октября 2014 г.). «Выпущен LibreSSL 2.1.1» . openbsd-tech (список рассылки).
  51. ^ "OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEATS" .
  52. ^ Миод Валлат. «Убрать поддержку i386 и amd64 с прямым порядком байтов» . openbsd-cvs (список рассылки).
  53. ^ Perlroth, Nicole (10 сентября 2013). «Правительство объявляет о шагах по восстановлению доверия к стандартам шифрования» . Нью-Йорк Таймс . Проверено 9 мая 2014 .
  54. ^ «Будущее (или его отсутствие) объектного модуля LibreSSL FIPS» .
  55. Бек, Боб (3 августа 2014 г.). «Выпущен LibreSSL 2.0.4» . openbsd-announce (Список рассылки) . Проверено 28 октября 2015 года .
  56. ^ Валла, Miód (10 ноября 2014). "Re: CVS: cvs.openbsd.org: src" . openbsd-cvs (список рассылки) . Проверено 28 октября 2015 года .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Исходный код LibreSSL и libtls (OpenGrok)
  • LibreSSL Portable на GitHub