Воспроизводимые сборки - Reproducible builds

Воспроизводимые сборки logo.svg

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

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

Методы

Чтобы процесс компиляции был детерминированным, входные данные компилятора должны быть одинаковыми, независимо от используемой среды сборки. Обычно это включает в себя нормализацию переменные которые могут измениться, например порядок входных файлов, отметки времени, локации, и пути.

Кроме того, компиляторы не должны сами вводить недетерминизм. Это иногда случается при использовании хэш-таблиц со случайным начальным значением хеш-функции. Это также может произойти при использовании адреса переменных, потому что он варьируется от рандомизация разметки адресного пространства (ASLR).

Системы сборки, Такие как Базель и Гитиан,[3] может использоваться для автоматизации процессов детерминированной сборки.

История

В начале 1990-х в проекте GNU использовались воспроизводимые сборки. Журналы изменений с 1992 года указывают на продолжающиеся усилия. [4]

Один из старших[5] проекты по продвижению воспроизводимых сборок - это Биткойн проект с Гитиан. Позже, в 2013 г. Tor (сеть анонимности) project начали использовать Gitian для своих воспроизводимых сборок.[6]

В июле 2013 г. Debian Project начал реализацию воспроизводимых сборок по всему архиву пакетов.[7][8]

К июлю 2017 года было доказано, что сборка более 90% пакетов в репозитории воспроизводима.[9]

В ноябре 2018 года к проекту присоединился проект Reproducible Builds. Сохранение свободы программного обеспечения.[10]

F-дроид использует воспроизводимые сборки, чтобы гарантировать, что распределенные APK используют заявленные бесплатный исходный код.[11]

Рекомендации

  1. ^ а б "reproducible-builds.org". reproducible-builds.org. В архиве из оригинала 20 мая 2016 г.. Получено 22 августа 2016. Воспроизводимые сборки - это набор практик разработки программного обеспечения, которые создают проверяемый путь от исходного кода, читаемого человеком, до двоичного кода, используемого компьютерами ... Система сборки должна быть полностью детерминированной: преобразование данного источника всегда должно приводить к одинаковому результату.
  2. ^ Рэтлифф, Эмили (4 апреля 2016 г.). «Установление соответствия между приложением и его исходным кодом | SecurityWeek.com». www.securityweek.com. SecurityWeek. В архиве из оригинала 20 сентября 2016 г.. Получено 22 августа 2016.
  3. ^ «Gitian: безопасный метод распространения программного обеспечения». gitian.org. Получено 2018-01-10.
  4. ^ «Электронное письмо с описанием воспроизводимых сборок GNU».
  5. ^ "ЛИЦЕНЗИОННЫЙ файл проекта Gitian-Project". Получено 2019-12-03.
  6. ^ Детерминированные конструкции. Часть вторая: технические детали. 4 октября 2013 г.
  7. ^ «Обсуждение воспроизводимых сборок в Debian».
  8. ^ "История воспроизводимых сборок".
  9. ^ "Linux-Distributionen: Более 90 Prozent der Debian-Pakete воспроизводится - Golem.de" (на немецком). 2017-07-24. Получено 2018-10-30.
  10. ^ «Воспроизводимые сборки присоединяются к Software Freedom Conservancy». Получено 2018-12-15.
  11. ^ «Воспроизводимые сборки». F-Droid.

внешняя ссылка