GNU/Linux >> Linux Esercitazione >  >> Linux

Firme digitali con GnuPG

In un articolo precedente, ho introdotto GnuPG verificando un file firmato e crittografando un file per un destinatario utilizzando una chiave pubblica. Ho anche condiviso come creare una coppia di chiavi ed esportare una chiave pubblica in modo da poter ricevere messaggi crittografati. In questo articolo dimostrerò come firmare i file prima di condividerli via e-mail o pubblicarli su un sito web.

Con GnuPG, ci sono diversi metodi per firmare un file.

$ gpg --help | grep -i sign
Sign, check, encrypt or decrypt
 -s, --sign          make a signature
     --clear-sign     make a clear text signature
 -b, --detach-sign   make a detached signature
     --verify          verify a signature

Man mano che ogni opzione viene discussa, firmerò un semplice file di testo.

$ cat sample.txt 
Sample text for gpg signing

Fai una firma

Con il --sign opzione, il file viene effettivamente crittografato con la chiave privata. La chiave pubblica è necessaria per visualizzare il contenuto del file. Questo costringe il destinatario a verificare l'origine e rimuove qualsiasi contenuto di testo in chiaro dal transito. Non è privato poiché chiunque disponga della chiave pubblica può decrittografare il file.

$ gpg -s sample.txt

Ciò si traduce in un file denominato sample.txt.gpg.

$ file sample*
sample.txt:     ASCII text
sample.txt.gpg: data

Per verificare solo la firma, usa --verify opzione. Per visualizzare i contenuti e mostrare la verifica della firma, usa il --decrypt opzione.

$ gpg --decrypt sample.txt.gpg 
Sample text for gpg signing

gpg: Signature made Sat 30 May 2020 09:16:24 AM EDT
gpg:             using DSA key 15AC***********
...omitted...

Fai una firma staccata

L'opzione di firma distaccata è disponibile per fornire a tutti la possibilità di visualizzare il messaggio senza disporre della chiave pubblica. Questo crea un file di firma separato che viene utilizzato per verificare il messaggio originale, se lo si desidera. Nella sua forma più semplice, questo file contiene un hash del messaggio originale ed è crittografato con la chiave privata. Chiunque disponga della chiave pubblica può aprire la firma e quindi confrontare gli hash per verificare l'integrità del file firmato.

Crea il file della firma utilizzando il --detach-sign opzione.

$ gpg -b sample.txt

Il risultato è un .sig separato file di dati.

$ file sample*
sample.txt:     ASCII text
sample.txt.gpg: data
sample.txt.sig: data

Se non desideri condividere, pubblicare o inviare tramite e-mail un file di dati, puoi firmare il file con il --armor opzione e creerà un file di testo ASCII con la firma. Utilizzerà anche il .asc estensione invece di .sig estensione:

$ cat sample.txt.asc 
-----BEGIN PGP SIGNATURE-----

iF0EABECAB0WIQQVrPeUo9lk0dnOTCbvwxHCv6EJdAUCXtO/yAAKCRDvwxHCv6EJ
dC2BAJ49fIcOdBUdE0PELySEMlKNzVnZLgCdG1gsTim3gab2dgL6qagHArSlgq8=
=IvP/
-----END PGP SIGNATURE-----

Il file di testo normale originale e il file di firma separato devono essere entrambi messi a disposizione del destinatario.

Per verificare la firma, specificare il file della firma e quindi il file originale.

$ gpg --verify sample.txt.sig sample.txt

Se sono stati utilizzati i nomi predefiniti, puoi omettere il nome del file non crittografato.

$ gpg --verify sample.txt.sig 
gpg: assuming signed data in 'sample.txt'
gpg: Signature made Sat 30 May 2020 09:23:53 AM EDT
...omitted...

Crea una firma di testo in chiaro

Il --clear-sign opzione è un'opzione più recente in termini di lunga storia di GPG ed è molto comune per i file pubblicati su siti Web come Fedora che scarica i file CHECKSUM. I contenuti sono leggibili da chiunque. Le informazioni sulla firma sono disponibili nello stesso file anche per coloro che vogliono verificare l'origine e l'integrità dei contenuti.

Il --clear-sign l'opzione creerà un nuovo file con .asc estensione.

$ gpg --clear-sign sample.txt
$ file sample*
sample.txt:     ASCII text
sample.txt.asc: ASCII text
sample.txt.gpg: data
sample.txt.sig: data

Per verificare la firma, usa il --verify opzione:

$ gpg --verify sample.txt.asc 
gpg: Signature made Sat 30 May 2020 09:27:56 AM EDT
...omitted...
gpg: WARNING: not a detached signature; file 'sample.txt' was NOT verified!

Si noti che durante il processo di verifica viene visualizzato un messaggio che avverte che il file originale associato non è stato verificato. Puoi rinominare questo file prima di pubblicarlo sul tuo sito web. La verifica controllerà comunque il contenuto del file.

Anche se questo è spesso il metodo più conveniente per i consumatori dei tuoi prodotti, c'è un avviso nella pagina man di GPG che le firme staccate sono l'opzione migliore quando è richiesta una verifica completa.

Dalla pagina man di gpg:

Nota:durante la verifica di una firma in chiaro, GPG verifica solo ciò che costituisce i dati firmati in chiaro e non eventuali dati aggiuntivi al di fuori della firma in chiaro o delle righe di intestazione che seguono direttamente la linea del trattino. L'opzione --output può essere utilizzata per scrivere i dati firmati effettivi, ma ci sono anche altre insidie ​​​​con questo formato. Si suggerisce di evitare firme in chiaro a favore di firme staccate.

Utilizzando una coppia di chiavi specifica

Gli esempi precedenti sono stati tutti firmati con la prima chiave privata disponibile nel mio portachiavi. Potrei voler utilizzare una chiave diversa quando firmo un file per la pubblicazione su un sito Web. Viene creata una coppia di chiavi specificatamente per il progetto o il prodotto. La coppia di chiavi può anche trovarsi su un nuovo portachiavi condiviso.

$ gpg --keyring /etc/gpgkeys --no-default-keyring --full-gen-key <other options>

Quando un file è firmato o crittografato, assicurati di specificare anche il --keyring opzione.

Anche se solo una persona sta utilizzando la chiave per firmare i file, crea una coppia di chiavi separata da utilizzare per la firma. Non utilizzare la stessa chiave per altre attività quotidiane come la crittografia delle email personali. Puoi elencare i nomi delle chiavi private disponibili con gpg --list-secret . L'ID, il nome o l'e-mail possono essere utilizzati per identificare la chiave.

Per firmare il file con una chiave specifica da un portachiavi, usa il --local-user opzione di identità.

$ gpg --local-user "My Project 2" --clear-sign sample.txt

Concludi

Se il tuo file di testo semplice è un elenco di hash di checksum per i download dei tuoi prodotti, quel file, tutti i file delle firme e la chiave pubblica utilizzata per verificare le firme possono essere pubblicati su un sito Web. I consumatori possono quindi verificare i download prima di installare qualsiasi software sui propri sistemi.

[ Vuoi saperne di più sulla sicurezza? Consulta la checklist di sicurezza e conformità IT. ]


Linux
  1. Iniziare con ls

  2. Controlla i permessi dei file Linux con ls

  3. Avviso con nftw

  4. tar -C con un modello di file con caratteri jolly

  5. Come riempire un file con FF usando dd?

Suona un'orchestra digitale con Linux Sampler

Comando Tail Linux con esempi

Ordina il comando in Linux con esempi

Comando Linux WC con esempi

Trova i file persi con Scalpel

Utilizzo del comando Linux mv con esempi