Детерминированная компиляция

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Методика[править | править код]

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

Системы сборки, такие как Gitian[3], могут быть использованы для автоматизации воспроизводимости процесса сборки.

История[править | править код]

Одним из первых проектов по продвижению воспроизводимых сборок был биткоин проект с Gitian.

Позже, в 2013 году проект Тор (анонимная сеть) начал использовать Gitian для воспроизводимости своих сборок [4]

Список литературы[править | править код]

  1. reproducible-builds.org. reproducible-builds.org. — «Reproducible builds are a set of software development practices which create a verifiable path from human readable source code to the binary code used by computers....build system needs to be made entirely deterministic: transforming a given source must always create the same result.». Дата обращения: 22 августа 2016. Архивировано 20 мая 2016 года.
  2. Ratliff, Emily Establishing Correspondence Between an Application and its Source Code | SecurityWeek.com. www.securityweek.com. SecurityWeek (4 April 2016). Дата обращения: 22 августа 2016. Архивировано 20 сентября 2016 года.
  3. Gitian: a secure software distribution method (англ.). gitian.org. Дата обращения: 10 января 2018.
  4. Deterministic Builds Part Two: Technical Details. October 04, 2013

Внешние ссылки[править | править код]