Проект NetBSD объявил (http://blog.netbsd.org/tnf/entry/netbsd_fully_reproducible_b...) о реализации возможности осуществления повторяемых сборок, позволяющих убедиться, что распространяемые бинарные файлы собраны из предоставляемых исходных текстов и не содержат скрытых изменений. Повторяемые сборки пока поддерживаются только для архитектур amd64 и sparc64.Похожие инициативы развиваются (https://reproducible-builds.org/) проектами FreeBSD, Debian, Fedora, Ubuntu, Tails, OpenWrt, LEDE, openSUSE и Arch Linux. Например, во FreeBSD уже обеспечена (https://wiki.freebsd.org/ReproducibleBuilds) возможность повторяемой сборки базовой системы и примерно 80% портов, а в Debian Testing повторяемые сборки реализованы (https://tests.reproducible-builds.org/debian/reproducible.html) для более чем 90% пакетов.
Повторяемые сборки являются важным звеном обеспечения безопасности, так как дают любому пользователю возможность убедиться в том, что предлагаемые дистрибутивом сборки байт в байт совпадает со сборками, собранными лично из исходных текстов. Без возможности проверить тождественность бинарной сборки пользователю остаётся лишь слепо доверять чужой сборочной инфраструктуре, компрометация компилятора или сборочного инструментария в которой может привести к подстановке скрытых закладок.Для обеспечения повторяемых сборок требуется учитывать множество нюансов, таких как использование неизменного состава и версий сборочного инструментария, идентичный набор опций и настроек по умолчанию, сохранение порядка сборки файлов (применение тех же методов сортировки), исключение добавления компилятором непостоянной служебной информации, такой как случайные значения, ссылки на файловые пути и данные о дате и времени сборки.
URL: http://blog.netbsd.org/tnf/entry/netbsd_fully_reproducible_b...
Новость: https://www.opennet.ru/opennews/art.shtml?num=46073
Я поддерживаю данное начинание, однако, мне сложно себе представить человека, проверяющего подлинность пакетов, например, в Дебиане, путём их пересбора.
Человека нет, а вот организацию вполне можно.
Особенно с безопасниками экс-солдафонами, у которых от безделья креатив прёт.
А не в безопасниках даже дело. Вот нанял ты подрядчика, сделал он тебе на заказ кастомный продукт, сдал согласно ТЗ КД по ЕСКД, бинари и софт на носителях. Бинари работают согласно протоколу испытаний, сорцы даже компилятся. Выглядят на взгляд даже похоже. Вроде акт приемки выполненных работ подписывать надо. А как проверить что сорцы от бинарей то ? Что в бинарях костылей не наставлено заради испытания пройти ? Ато ухарей то много работать поменьше а получить побольше, а потом попробуй прищеми их когда акт подписан и "претензий не имею".
>А как проверить что сорцы от бинарей то ? Что в бинарях костылей не наставлено заради испытания пройти ?Достаточно просто не заплатить этим работничкам - по крайней мере сразу. Если у них там закладок наставлено, они их сами же и засветят.
полуразово имхо. встречный иск от разработчика и небольшой гешефт сверху за нарушение контракта )
Кто руками пересобирать будет? Скрипты сборочные наваляют - они по ночам будут выкачивать обновления, выкачивать исходники, в сборочном окружении собирать пакет и сверять со скачанным обновлением!
А как же
-march=native -mtune=native
?
Посмотрел
-mtune=nocona -march=x86-64
Я думал такое уже давно было и есть. Иначе доверия к этим бинарникам не сильно больше чем к винде.
Круто. Ждём когда эта фича появится в Gentoo.
> Круто. Ждём когда эта фича появится в Gentoo.Это не фича, это процесс.
> Круто. Ждём когда эта фича появится в Gentoo.Зачем это Gentoo?
Разве что для верификации stage & LiveCD/DVD
>Зачем это Gentoo?Надо было, наверное, жирный знак *ИРОНИЯ* добавить.
Но, на самом деле, это можно использовать в случаях, когда сборка происходит только на одном из хостов в сети, который в свою очередь раздаёт бинарные пакеты на другие хосты. Такое часто делают в случае множества однотипных серверов на Gentoo.
>>Зачем это Gentoo?
> Надо было, наверное, жирный знак *ИРОНИЯ* добавить.Генте это надо [ну, мне так придумалось], чтоб и сборку у пользователя сделать, и "пакеты" одинаковые получались (хотя б в каких-то пределах) -- чтоб разрабы могли проще(?) пользователей поддерживать. Ну, типа, как в Debian-е?---
> раздаёт бинарные пакеты на другие хосты. Такое часто делают в случае
> множества однотипных серверов на Gentoo.Воспроизводимая сборка для этого не нужна.
Я на своих серверах директории с софтом в /opt/$PACKAGE-$VERSION с-под configure-make-install таскаю _безо _всякой нужды в воспроизводимости.
.
.
.
Там наверху, наверное, непонятно написано? Речь про доверие -- проверил(*), убедился, сделал вывод о доверии(**) к [дистрибутиву? -ору? софту-пакету...].(*)Или тот, кому ты доверяешь, сказал тебе, что проверил - и подтвердил, воспроизводимо. Например, к бинарному пакету из какого Debian-а или NetBSD.
(**)о степени доверия! Не да/нет и не "фича", а больше/меньше и процесс. И субъективность, даже.>>>Debian’s dirtiest secret: Binary packages built by developers are used in the archive
>>> — Lucas Nussbaum, FOSDEM 2015
((взял из слайдов https://archive.fosdem.org/2016/schedule/event/deployments_w..., оригинал не искал))Тор, например, заморочился этим раньше других "дистрибуторов" -- от их софта [, говорят,] буквально зависят жизни. И весьма "влиятельные" враги, например, заинтереованы в компрометации сборки -- на машине разработчика. Поэтому они не ограничиваются "просто сборкой", а и перепроверяют её. В т.ч., чтобы и самим убедиться, что их [и их сборки] не поломали.
И зачем это нужно, если, чтобы убедиться, нужно перекомпилять всю систему особым извращенным способом? Может, тогда проще поставить генту и сверять исходники?
Где извращённым, а где нет. Во Фре, Gentoo, которые и так готовы к сборке из исходников, а последняя и расчитана на это, это весьма тривиальная задача.
> Во Фре, Gentoo, которые и так готовы к сборке из исходников, а последняя и расчитана на это, этоСборка из исходников и _воспроизводимая_ сборка не одно и то же.
Ср.: "у каждого собралась своя уникальная снежинка" и "у каждого собралось то же, что у всех остальных с точностью до бита -- то же, что в бин.пакетах".
И фря, и гента [в т.ч. со Свободой USE-флагов или как их там] -- ровно первое и не второе.
>весьма тривиальная задача.
Нет. Вы не понимаете.
--"Это не мелочи, дружище Битнер."
> Сборка из исходников и _воспроизводимая_ сборка не одно и то же.Согласен, не одно и то же. Но там, где сборка уже есть, к этому прийти поди проще.
Интересно, появится ли такое когда-нибудь в Винде :)
Для пересборки дистрибутива Линукс на современных многоядерных(12-16) компьютерах занимаем немного времени - минут 15 на cd диск с бинарниками уходит. Дистр размером с DVD получается около часа. Что по современным меркам немного, ещё лет 5 и дистры Линукс будут поставлятся только с исходным текстом, а дальше а ля Gentoo
> Дистр размером с DVD получается около часа. Что по современным меркам
> немного, ещё лет 5 и дистры Линукс будут поставлятся только с
> исходным текстом, а дальше а ля GentooСэр теоретик? :) Я б только ЗА, но боюсь что разовьётся в такую фигню, которая только на JS будет %).
что поделаешь, программы на js быстрее всех размножаются :) https://www.opennet.ru/opennews/art.shtml?num=45861
Зато для желающих понимать что и как под рукой будем всегда именно тот исходник, который у них сейчас работает у них в системе
Да ладно, за 15 мин. Ну проц о 16-ти ядрах может и обеспечит такую скорость сборки, но дисковая подсистема - узкое горлышко.
> Да ладно, за 15 мин. Ну проц о 16-ти ядрах может и
> обеспечит такую скорость сборки, но дисковая подсистема - узкое горлышко.хранить исходный текст в сжатом виде на диске :)
Твёрдотельный забодяжить туда на SATA III
> Да ладно, за 15 мин. Ну проц о 16-ти ядрах может и
> обеспечит такую скорость сборки, но дисковая подсистема - узкое горлышко.Тут где-то господин Шигорин приводил данные по сборке Live дистра то ли от проекта АльЛинукс, то ли Базальт. Там даже и 5-7 минут были...
>но дисковая подсистема - узкое горлышко.1. Если достаточно памяти, то Linux отлично кеширует доступ к диску
2. Никто не мешает создавать временно раздел на tmpfs
Очевидно, распараллеливание сборки по типу make -j4 тоже надо отключать...
>Очевидно, распараллеливание сборки по типу make -j4 тоже надо отключать...Мне не очевидно. Почему надо? Если две вещи можно делать параллельно, то мне лично кажется очевидным, что эти две вещи никак друг от друга не зависят.
Это в идеальном мире и у фукцианальщиков. А на практике там мутабельная п* и сайдэффекты могу быть непредсказуемые.
Так потому, что в новости сказано о строгом соблюдении последовательности. Хотя в теории, конечно, хуже от -j 4 вроде бы и не станет. Но то теория...
Я не одобряю такую трату усилий. Если у кого-то паранойя, что его обманывают и он не доверяет репозиторию, пусть пересобирает world в генту. Людям хватает просто доверия к дистрибутивам.
> Я не одобряю
>пусть пересобирает
> Людям хватает простоОтл! Ну, хоть кто-то но опенете знает, что надо людЯм. </отлегло>
//Из соседняя палата обеспокоена: "Ах! Боже мой! Что станет говорить Княгиня Марья Алексевна!"
>> Я не одобряю
>>пусть пересобирает
>> Людям хватает просто
> Отл! Ну, хоть кто-то но опенете знает, что надо людЯм. </отлегло>
> //Из соседняя палата обеспокоена: "Ах! Боже мой! Что станет говорить Княгиня Марья
> Алексевна!"Я не про то. Сообщество косвенно озадачило разработчиков на высший пилотаж. Ну возможно, ну можно повторить, но трата усилий ради какой-то идеалистической идеи? Зачем? Это уже искусство какое-то, а не производство.
> Я не одобряю такую трату усилий.Продолжайте держать нас в курсе, по мере появления новых вещей, которые вы не одобряете. Ваше мнение очень важно для нас.
Если вы выпускаете продукт на базе дистрибутива (это куда удобнее и дешевле, чем собирать всё с нуля) -- скажем, навигационную систему для танкеров, то страховаться от неприятностей -- не такая уж и паранойя. Шансов на неприятность, может, и мало, но вот потенциальный ущерб уж очень велик.