Проектът 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").

Файлът със заглавието съдържа отделни контролни суми за заглавието и структурите с параметри от файла с данни, а също така цифров подпис за проверки на пакета. Файлът с данни включва последователно изброяване на всички файлове и директории, доставяни в пакета. Преди всеки елемент от данните се извежда структура с метаданни, която включва контролна сума за самите данни, размер, права на достъп, относителен път на инсталирания файл и отместване на параметрите на следващия елемент от данните. Ако по време на актуализацията отделните файлове не са променени и контролната сума съвпада, те се пропускат и не се зареждат.

Контролът на целостта на източника може да се извърши, като се получи само заглавният файл, а коректността на избрания файл с данни - като се заредят само структурите с параметрите на този файл и се уверим в съответствието им с контролната сума, заверена в заглавния файл. Самите данни могат да бъдат проверени след зареждането им, използвайки контролната сума от структурата с параметрите, която предшества данните.

Пакетите първоначално предвиждат възможност за повторно изграждане, което означава, че създаването на пакет за определен каталог винаги води до формирането на идентичен пакет. След инсталирането в системата остават само метаданни, които са достатъчни за реконструиране на пакета от инсталираните данни (състав на пакета, контролните суми, пътища и права на достъп са налични в метаданните).

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

  • Атомарност — актуализациите се прилагат по възможност автоматично.
  • Икономия на трафик — данните се предават по мрежата само при промяна на хеша (при актуализация се изтеглят само променените файлове).
  • Висока производителност, използват се бързи криптографски алгоритми (blake3 поддържа паралелна обработка на данни при изчисляване на хеша). Ако данните от репозитория не са били кеширани по-рано, хешът за изтеглените данни може да бъде изчислен по време на изтеглянето.
  • Минимализъм — за разлика от другите формати, pkgar включва само метаданни, нужни за извличане на пакета.
  • Независимост от инсталационния каталог — пакетът може да бъде инсталиран в произволен каталог от всеки потребител (потребителят трябва да има право за запис в избрания каталог).
  • Сигурност — пакетите винаги се криптографски верифицират, а верификацията се извършва преди реализация на действителните операции с пакета (първо се изтегля заглавието и ако цифровият подпис е валиден, данните се изтеглят в временен каталог, които след верификацията се премества в целевия каталог).

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster