Miglior formato di archiviazione per la firma crittografica?

3

Voglio firmare un'intera directory di file usando GPG e ciò comporta la creazione di un archivio o di un file compresso, poiché GPG può solo firmare un file, non una directory. Tuttavia, immagino che alcuni formati di archivio possano contenere qualche tipo di dati specifici degli user-agent o timestamp o nonce che potrebbero rendere non riproducibili le firme crittografiche.

La mia domanda: c'è un formato di archivio, come zip o tar, che non varia affatto, in modo tale che le firme crittografiche generate da una saranno uguali su tutti i computer che creano un archivio simile usando il stessi ingressi?

    
posta Jonathan Wilbur 12.01.2018 - 12:09
fonte

1 risposta

4

that entails creating an archive or compressed file

Questa premessa non è necessariamente vera. Non è necessario necessariamente creare un archivio per firmare crittograficamente più file. Darò alcuni esempi.

File manifest

È possibile firmare un file che contiene un elenco di hash di file, questo file viene in genere definito "manifest". La firma sul manifest coprirà tutti i file con hash. L'uso di un manifest invece di un archivio ha il vantaggio di poter aggiungere e rimuovere file dalla directory senza invalidare completamente la firma; altre persone possono modificare due file e provare che hanno modificato solo i due file in quanto solo l'hash di due file è stato modificato rispetto alla versione originale. In sostanza, si firma la directory utilizzando questo tipo di script:

find $directory -type f -print0 | sort -z | xargs --null sha256sum | gpg2 --clearsign > manifest.txt

Questa è più o meno la strategia utilizzata in un file JAR (sebbene jarsigner usi il certificato x509 invece di OpenPGP).

repository git firmato

Puoi creare un repository git e firmare crittograficamente i file usando commit / tags firmati gpg.

$ git init

$ git add .
$ git commit --gpg-sign -m "Version 1"

or

$ git tag --sign version-1

File tar riproducibile

Se si insiste sulla creazione di un archivio, è possibile creare un file tar riproducibile. Questi sono molto più complessi perché un archivio può contenere metadati, ma fortunatamente il programma tar ha molti argomenti che ti permettono di selezionare quali metadati vuoi conservare. Con un archivio, hai molta flessibilità se vuoi o meno firmare le autorizzazioni, i tempi di modifica (che potrebbero essere necessari se in seguito vuoi utilizzare strumenti come make ) e altri metadati. Puoi creare un catrame riproducibile in questo modo:

tar --sort=name \
  --mtime="0" \
  --owner=0 --group=0 --numeric-owner \
  -cf file.tar $directory
gpg2 --sign file.tar

Per ulteriori informazioni sulla creazione di file tar riproducibili, ti suggerisco di leggere questo articolo .

    
risposta data 12.01.2018 - 15:01
fonte

Leggi altre domande sui tag