Jump to content

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

Логотип Software Freedom Conservancy проекта воспроизводимых сборок

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

Воспроизводимые сборки могут выступать частью цепочки доверия ; [1] исходный код может быть подписан, а детерминированная компиляция может доказать, что двоичный файл был скомпилирован из доверенного исходного кода. Проверенные воспроизводимые сборки обеспечивают надежную защиту от атак, в которых двоичные файлы не соответствуют их исходному коду, например, если злоумышленник вставил в двоичный файл вредоносный код. Это актуальная атака; злоумышленники иногда атакуют двоичные файлы, но не исходный код, например, потому, что они могут изменить только распространяемый двоичный файл или избежать обнаружения, поскольку разработчики обычно просматривают и изменяют именно исходный код. По данным опроса 17 экспертов, воспроизводимые конструкции получили очень высокую оценку полезности у 58,8% участников, но также и высокую оценку стоимости у 70,6%. [4] Предпринимаются различные усилия по модификации инструментов разработки программного обеспечения для снижения этих затрат.

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

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

Системы сборки , такие как Bazel и Gitian, [5] может использоваться для автоматизации детерминированных процессов сборки.

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

Один из старейших [7] Проекты по продвижению воспроизводимых сборок — это проект Bitcoin с Gitian. Позже, в 2013 году, проект Tor (анонимная сеть) начал использовать Gitian для своих воспроизводимых сборок. [8]

С 2011 года воспроизводимая система сборки Java была разработана для децентрализованного однорангового проекта FOSS: DirectDemocracyP2P. [9] Концепции применения системы для поддержки рекомендаций по автоматическим обновлениям были впервые представлены в апреле 2013 года на конференции Decentralized координации. [10] [11] В 2015 году был опубликован трактат, посвященный деталям реализации самого воспроизводимого инструмента компиляции Java. [12]

В июле 2013 года проект Debian начал внедрять воспроизводимые сборки для всего своего архива пакетов. [13] [14] К июлю 2017 года было доказано, что более 90% пакетов в репозитории собираются воспроизводимо. [15]

В ноябре 2018 года проект Reproducible Builds присоединился к Software Freedom Conservancy . [16]

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

Портативная операционная система Tails использует воспроизводимые сборки и объясняет другим, как проверить их распространение. [18]

NixOS заявляет о 100% воспроизводимой сборке в июне 2021 года для своих минимальных выпусков ISO. [19]

По состоянию на май 2020 г. работает Arch Linux над тем, чтобы сделать все официальные пакеты воспроизводимыми. [20]

Проблемы

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

Согласно проекту Reproducible Builds, временные метки являются «самым большим источником проблем с воспроизводимостью. Многие инструменты сборки записывают текущую дату и время... и большинство форматов архивов с радостью записывают время модификации поверх своих собственных временных меток». [21] Они рекомендуют «лучше использовать дату, соответствующую исходному коду, а не сборке: старое программное обеспечение всегда можно собрать позже», если оно воспроизводимо. Они определяют несколько способов изменения процессов сборки для достижения этой цели:

  • Задайте для переменной среды SOURCE_DATE_EPOCH количество секунд с 1 января 1970 года, используя что-то из исходного кода. Инструменты, поддерживающие эту переменную среды, будут использовать ее значение (если оно установлено) вместо текущей даты и времени.
  • Постобработка вывода для удаления временных меток или их нормализации. В этом часто может помочь инструментальная недетерминированность.
  • Используйте такую ​​библиотеку, как libfaketime, для перехвата запросов текущего времени суток и предоставления контролируемого ответа.

В некоторых случаях необходимо внести другие изменения, чтобы обеспечить воспроизводимость процесса сборки. Например, некоторые структуры данных не гарантируют стабильный порядок при каждом выполнении. Типичное решение — изменить процесс сборки, чтобы указать отсортированный вывод из этих структур. [22]

См. также

[ редактировать ]
  1. ^ Jump up to: а б «reproducible-builds.org» . reproducible-builds.org . Архивировано из оригинала 20 мая 2016 года . Проверено 22 августа 2016 г. Воспроизводимые сборки — это набор методов разработки программного обеспечения, которые создают проверяемый путь от читаемого человеком исходного кода к двоичному коду, используемому компьютерами… Система сборки должна быть полностью детерминированной: преобразование данного источника всегда должно давать один и тот же результат.
  2. ^ Лэмб, Крис; Закчироли, Стефано (март 2022 г.). «Воспроизводимые сборки: повышение целостности цепочек поставок программного обеспечения» . Программное обеспечение IEEE . 39 (2): 62–70. arXiv : 2104.06020 . дои : 10.1109/MS.2021.3073045 . S2CID   233219473 . Проверено 26 марта 2023 г.
  3. ^ Рэтлифф, Эмили (4 апреля 2016 г.). «Установление соответствия между приложением и его исходным кодом | SecurityWeek.com» . www.securityweek.com . Неделя Безопасности. Архивировано из оригинала 20 сентября 2016 года . Проверено 22 августа 2016 г.
  4. ^ Ладиса, Пьерджорджио; Плейт, Хенрик; Мартинес, Матиас; Барэ, Оливье (19 апреля 2022 г.). «Таксономия атак на цепочки поставок программного обеспечения с открытым исходным кодом». arxiv.org . arXiv : 2204.04008 . doi : 10.1109/SP46215.2023.00010 (неактивен 31 января 2024 г.). {{cite journal}}: CS1 maint: DOI неактивен по состоянию на январь 2024 г. ( ссылка )
  5. ^ «Gitian: безопасный метод распространения программного обеспечения» . gitian.org . Проверено 10 января 2018 г.
  6. ^ Гилмор, Джон (24 января 2017 г.). «SOURCE_PREFIX_MAP и бритва Оккама» . rb-general (список рассылки).
  7. ^ "ЛИЦЕНЗИОННЫЙ-файл Gitian-Project" . Гитхаб . Проверено 3 декабря 2019 г.
  8. ^ Детерминированные сборки, часть вторая: Технические подробности. 04 октября 2013 г.
  9. ^ «ДДП2П» . Гитхаб . 2011.
  10. ^ Альхамед, Халид и др. " «Безопасность посредством децентрализованной сертификации автоматических обновлений программного обеспечения с открытым исходным кодом, контролируемого волонтерами» . Гражданин . .", Proceedings of Decentralized координации. стр. 40-59, Lulu Publisher, 6 апреля 2013 г.
  11. ^ Силаги, М.К., Альхамед, К., Дханнун, О., Цинь, С., Вишен, Р., Ноулз, Р., ... и Хираяма, К. (2013, сентябрь). DirectDemocracyP2P — децентрализованные совещательные петиции. В материалах IEEE P2P 2013 (стр. 1-2). IEEE.
  12. ^ Силаги М., Альхамед К. и Стансифер Р. (2015, декабрь). Расширения инструментов Java для поддержки нескольких рекомендателей и распределенных пакетов. В 2015 г. Международная конференция по вычислительной науке и вычислительному интеллекту (CSCI) (стр. 722-725). IEEE.
  13. ^ «Разговор о воспроизводимых сборках в Debian» . 21 сентября 2014 г.
  14. ^ «История воспроизводимых сборок» .
  15. ^ «Дистрибутивы Linux: более 90 процентов воспроизводимых пакетов Debian — Golem.de» (на немецком языке). 24 июля 2017 г. Проверено 30 октября 2018 г.
  16. ^ «Воспроизводимые сборки присоединяются к организации Software Freedom Conservancy» . Проверено 15 декабря 2018 г.
  17. ^ «Воспроизводимые сборки» . F-Дроид.
  18. ^ «Проверка изображения Tails на воспроизводимость» . Решки.
  19. ^ «ISo_minimal.x86_64-linux от Nixos-unstable воспроизводится на 100%!» . Дискуссия о NixOS . 20 июня 2021 г. Проверено 21 июня 2021 г.
  20. ^ «ArchWiki — Воспроизводимые сборки» .
  21. ^ «Временные метки» . Воспроизводимые сборки . Проверено 16 апреля 2022 г.
  22. ^ «Временные метки» . Воспроизводимые сборки . Проверено 16 апреля 2022 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 49c4fdc4df332dd7c5233af23d29bc6c__1708678740
URL1:https://arc.ask3.ru/arc/aa/49/6c/49c4fdc4df332dd7c5233af23d29bc6c.html
Заголовок, (Title) документа по адресу, URL1:
Reproducible builds - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)