Подготовлен (https://github.com/das-labor/neopg/releases/tag/v0.0.6) новый выпуск проекта NeoPG (https://neopg.io/), развивающего форк инструментария GnuPG (GNU Privacy Guard) c реализацией инструментов для шифрования данных, работы с электронными подписями, управления ключами и доступа к публичным хранилищам ключей.
Ключевым отличием NeoPG является проведение существенной чистки кода от реализаций устаревших алгоритмов, переход с языка Cи на C++11, переработка структуры исходных текстов для упрощения сопровождения и предоставление расширяемого API для разработки надстроек. Весь новый код поставляется (https://github.com/das-labor/neopg) под разрешительной лицензией BSD вместо GPLv3.
Среди изменений также выделяется переход на сборочную систему cmake, замена Libgcrypt на библиотеку Botan (https://github.com/randombit/botan), замена встроенных парсеров и кода для работы с БД на libcurl и SQLite. В NeoPG прекращён запуск длительно работающих фоновых процессов gpg-agent, dirmngr (Directory Manager) и scdaemon (Smart Card Daemon), вместо которых выполняются одноразовые вспомогательные обработчики, завершаемые сразу после выполнения задания.Основная функциональность NeoPG реализована в форме библиотеки libneopg, которую можно использовать в сторонних приложениях. Поверх libneopg реализован интерфейс командной строки, в котором произведено объединение входящих в GnuPG разрозненных утилит (gpg, gpgsm, gpgconf, gpgv, gpgtar и т.п.) в единый исполняемый файл neopg с оформлением субкоманд в стиле Git и поддержкой цветного вывода. В рамках команды "neopg gpg2" реализована прослойка для обеспечения совместимости с GnuPG 2.
В новом выпуске улучшена совместимость с утилитой gpg2 - если gpg2 является жёсткой ссылкой на neopg, то автоматически применяется слой для обеспечения совместимости команд с GnuPG 2. Добавлена новая команда "packet dump". Обеспечена поддержка Ubuntu 18.04. Улучшена работа сборочных сценариев Cmake. Вместо boost::format задействована библиотека fmtlib. Добавлен OpenPGP парсер для хранилищ ключей.URL: https://github.com/das-labor/neopg/releases/tag/v0.0.6
Новость: https://www.opennet.dev/opennews/art.shtml?num=50564
Кек, за курлом тянется такой хвост уязвимостей, что кукареканье про секурность невозможно воспринимать всерьез.
По-вашему лучше пилить очередной велосипед и наплодить ещё больше дивных новых багов?
Если "велосипед" лучше и безопаснее, то почему бы и нет?То, что разработчик NeoPG не может пукнyть без помощи third-party библиотек, скорее указывает на нехватку сил и умения, а не грамотную архитектуру и заботу о пользователях. Когда его творение поимеют из-за дыр в этих библиотеках, пользователям будет плевать, какие крутые это были библиотеки, и как много времени он себе сэкономил путём их использования.
Может ему кроме своих libcurl и crypto еще и ОС релизовывать сразу?
Ну там дистрибутивчик новый выкатить?
В мире лялекса так принято, что на каждую программку из 3,5строк по дистрибутиву.
зачем писать глупости? внимания не хватает?
чего только стоит студентокод libcurl достаточно глянуть исходники, что бы понять что эта либа пилилась для скачивания интернет странички на один раз. А потом разрабам стало лень и ненужно переписывать ее код.
Если curl такой дырявый (а дыры в нем регулярно находят), а gpg нет, встает вопрос — а нужно ли переписывать, и если нужно, то может не на плюспх из прошлого десятилетия с дырявым HTTP двиглом?
Давай список непофикшеных.
В велосипеде их, конечно же, меньше
в правильном велосипеде их действительно меньше, потому что там нет климат-контроля, развлекательного центра (с доступом к управлению двигателем и автопилоту) и самого автопилота, кстати, тоже нет.curl это попытка сделать все и для всех, навсегда - что, наверное, неплохо для программ, у которых сетевой функционал вторичен и при этом сравнительно универсален - сегодня нам нужен http, завтра ssh, послезавтра вообще smtp.
а для узкоспециализированной, да еще и требующей очень бережного отношения из-за работы с максимально оберегаемыми (по задумке) данными - тривиальное взаимодействие с keyservers вполне можно было правильно и надежно сделать самому.
Но зачем? Автору оно на самом ведь деле - не нать.
curl весь мир пользуется и проверяет, а в велосипеде уязвимостей "нет" только потому, что их никто не опубликовал
NSA старается не покладая рук
NSA вообще то занято c GnuPG2:CVE-2018-12556
CVE-2018-12356
CVE-2018-12019
CVE-2018-12020
...
> [CVE-2018-12556] Bypassing signature verification in Yarn package managerЧиво? gpg тут при чём? Дальше даже не стал смотреть.
>> [CVE-2018-12556] Bypassing signature verification in Yarn package manager
> Чиво? gpg тут при чём? Дальше даже не стал смотреть.ну и зря:
https://www.cvedetails.com/vulnerability-list/vendor_id-4711...
Из приведённого списка к GnuPG2 относится только:> mainproc.c in GnuPG before 2.2.8 mishandles
> the original filename during decryption and
> verification actions, which allows remote
> attackers to spoof the output that GnuPG sends…
Пользуясь случаем реквестую замену глючному Gpg4win. В общем, чтобы использовать GnuPG под Windows с человеческим GUI.
> вместо которых выполняются одноразовые вспомогательные обработчики, завершаемые сразу после выполнения задания.А как одноразовый обработчик заменит gpg-agent?
> форк проекта GnuXX
> под разрешительной лицензией BSD, вместо GPLv3сколько они занесли Столлману?.. :)
Зачем переписывать на мертвом языке?
Ну да, пора б на Bosque в в 2k19 писать.
> Ну да, пора б на Bosque в в 2k19 писать.Не, ну я вполне серьезно.
Ладно б на си, с ним потом можно слинковаться из раста, из с++, из джавы/котлина/любого жвм, из питона да вообще всего.
Какой смысл в С++? Ладно б это был очередной плеер. Но они метят в либу, которую, по идее, должны юзать другие...
>Ладно б на си, с ним потом можно слинковаться из раста, из с++, из джавы/котлина/любого жвм, из питона да вообще всего.ниасилил extern "C"?
> ниасилил extern "C"?- то есть классов и темплейтов там не будет? и зачем тогда С++?
Почему не будет? Для внутренних интерфейсов запросто. А для внешних интерфейсов пишутся минимальные обертки с extern "C". Так, например, сделан тот же hyperscan. Ну и на C++ реально проще писать эффективный код, чем на plain C, как раз за счет темплейтов и всяких constexpr.
> Почему не будет? Для внутренних интерфейсов запросто. А для внешних интерфейсов пишутся
> минимальные обертки с extern "C". Так, например, сделан тот же hyperscan.
> Ну и на C++ реально проще писать эффективный код, чем на
> plain C, как раз за счет темплейтов и всяких constexpr.Все это красиво в теории, а на практике, минимальные обертки пишутся на отъе**сь, для половины функциональности в лучшем случае.
> Ну и на C++ реально проще писать эффективный код, чем на plain CИменно поэтому rspamd на си написан?
Основная логика в Rspamd пишется на Lua. Если бы я начинал проект сейчас и знал, что он будет настолько большим, то писал бы на C++, да. Но с тем C++, что был в 2007-м году и с теми моими навыками как программиста, я очень рад, что не стал тогда писать Rspamd на C++, да.
на nodeJS! :)
>переход с языка Cи на C++11Нужно было брать Rust. Тогда мог быть смысл.
Возьми и перепиши на Rust.
За тебя это никто делать не будет.Или ты только критиковать и предлагать всякий бред оразд?
Во, ещё один pedeRust.
Пока ты языком болтаешь, люди уже делают:
О, криптография от Васяна, встречайте. Следующее (или уже третье) поколение выпилильщиков, наверно, из дебиана подвезли [https://www.schneier.com/blog/archives/2008/05/random_number...
Скобка после урла неправильно парсится.
А debian при чём?
> форк инструментария GnuPG
> Весь новый код поставляется под разрешительной лицензией BSDТо есть новые части кода отдельно под BSD, но проект в целом все равно получается под GPL.
Си на С++? Лучше бы уж на Golang переписали.
У go слишком уродливый синтаксис:
func (p *Point) Translate(dx, dy float64) (float64, error) {if nerr, ok := err.(net.Error); ok && nerr.Temporary() {
facepalm
Переписать с C на C++ и поменять лицензию с GPLv3 на BSD. Сказочные дол***бы.