que implica crear un archivo comprimido o comprimido
Esa premisa no es necesariamente cierta. No necesariamente tiene que crear un archivo para firmar criptográficamente varios archivos. Daré algunos ejemplos.
Archivo de manifiesto
Puede firmar un archivo que contiene una lista de hashes de archivos, este archivo generalmente se denomina "manifiesto". La firma en el manifiesto cubrirá todos los archivos hash. El uso de un manifiesto en lugar de un archivo tiene la ventaja de que puede agregar y eliminar archivos de su directorio sin invalidar por completo la firma; otras personas pueden modificar dos archivos y probar que solo modificaron los dos archivos, ya que solo se modificó el hash de dos archivos de su versión original. Esencialmente, usted firma el directorio utilizando este tipo de script:
find $directory -type f -print0 | sort -z | xargs --null sha256sum | gpg2 --clearsign > manifest.txt
Esta es más o menos la estrategia que se usa en un archivo JAR (aunque jarsigner usa el certificado x509 en lugar de OpenPGP).
Repositorio de git firmado
Puedes crear un repositorio de git y firmar criptográficamente los archivos utilizando etiquetas / confirmaciones firmadas con gpg.
$ git init
$ git add .
$ git commit --gpg-sign -m "Version 1"
or
$ git tag --sign version-1
archivo tar reproducible
Si insiste en crear un archivo, puede crear un archivo tar reproducible. Estos son mucho más complejos porque un archivo puede contener metadatos, pero afortunadamente el programa tar tiene muchos argumentos que le permiten seleccionar qué metadatos desea conservar. Con un archivo, tiene mucha flexibilidad en cuanto a si desea o no firmar permisos, los tiempos de modificación (que pueden ser necesarios si luego desea usar herramientas como make
) y otros metadatos. Puede crear un alquitrán reproducible como tal:
tar --sort=name \
--mtime="0" \
--owner=0 --group=0 --numeric-owner \
-cf file.tar $directory
gpg2 --sign file.tar
Para obtener más información acerca de la creación de un archivo tar reproducible, sugeriría leer este artículo .