28.09.2020

Проект Redox OS представил пакетный менеджер pkgar, написанный на языке Rust


Разработчики операционной системы Redox, написанной с использованием языка Rust и концепции микроядра, представили новый пакетный менеджер pkgar. В рамках проекта развивается новый формат пакетов, библиотека с функциями управления пакетами и инструментарий командной строки для создания и извлечения криптографически проверенной коллекции файлов. Код pkgar написан на языке Rust и распространяется под лицензией MIT.

Формат pkgar не претендует на универсальность и оптимизирован с учётом специфики операционной системы Redox OS. Пакетным менеджером поддерживается верификация источника по цифровой подписи и контроль целостности. Контрольные суммы рассчитываются при помощи хэш-функции blake3. Связанная с верификацией функциональность pkgar может быть доступна без фактического сохранения архива пакета, манипулируя только заголовочной частью. В частности, пакет образуют заголовочный файл (.pkgar_head) и файл с данными (.pkgar_data). Корректно подписанный полный сводный пакет (.pkgar) может быть получен путём простого присоединения файла с заголовком к файлу с данными («cat example.pkgar_head example.pkgar_data › example.pkgar»).

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

Проверить целостность источника можно получив лишь заголовочный файл, а корректность выбранного файла с данными — загрузив лишь структуры с параметрами этого файла и удостоверившись в их соответствии контрольной сумме, заверенной в заголовочном файле. Непосредственно сами данные можно проверить после их загрузки, используя контрольную сумму из cтруктуры с параметрами, идущей перед данными.

Пакеты изначально подразумевают возможность повторяемой сборки, подразумевающей то, что создание пакета для определённого каталога всегда приводит к формированию идентичного пакета. После установки в системе сохраняются лишь метаданные, которых достаточно для реконструирования пакета из установленных данных (состав пакета, контрольные суммы, пути и права доступа имеются в метаданных).

Основные цели pkgar:

  • Атомарность — обновления применяются по возможности автоматически.
  • Экономия трафика — данные передаются по сети только при изменении хэша (при обновлении загружаются только изменившиеся файлы).
  • Высокая производительность, задействованы быстрые криптографические алгоритмы (blake3 поддерживает распараллеливание обработки данных при вычислении хеша). Если данные из репозитория не были ранее прокэшированы хэш для загружаемых данных может быть вычислен во время загрузки.
  • Минималистичность — в отличие от других форматов, pkgar включает только метаданные, необходимые для извлечения пакета.
  • Независимость от каталога установки, пакет может быть установлен в любой каталог, любым пользователем (пользователь должен иметь право на запись в выбранный каталог).
  • Безопасность — пакеты всегда криптографически верифицируются, а верификация выполняется до совершения фактических операций с пакетом (вначале загружается заголовок и если цифровая подпись верна, во временный каталог загружаются данные, которые перемещаются в целевой каталог после верификации).

Источник: https://www.opennet.ru/opennews/art.shtml?num=52546

Добавить комментарий