Разработчики Debian подвели (https://lists.debian.org/debian-devel-announce/2015/02/msg00...) первые итоги инициативы (https://wiki.debian.org/ReproducibleBuilds) по обеспечению повторяемых сборок пакетов. Обеспечение повторяемости сборки подтверждает, что исполняемый файл собран именно из заявленных исходных текстов и не содержит посторонние закладки, которые, например, могут быть интегрированы в результате использования поражённого в результате атаки компилятора или сборочного инструментария.
В настоящее время повторяемость сборок достигнута для 83.5% пакетов, представленных в репозитории main. Любой пользователь можно лично убедиться, что предлагаемый дистрибутивом бинарный пакет байт в байт совпадает с пакетом, собранным им лично из исходных текстов. Без возможности проверить тождественность бинарной сборки пользователю остаётся лишь слепо доверять сборочной инфраструктуре дистрибутива.
<center><a href="https://reproducible.debian.net/reproducible.html">&... src="https://www.opennet.ru/opennews/pics_base/0_1423897628.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></a></center>
На первый взгляд обеспечение повторяемости является достаточно простой задачей, но на деле требуется учитывать множество нюансов, в результате которых при сборке одного и того же исходного кода на выходе получаются не идентичные бинарные файлы. Главным образом различия вызваны непостоянством состава сборочного окружения и добавлением в файл меняющейся во времени информации, такой как данные о дате сборки. Для обеспечения повторяемости необходимо полностью воссоздать эталонное сборочное окружение, использовать те же версии сборочного инструментария, идентичных набор опций и настроек по умолчанию, применять те же методы сортировки списков файлов.
Для оценки различий бинарных пакетов подготовлена специальная утилита debbindiff (https://packages.debian.org/sid/debbindiff), позволяющая детально проанализировать различия. Для многих сборочных инструментов подготовлены патчи (https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolc...), в основном связанные с отключением добавления информации о времени сборки. Для контроля за отклонениями в повторяемости сборки введены в строй (https://jenkins.debian.net/view/reproducible/) несколько систем пересборки пакетов в репозитории unstable, построенных с использованием системы непрерывной интеграции Jenkins и запущенных на разных серверах, настройки и начинка которых отличаются.
URL: https://lists.debian.org/debian-devel-announce/2015/02/msg00...
Новость: https://www.opennet.ru/opennews/art.shtml?num=41670