El proyecto Redox OS presentó el administrador de paquetes pkgar, escrito en Rust

Desarrolladores de sistemas operativos Redox, escrito utilizando el lenguaje Rust y el concepto de microkernel, presentado nuevo administrador de paquetes paquete. El proyecto está desarrollando un nuevo formato de paquete, una biblioteca de administración de paquetes y un conjunto de herramientas de línea de comandos para crear y recuperar una colección de archivos verificados criptográficamente. El código pkgar está escrito en Rust y distribuido por bajo la licencia del MIT.

El formato pkgar no pretende ser universal y está optimizado teniendo en cuenta las características específicas del sistema operativo Redox OS. El administrador de paquetes admite la verificación del origen mediante una firma digital y control de integridad. Las sumas de comprobación se calculan mediante una función hash Blake3. Se puede acceder a la funcionalidad relacionada con la verificación de pkgar sin almacenar realmente el archivo del paquete, manipulando solo la parte del encabezado. En particular, el paquete consta de un archivo de encabezado (.pkgar_head) y un archivo de datos (.pkgar_data). Se puede obtener un paquete de resumen completo correctamente firmado (.pkgar) simplemente agregando el archivo de encabezado al archivo de datos (“cat ejemplo.pkgar_head ejemplo.pkgar_data > ejemplo.pkgar”).

El archivo de encabezado contiene sumas de verificación separadas para el encabezado y estructuras con parámetros del archivo de datos, así como una firma digital para verificar el paquete. El archivo de datos incluye una lista secuencial de todos los archivos y directorios suministrados en el paquete. Cada elemento de datos está precedido por una estructura con metadatos que incluye una suma de verificación para los datos en sí, el tamaño, los derechos de acceso, la ruta relativa del archivo que se está instalando y el desplazamiento de los parámetros del siguiente elemento de datos. Si durante el proceso de actualización los archivos individuales no han cambiado y la suma de comprobación coincide, se omitirán y no se cargarán.

Puede verificar la integridad de la fuente recibiendo solo el archivo de encabezado y la exactitud del archivo de datos seleccionado cargando solo las estructuras con los parámetros de este archivo y asegurándose de que cumplan con la suma de verificación certificada en el archivo de encabezado. Los datos en sí se pueden verificar después de haberlos cargado, utilizando la suma de verificación de la estructura con parámetros que preceden a los datos.

Los paquetes son inherentemente repetibles, lo que significa que la creación de un paquete para un directorio específico siempre dará como resultado un paquete idéntico. Después de la instalación, solo se guardan metadatos en el sistema, lo cual es suficiente para reconstruir el paquete a partir de los datos instalados (la composición del paquete, las sumas de verificación, las rutas y los derechos de acceso están contenidos en los metadatos).

Objetivos principales de pkgar:

  • Atomicidad: las actualizaciones se aplican automáticamente siempre que sea posible.
  • Ahorro de tráfico: los datos se transfieren a través de la red solo cuando cambia el hash (durante la actualización, solo se descargan los archivos modificados).
  • Se utilizan algoritmos criptográficos rápidos y de alto rendimiento (blake3 admite el procesamiento de datos paralelo al calcular hashes). Si los datos del repositorio no se han almacenado en caché previamente, se puede calcular un hash para los datos descargados en el momento de la descarga.
  • Minimalista: a diferencia de otros formatos, pkgar solo incluye los metadatos necesarios para extraer el paquete.
  • Independencia del directorio de instalación: el paquete puede ser instalado en cualquier directorio por cualquier usuario (el usuario debe tener permiso de escritura en el directorio seleccionado).
  • Seguridad: los paquetes siempre se verifican criptográficamente y la verificación se realiza antes de que se realicen operaciones reales en el paquete (el encabezado se carga primero y, si la firma digital es correcta, los datos se cargan en un directorio temporal, que se mueve al directorio de destino después). verificación).

Fuente: opennet.ru

Añadir un comentario