Desenvolvedores do sistema operacional , usando a linguagem Rust e o conceito de microkernel, novo gerenciador de pacotes . No âmbito do projeto, desenvolve-se um novo formato de pacotes, uma biblioteca com funções de gerenciamento de pacotes e uma ferramenta de linha de comando para criar e extrair uma coleção de arquivos com verificação criptográfica. O código pkgar é escrito na linguagem Rust e sob a licença MIT.
O formato pkgar não se propõe a ser universal e é otimizado para as especificidades do sistema operacional Redox OS. O gerenciador de pacotes suporta a verificação da origem por meio de assinatura digital e controle de integridade. As somas de verificação são calculadas usando a função hash . A funcionalidade relacionada à verificação do pkgar pode estar acessível sem a necessidade de realmente salvar o arquivo do pacote, manipulando apenas a parte do cabeçalho. Em particular, o pacote é formado por um arquivo de cabeçalho (.pkgar_head) e um arquivo de dados (.pkgar_data). Um pacote completo corretamente assinado (.pkgar) pode ser obtido simplesmente anexando o arquivo de cabeçalho ao arquivo de dados ("cat example.pkgar_head example.pkgar_data > example.pkgar").
O arquivo de cabeçalho contém somas de verificação separadas para o cabeçalho e as estruturas com parâmetros do arquivo de dados, bem como uma assinatura digital para verificação do pacote. O arquivo de dados inclui uma enumeração sequencial de todos os arquivos e diretórios incluídos no pacote. Antes de cada elemento de dados, uma estrutura com metadados é fornecida, que inclui a soma de verificação dos próprios dados, o tamanho, as permissões de acesso, o caminho relativo do arquivo a ser instalado e o deslocamento dos parâmetros do próximo elemento de dados. Se, durante uma atualização, arquivos individuais não forem alterados e a soma de verificação coincidir, eles são ignorados e não são baixados.
A integridade da origem pode ser verificada obtendo-se apenas o arquivo de cabeçalho, e a correção do arquivo de dados selecionado pode ser verificada baixando apenas as estruturas com os parâmetros desse arquivo e certificando-se de que correspondem à soma de verificação assinada no arquivo de cabeçalho. Os próprios dados podem ser verificados após o download, utilizando a soma de verificação da estrutura com os parâmetros que precedem os dados.
Os pacotes originalmente preveem a possibilidade de montagem repetida, o que significa que a criação de um pacote para um determinado diretório sempre resulta na formação de um pacote idêntico. Após a instalação, apenas os metadados são mantidos, que são suficientes para reconstruir o pacote a partir dos dados instalados (os componentes do pacote, somas de verificação, caminhos e permissões estão nos metadados).
Os principais objetivos do pkgar:
- Atomicidade — as atualizações são aplicadas automaticamente sempre que possível.
- Economia de tráfego — os dados são transferidos pela rede apenas quando o hash é alterado (apenas os arquivos modificados são baixados durante a atualização).
- Alta performance, utilizando algoritmos criptográficos rápidos (blake3 suporta o paralelismo no processamento de dados ao calcular o hash). Se os dados do repositório não foram anteriormente armazenados em cache, o hash dos dados a serem baixados pode ser calculado durante o download.
- Minimalismo — ao contrário de outros formatos, o pkgar inclui apenas os metadados necessários para extrair o pacote.
- Independência do diretório de instalação — o pacote pode ser instalado em qualquer diretório, por qualquer usuário (o usuário deve ter permissão de gravação no diretório escolhido).
- Segurança — os pacotes são sempre verificados criptograficamente, e a verificação é realizada antes de quaisquer operações reais com o pacote (primeiro, o cabeçalho é baixado e, se a assinatura digital estiver correta, os dados são baixados para um diretório temporário, que são movidos para o diretório de destino após a verificação).
Fonte: opennet.ru
