Разработчиците на операционната система , с помощта на езика Rust и концепцията за микроядро, нов мениджър на пакети . В рамките на проекта се разработва нов формат на пакети, библиотека с функции за управление на пакети и инструментариум за команден ред за създаване и извличане на криптографски проверена колекция от файлове. Кодът на pkgar е написан на езика Rust и под лиценз MIT.
Форматът pkgar не претендира за универсалност и е оптимизиран с предвид особеностите на операционната система Redox OS. Мениджърът на пакети поддържа верификация на източника чрез цифров подпис и контрол на целостта. Контролни суми се изчисляват с помощта на хеш-функция . Свързаната с верификацията функционалност на pkgar може да бъде достъпна без действително запазване на архива на пакета, манипулирайки само заглавната част. В частност, пакетът се състои от заглавен файл (.pkgar_head) и файл с данни (.pkgar_data). Коректно подписаният пълен обобщен пакет (.pkgar) може да се получи чрез просто присъединяване на файла със заглавието към файла с данни (например, "cat example.pkgar_head example.pkgar_data > example.pkgar").
Файлът със заглавието съдържа отделни контролни суми за заглавието и структурите с параметри от файла с данни, а също така цифров подпис за проверки на пакета. Файлът с данни включва последователно изброяване на всички файлове и директории, доставяни в пакета. Преди всеки елемент от данните се извежда структура с метаданни, която включва контролна сума за самите данни, размер, права на достъп, относителен път на инсталирания файл и отместване на параметрите на следващия елемент от данните. Ако по време на актуализацията отделните файлове не са променени и контролната сума съвпада, те се пропускат и не се зареждат.
Контролът на целостта на източника може да се извърши, като се получи само заглавният файл, а коректността на избрания файл с данни - като се заредят само структурите с параметрите на този файл и се уверим в съответствието им с контролната сума, заверена в заглавния файл. Самите данни могат да бъдат проверени след зареждането им, използвайки контролната сума от структурата с параметрите, която предшества данните.
Пакетите първоначално предвиждат възможност за повторно изграждане, което означава, че създаването на пакет за определен каталог винаги води до формирането на идентичен пакет. След инсталирането в системата остават само метаданни, които са достатъчни за реконструиране на пакета от инсталираните данни (състав на пакета, контролните суми, пътища и права на достъп са налични в метаданните).
Основни цели на pkgar:
- Атомарност — актуализациите се прилагат по възможност автоматично.
- Икономия на трафик — данните се предават по мрежата само при промяна на хеша (при актуализация се изтеглят само променените файлове).
- Висока производителност, използват се бързи криптографски алгоритми (blake3 поддържа паралелна обработка на данни при изчисляване на хеша). Ако данните от репозитория не са били кеширани по-рано, хешът за изтеглените данни може да бъде изчислен по време на изтеглянето.
- Минимализъм — за разлика от другите формати, pkgar включва само метаданни, нужни за извличане на пакета.
- Независимост от инсталационния каталог — пакетът може да бъде инсталиран в произволен каталог от всеки потребител (потребителят трябва да има право за запис в избрания каталог).
- Сигурност — пакетите винаги се криптографски верифицират, а верификацията се извършва преди реализация на действителните операции с пакета (първо се изтегля заглавието и ако цифровият подпис е валиден, данните се изтеглят в временен каталог, които след верификацията се премества в целевия каталог).
Източник: opennet.ru
