Воспроизводимый строит , также известный как детерминированная компиляцию, представляет собой процесс компиляции программного обеспечения , которое обеспечивает результирующий двоичный код может быть воспроизведен . Исходный код, скомпилированный с использованием детерминированной компиляции, всегда будет выводить один и тот же двоичный файл. [1] [2]
Воспроизводимые сборки могут действовать как часть цепочки доверия ; [1] исходный код может быть подписан, и детерминированная компиляция может доказать, что двоичный файл был скомпилирован из надежного исходного кода.
Методы [ править ]
Чтобы процесс компиляции был детерминированным, входные данные компилятора должны быть одинаковыми, независимо от используемой среды сборки. Обычно это включает в себя нормализацию переменных, которые могут измениться, таких как порядок входных файлов, отметки времени , локали и пути .
Кроме того, компиляторы не должны сами вводить недетерминизм. Это иногда случается при использовании хеш-таблиц со случайным начальным значением хеш-функции. Это также может произойти при использовании адреса переменных, поскольку он отличается от рандомизации разметки адресного пространства (ASLR).
Строительные системы , такие как Базэл и Gitian, [3] могут быть использованы для автоматизации процессов сборки детерминированных.
История [ править ]
В начале 1990-х в проекте GNU использовались воспроизводимые сборки. Журналы изменений с 1992 года указывают на продолжающиеся усилия. [4]
Одним из самых старых [5] проектов по продвижению воспроизводимых сборок является проект Биткойн с Gitian. Позже, в 2013 году, проект Tor (сеть анонимности) начал использовать Gitian для своих воспроизводимых сборок. [6]
В июле 2013 года проект Debian начал реализацию воспроизводимых сборок по всему архиву пакетов. [7] [8]
К июлю 2017 года было доказано, что сборка более 90% пакетов в репозитории воспроизводима. [9]
В ноябре 2018 года проект Reproducible Builds присоединился к Software Freedom Conservancy . [10]
F-droid использует воспроизводимые сборки, чтобы гарантировать, что распространяемые APK-файлы используют заявленный бесплатный исходный код . [11]
Хвосты портативная операционная система использует воспроизводимое строит и объясняет другим , как проверить их распределение. [12]
Ссылки [ править ]
- ^ a b "reproducible-builds.org" . reproducible-builds.org . Архивировано 20 мая 2016 года . Проверено 22 августа +2016 .
Воспроизводимые сборки - это набор практик разработки программного обеспечения, которые создают проверяемый путь от исходного кода, читаемого человеком, до двоичного кода, используемого компьютерами ... Система сборки должна быть полностью детерминированной: преобразование данного источника всегда должно приводить к одинаковому результату.
- ^ Ratliff, Эмили (4 апреля 2016). «Установление соответствия между приложением и его исходным кодом | SecurityWeek.com» . www.securityweek.com . SecurityWeek. Архивировано 20 сентября 2016 года . Проверено 22 августа +2016 .
- ^ «Gitian: безопасный метод распространения программного обеспечения» . gitian.org . Проверено 10 января 2018 .
- ^ «Электронное письмо с описанием воспроизводимых сборок GNU» .
- ^ "ЛИЦЕНЗИОННЫЙ файл проекта Gitian" . Проверено 3 декабря 2019 .
- ^ Детерминированные сборки Часть вторая: Технические детали. 4 октября 2013 г.
- ^ «Обсуждение воспроизводимых сборок в Debian» .
- ^ «Воспроизводимая история сборок» .
- ^ "Linux-Distributionen: Mehr als 90 Prozent der Debian-Pakete duplicierbar - Golem.de" (на немецком языке). 2017-07-24 . Проверено 30 октября 2018 .
- ^ «Воспроизводимые сборки присоединяются к Software Freedom Conservancy» . Проверено 15 декабря 2018 .
- ^ «Воспроизводимые сборки» . F-Droid.
- ^ «Проверка изображения хвостов на воспроизводимость» . Хвосты.
Внешние ссылки [ править ]
- reproducible-builds.org
- Воспроизводимые сборки Debian