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

Розробники операційної системи окислювально-відновний потенціал, написаною з використанням мови Rust та концепції мікроядра, представили новий пакетний менеджер pkgar. У рамках проекту розвивається новий формат пакетів, бібліотека з функціями управління пакетами та інструментарій командного рядка для створення та вилучення криптографічно перевіреної колекції файлів. Код pkgar написаний мовою Rust та поширюється під ліцензією MIT.

pkgar не претендує на універсальність і оптимізований з урахуванням специфіки операційної системи Redox OS. Пакетним менеджером підтримується верифікація джерела цифрового підпису та контроль цілісності. Контрольні суми розраховуються за допомогою хеш-функції blake3. Пов'язана з верифікацією функціональність pkgar може бути доступна без фактичного збереження архіву пакета, маніпулюючи лише заголовною частиною. Зокрема, пакет утворюють заголовний файл (.pkgar_head) та файл з даними (.pkgar_data). Коректно підписаний повний зведений пакет (.pkgar) може бути отриманий шляхом простого приєднання файлу із заголовком до файлу даних («cat example.pkgar_head example.pkgar_data > example.pkgar»).

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

Перевірити цілісність джерела можна отримавши лише заголовний файл, а коректність вибраного файлу з даними - завантаживши лише структури з параметрами цього файлу і впевнившись у відповідності контрольній сумі, завіреній в заголовному файлі. Безпосередньо самі дані можна перевірити після їх завантаження, використовуючи контрольну суму структури з параметрами, що йде перед даними.

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

Основні цілі pkgar:

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

Джерело: opennet.ru

Додати коментар або відгук