Ted Unangst опубликовал (http://www.openbsd.org/papers/eurobsdcon2014-libressl.html) интересную статью, в которой рассказал о причинах создания проекта LibreSSL (http://www.libressl.org/), привёл ретроспективу первого месяца разработки и поделился информацией о последних достижениях и планах на будущее.Из особенностей разработки LibreSSL отмечается большая работа по развитию переносимой версии, которая разрабатывается одновременно с вариантом для OpenBSD и выпущена (http://www.opennet.me/opennews/art.shtml?num=40184) раньше нативной редакции для OpenBSD, которая будет представлена 1 ноября в составе OpenBSD 5.6. При этом код LibreSSL завязан на генераторе псевдослучайных чисел arc4random (http://www.openbsd.org/papers/eurobsdcon2014_arc4random/inde...), реализация которого для FreeBSD и NetBSD оставляет желать лучшего и находится в заброшенном виде.
Из планов и текущих задач отмечается работа по созданию API ressl, который позиционируется в качестве замены API OpenSSL. Главными задачами при проектировании новго API является обеспечение непротиворечивости и простоты. По словам разработчика, новый API разрабатывается с оглядкой на то, что требуется пользователю, а не на то что позволяет сделать пользователю протокол TLS. Например, пользователю необходимо установить защищённое соединение с сервером, обеспечить работу защищённого сервера и организовать отправку и приём данных через установленное соединение. API будет абстрагирован от внутренностей и будет скрывать низкоуровневые манипуляции с X.509 или ASN.1, и по сути близок к описанию защищённого транспорта поверх SSH-туннелей, предоставляя средства для установки защищённых соединений без лишних усложнений.
Абстрагирование программного интерфейса позволит подготовить варианты API ressl, реализованные поверх OpenSSL и других реализаций. Ранее предпринимаемые попытки создания замены OpenSSL как правило ограничивались созданием прокладок, воспроизводящих API OpenSSL. В задачи же LibreSSL входит создание нового универсального API, достаточно абстрактного для создания реализаций поверх различных библиотек, не ограничивающихся OpenSSL.Из особенностей ressl API отмечается такая возможность, как верификация имени хоста. TLS-соединение выглядит малополезным, если оно устанавливается с хостом, достоверность которого не гарантируется. При установке TLS-соединения осуществляется проверка сертификатов и связанной с ним цепочки доверия. Затем следует убедиться, что имя хоста, к которому осуществляется соединение, соответствует имени, указанному в сертификате. OpenSSL не выполняет данное сопоставление, перенося его на плечи разработчиков приложения,
которые часто игнорируют данную проверку или забывают её добавить. Выполнение проверки требует от разработчика знакомства с такими элементами, как CommonNames и SubjectAltNames, а также умение правильно организовать сопоставление масок. В итоге, в разных приложениях периодически всплывают (http://www.opennet.me/opennews/art.shtml?num=36854) уязвимости (http://www.opennet.me/opennews/art.shtml?num=23678), связанные с неверной обработкой масок и нулевых байтов. В ressl API проверка имени хоста выполняется по умолчанию.
URL: http://undeadly.org/cgi?action=article&sid=20140929075248
Новость: http://www.opennet.me/opennews/art.shtml?num=40710
ну, теперь по мотивам eurobsdcon'14 можно будет много новостей сделать :)
Зачем они тратят не свои деньги? OpenSSL и так под БСД подобной лицензией. Его не нужно переписывать.
Он кривой как черт, поэтому и переписывают
Да, кривой, но существуенную часть багов уже пофиксили. А эти упыри решили выкинуть все и написать заново дырявый велосипед, на поиск багов в котором уйдут тысячи человеко-часов.
Они объясняли почему уже - выкидывают подозрительный код, через месяц в нем находят баг. Дальше выкидывают другой странный кусок и по приколу пишут в коммите что в нем дырка (хотя сами нашли ее в другом месте) - через месяц эта шутка становится правдой, там тоже находят уязвимость.. Потом они ressl пилят как новый более простой api, это не будет частью libressl
NIH синдром.
насколько я понял из новости, основная цель - сделать библиотеку проще в использовании, а не "придумать ещё одну позу для фапа на лицензию"
БСД-подобной
> БСД подобной лицензиейнастолько "подобной" (в ковычках -- сарказм) что даже нельзя выпустить скомпилированную версию свободного софта с этой библиотекой.
даже лишь по одной только причине кривой лицензии -- можно было бы похоронить OpenSSL.
(и да -- если ты где-то видел свободный скомпилированный софт с библиотекой OpenSSL -- то это не ещё значит что этот софт не нарушает закон... да он есть, встречается, но он незаконен)
Дьявол кроется в деталях: openssl не совместима с GPL.
И как это влияет на функциональность?OpenSSL не требует принудительно открывать исходный код после изменений, и не запрещает это делать.
Т.е. весь сыр-бор из-за того, что кто-то поюзает твои изменения, но не даст тебе поюзать свои?
"И посмотрели они и поняли, что всё здесь было прекрасно, кроме одного: авторами были не они..."
> И как это влияет на функциональность?лицензия OpenSSL заставляет делать в программах дополнительную (лишнюю) функциональность:
а именно -- по условиям лицензмм, программа должна в своём GUI рекламировать OpenSSL.
даже если программа использует LibReSSL -- то всё равно лицензия заставляет рекламировать именно OpenSSL , а не LibReSSL .. и мне кажется это слегка может ввести в забдуждение пользователя такой программы.
получается -- для того чтобы избежать введения пользователя в заблуждение, но при этом ОДНОВРЕМЕННО и не нарушить лецензию: нужно сначало отобразить строчку с рекламой (как это требует лицензия), а затем вывести дополнительную строчку, разъясняющую текущую ситуацию какая она есть на самом деле (а не то что написано в рекламе).
мне кажется это должно называться: лицензионный маразм :-) ...
Т.е. весь "маразм" и "сложность", из-за которых потребовалось с нуля переписывать программу, заключаются в том, чтобы вывести две строки текста?
> Т.е. весь "маразм" и "сложность", из-за которых потребовалось с нуля переписывать программу, заключаются в том, чтобы вывести две строки текста?эти две строчки -- которые необходимо выводить в GUI, и которые в итоге мешают быть программе Свободной -- ты учитываешь только для одной программы.
а теперь представь какое огромное количество программ может тоже хотеть шифровать SSL. суммарное количество рекламных строчек -- в итоге будет во множество раз больше чем две (пропорционально количеству програм) :-)
ради такого -- можно было бы и переписать библиотеку с нуля. да..
и эта реклама надо сказать -- работает! OpenSSL -- очень популярно (быть может именно благодаря рекламе!).. хотя авторы программ, которые вставляют эту рекламу в свои программы -- думаю не очень рады тому факту что они позволили себя запачкать в этой большой афере :-)
Главное от вас улизнуло...GPL - вирусная лицензия. Это означает, что код можно перевести под GPL, но из-под GPL ничего вывести нельзя. С GPL совместимы лицензии, которые разрешают изменять лицензию на GPL и несовместимы те, которые запрещают.
Афера - это когда вы можете положить деньги в банк, но не можете их забрать.
Если вы можете положить деньги в банк и забрать их, а банк не может использовать ваше имя в своей рекламе без вашего письменного согласия, то это не афера, а деловое партнёрство.
> GPL - вирусная лицензия. Это означает, что код можно перевести под GPL, но из-под GPL ничего вывести нельзя. С GPL совместимы лицензии, которые разрешают изменять лицензию на GPL и несовместимы те, которые запрещают.ты что такой странный? НЕ надо менять лицензию чужого встраиваемого компонента!
прям так как есть -- ВКРЯЧИВАЕШЬ чужой компонент -- внутрь своего GPL-проекта, НЕ меняя лицензию (то есть чужой компонент НЕ превращаются в GPL ... то есть нет ни какой GPL-вирусности! лицензия внутренних компонентов остаётся такая какая и была).
такое можно сделать если лицензия дочернего компонента вляется GPL-совместимой.
то есть понятие "GPL-совместимость" -- это и есть то что я сейчас (выше) описал этом сообщении.
а если ты захочешь встроить OpenSSL внутрь своего GPL-проекта -- то ФИГУШКИ! так как его несвободные условия заставляют нас делать рекламу, и это протеворечит свободным принципам GPL!
а если ты захочешь втроить LibReSSL внутрь своего GPL-проекта -- то темболее ЛАЖА получается, так как это не только нельзя сделать (по лицензии OpenSSL), но даже и сами условия абсурдные, так как рекламировать требуется OpenSSL а не LibReSSL.. двойная подстава...
heartbeat у них будет?
> heartbeat у них будет?И не только
Выпилили первым делом.
А мы как дураки сидим вместе с Адамом Лэнгли и пилим высокороизводительные слои BoringSSL.
Так сидите и пилите дальше. Кому вы нужны нафиг...
так и пилите. время всё расставит по своим местам
> Главными задачами при проектировании новго API является обеспечение непротиворечивости и простоты. (...) API будет абстрагирован от внутренностей и будет скрывать низкоуровневые манипуляции с сертификатами X.509 или ASN.1, и по сути близок к описанию защищённого транспорта поверх SSH-туннелей, предоставляя средства для установки защищённых соединений без лишних усложнений.Сомневаюсь, что "усовершенствования", направленные на облегчение жизни несведущим в вопросе разработчикам, есть гут.
Ага, гром не грянет - мужик не перекрестится, и грянул гром и ломанулись мужики писать альтернативы, получается до этого самого момента все устраивало, но вот случилось и забросив все дела начали выкаблучиваться у кого велосипед будет стильней и моднее. Щас поналепят, потом программер голову сломает как в этом зоопарке написать прогу работающую с несколькими реализациями ssl, и дыр в ней будет ровно столько же, так в чем же профит, а профит попиарится, чтобы в резюмешке написать - специалист по информационной безопасности, или не важно, лишь бы было и свое. Позорище. Дед еще не умер, а за дачу уже грызня, клумбы повыдирать, да гаражик на две машины справить, а проверку имени хоста мы автоматом сделаем, а то вдруг дитятко поранится.
Даже больше: подходит внучек к бабушке на детской площадке и спрашивает: "Бабушка, когда же ты наконец умрёшь? Мы твою квартиру сдавать будем и мне велосипед купят. Умирай побыстрее, пожалуйста."
А вы писали что-то с использованием libssl, или просто сомневаетесь?Я вот писал. API совершенно нечеловеческое. Неконсистентное, плохо документированное, с кучей подводных камней.
>> Главными задачами при проектировании новго API является обеспечение непротиворечивости и простоты. (...) API будет абстрагирован от внутренностей и будет скрывать низкоуровневые манипуляции с сертификатами X.509 или ASN.1, и по сути близок к описанию защищённого транспорта поверх SSH-туннелей, предоставляя средства для установки защищённых соединений без лишних усложнений.
> Сомневаюсь, что "усовершенствования", направленные на облегчение жизни несведущим в вопросе
> разработчикам, есть гут."Несведущий" - это который не изучил в деталях все 100500 опций OpenSSL, отличия их работы от документации и между версиями OpenSSL? Ну тогда да, не сведущие они. Как и 100% оставшихся разработчиков в мире.