Desarrolladores del sistema operativo , usando el lenguaje Rust y la concepción de microkernel, nuevo gestor de paquetes . Dentro del proyecto se desarrolla un nuevo formato de paquetes, una biblioteca con funciones de gestión de paquetes y herramientas de línea de comandos para crear y extraer una colección de archivos verificados criptográficamente. El código de pkgar está escrito en Rust y bajo licencia MIT.
el formato pkgar no pretende ser universal y está optimizado teniendo en cuenta las particularidades del sistema operativo Redox OS. El gestor de paquetes admite la verificación de la fuente mediante firma digital y control de integridad. Las sumas de verificación se calculan utilizando la función hash . La funcionalidad relacionada con la verificación de pkgar puede estar disponible sin necesidad de guardar realmente el archivo del paquete, manipulando únicamente la parte del encabezado. En particular, el paquete se compone de un archivo de encabezado (.pkgar_head) y un archivo de datos (.pkgar_data). Un paquete completo correctamente firmado (.pkgar) puede obtenerse simplemente uniendo el archivo de encabezado con el archivo de datos ("cat example.pkgar_head example.pkgar_data > example.pkgar").
El archivo de encabezado contiene sumas de verificación separadas para el encabezado y las estructuras de parámetros del archivo de datos, así como una firma digital para verificar el paquete. El archivo de datos incluye una enumeración secuencial de todos los archivos y directorios incluidos en el paquete. Antes de cada elemento de datos se presenta una estructura con metadatos que incluyen la suma de verificación para los propios datos, tamaño, permisos, ruta relativa del archivo a instalar y desplazamiento de los parámetros del siguiente elemento de datos. Si durante la actualización ciertos archivos no han cambiado y la suma de verificación coincide, se omiten y no se cargan.
Se puede verificar la integridad de la fuente obteniendo solo el archivo de encabezado, y la validez del archivo de datos seleccionado cargando solo las estructuras con parámetros de ese archivo y asegurándose de que coincidan con la suma de verificación validada en el archivo de encabezado. Los propios datos se pueden verificar tras su carga, utilizando la suma de verificación de la estructura de parámetros que precede a los datos.
Los paquetes originalmente permiten la posibilidad de reconstrucción repetida, lo que implica que la creación de un paquete para un directorio específico siempre da como resultado la formación de un paquete idéntico. Después de la instalación, solo se conservan en el sistema los metadatos, que son suficientes para reconstruir el paquete a partir de los datos instalados (el contenido del paquete, los resúmenes de control, las rutas y los permisos están disponibles en los metadatos).
Los principales objetivos de pkgar:
- Atomicidad: las actualizaciones se aplican automáticamente siempre que sea posible.
- Ahorro de ancho de banda: los datos se transmiten por la red solo cuando cambia el hash (al actualizar, solo se cargan los archivos que han cambiado).
- Alto rendimiento, se utilizan algoritmos criptográficos rápidos (blake3 admite el procesamiento paralelo de datos al calcular el hash). Si los datos del repositorio no han sido almacenados en caché previamente, el hash de los datos a cargar puede calcularse durante la descarga.
- Minimalismo: a diferencia de otros formatos, pkgar incluye únicamente los metadatos necesarios para extraer el paquete.
- Independencia del directorio de instalación: el paquete se puede instalar en cualquier directorio, por cualquier usuario (el usuario debe tener permisos de escritura en el directorio elegido).
- Seguridad: los paquetes siempre se verifican criptográficamente, y la verificación se realiza antes de llevar a cabo operaciones reales con el paquete (primero se carga el encabezado y, si la firma digital es válida, se cargan los datos en un directorio temporal, que se mueven al directorio de destino después de la verificación).
Fuente: opennet.ru
