Aggiorna 'docs/GnuPG/GPG(GnuPG)-main-commands.md'

This commit is contained in:
freebird 2020-06-09 11:59:14 +02:00
parent 40298d7bd8
commit ccf573732d

View file

@ -102,22 +102,25 @@ Una buona regola è avere più copie del file cifrato del password manager archi
Apriamo il Terminale della nostra distro Linux ed iniziamo con un pò di pratica Apriamo il Terminale della nostra distro Linux ed iniziamo con un pò di pratica
>_ mio@pc:~$
Negli esempi che seguono, immagina che la tua mail sia "mia@mail.org" e che hai un'amica che si chiama Lea con la quale vuoi comunicare in modo riservato. La mail di Lea è lea@mail.org. Negli esempi che seguono, immagina che la tua mail sia "mia@mail.org" e che hai un'amica che si chiama Lea con la quale vuoi comunicare in modo riservato. La mail di Lea è lea@mail.org.
Lea, che è una tosta (e sta sempre un passo avanti a noi!) ha già una chiave GPG collegata alla sua mail, la cui fingerprint (cioè l'impronta digitale della sua chiave) è "5678EFGH5678EFGH5678EFGH5678EFGH5678EFGH". Lea, che è una tosta (e sta sempre un passo avanti a noi!) ha già una chiave GPG collegata alla sua mail, la cui fingerprint (cioè l'impronta digitale della sua chiave) è "5678EFGH5678EFGH5678EFGH5678EFGH5678EFGH".
**I comandi che seguono quindi sono basati su questo esempio, tu dovrai sostituire tutte le parti contenute tra " " con i tuoi dati reali, per esempio... **I comandi che seguono quindi sono basati su questo esempio, tu dovrai sostituire tutte le parti contenute tra " " con i tuoi dati reali, per esempio...
il comando:** il comando:**
>_ gpg --output "mia"-revoke.asc --gen-revoke "mia@mail.org"
mio@pc:~$ gpg --output "mia"-revoke.asc --gen-revoke "mia@mail.org"
**poterbbe diventare**: **poterbbe diventare**:
>_ gpg --output alice-revoke.asc --gen-revoke alice@bruttocarattere.org
mio@pc:~$ gpg --output alice-revoke.asc --gen-revoke alice@bruttocarattere.org
### 4.1 - Generiamo la nostra chiave GPG completa ### 4.1 - Generiamo la nostra chiave GPG completa
[completa significa: chiave pubblica (pub) + chiave privata (sec) + certificato di revoca] [completa significa: chiave pubblica (pub) + chiave privata (sec) + certificato di revoca]
>_ gpg --full-generate-key mio@pc:~$ gpg --full-generate-key
Verrà richiesto di selezionare un tipo di crittografia da un menu. A meno che non si abbia una buona ragione per non farlo, digitare '**1**' e premere Invio. L'opzione 1 di default, attiva la generazione di sottochiavi RSA che permettono non solo di firmare/crittografare le e-mail, ma anche i files. Verrà richiesto di selezionare un tipo di crittografia da un menu. A meno che non si abbia una buona ragione per non farlo, digitare '**1**' e premere Invio. L'opzione 1 di default, attiva la generazione di sottochiavi RSA che permettono non solo di firmare/crittografare le e-mail, ma anche i files.
È necessario inoltre, scegliere una lunghezza in bit (tra 1024 e 4096) per le chiavi di crittografia, o premendo **Invio** si accetta l'impostazione predefinita visualizzata. Più la chiave è lunga, più è difficile da decifrare in caso di tentativo di attacco. È necessario inoltre, scegliere una lunghezza in bit (tra 1024 e 4096) per le chiavi di crittografia, o premendo **Invio** si accetta l'impostazione predefinita visualizzata. Più la chiave è lunga, più è difficile da decifrare in caso di tentativo di attacco.
@ -134,7 +137,7 @@ La chiave sarà generata, salvata nel keyring (portachiavi) del nostro pc e verr
### 4.2 - Generiamo una copia del certificato di revoca (utile per archiviazione) ### 4.2 - Generiamo una copia del certificato di revoca (utile per archiviazione)
>_ gpg --output "mia"-revoke.asc --gen-revoke "mia@mail.org" mio@pc:~$ gpg --output "mia"-revoke.asc --gen-revoke "mia@mail.org"
Ci verrà chiesto il motivo della richiesta del certificato di revoca, se non c'è uno dei motivi elencati scegli **0** e prosegui. Ci verrà chiesto il motivo della richiesta del certificato di revoca, se non c'è uno dei motivi elencati scegli **0** e prosegui.
Sarà così generato il file "mia-revoke.asc" Sarà così generato il file "mia-revoke.asc"
@ -145,7 +148,7 @@ Sarà così generato il file "mia-revoke.asc"
Se condividiamo il pc con altre persone o semplicemente perché questo ci fa dormire più tranquilli, possiamo cambiare i permessi di accesso al file del certificato di revoca impedendone, di fatto, l'utilizzo ad altri utenti mediante il comando chmod [**-▸**][9] Se condividiamo il pc con altre persone o semplicemente perché questo ci fa dormire più tranquilli, possiamo cambiare i permessi di accesso al file del certificato di revoca impedendone, di fatto, l'utilizzo ad altri utenti mediante il comando chmod [**-▸**][9]
Rimuoviamo dal certificato tutte le autorizzazioni oltre alle nostre. Rimuoviamo dal certificato tutte le autorizzazioni oltre alle nostre.
>_ chmod 600 ~/"mia"-revoke.asc mio@pc:~$ chmod 600 ~/"mia"-revoke.asc
#### 4.2.2 - Esportiamo la nostra chiave PRIVATA (sec) in un file utilizzando l'ID della chiave #### 4.2.2 - Esportiamo la nostra chiave PRIVATA (sec) in un file utilizzando l'ID della chiave
@ -154,7 +157,7 @@ Ad esempio, ipotizziamo che la nostra chiave abbia questa fingerprint "1234 ABCD
**Attenzione**: la chiave privata/segreta dobbiamo averla solo noi (non va data **MAI** a nessunx) e **non deve essere pubblicata**. Deve essere conservata in modo sicuro come la passphrase, ad esempio su un dispositivo (HD o chiavetta) crittografato. Ed è una buona regola averne più di una copia, su dispositivi (**sicuri**) ed in luoghi diversi. **Attenzione**: la chiave privata/segreta dobbiamo averla solo noi (non va data **MAI** a nessunx) e **non deve essere pubblicata**. Deve essere conservata in modo sicuro come la passphrase, ad esempio su un dispositivo (HD o chiavetta) crittografato. Ed è una buona regola averne più di una copia, su dispositivi (**sicuri**) ed in luoghi diversi.
>_ gpg --export-secret-keys --armor "1234ABCD1234ABCD" "secret".asc mio@pc:~$ gpg --export-secret-keys --armor "1234ABCD1234ABCD" "secret".asc
#### 4.2.3 - Esportiamo la chiave PUBBLICA (pub) in un file #### 4.2.3 - Esportiamo la chiave PUBBLICA (pub) in un file
@ -163,11 +166,11 @@ A tale scopo, utilizzeremo l'opzione --export, che deve essere seguita dall'indi
L'opzione --output deve essere seguita dal nome del file in cui si desidera esportare la chiave. L'opzione --output deve essere seguita dal nome del file in cui si desidera esportare la chiave.
L'opzione --armor consente a gpg di generare un output con armatura ASCII anziché un file binario. L'opzione --armor consente a gpg di generare un output con armatura ASCII anziché un file binario.
>_ gpg --output ~/"mia.key" --armor --export "mia@mail.org" mio@pc:~$ gpg --output ~/"mia.key" --armor --export "mia@mail.org"
##### 4.2.3.1 - Ora guardiamo il contenuto del file esportato ##### 4.2.3.1 - Ora guardiamo il contenuto del file esportato
>_ less "mia.key" mio@pc:~$ less "mia.key"
per uscire dalla visualizzazione digitare '**q**'. per uscire dalla visualizzazione digitare '**q**'.
@ -177,7 +180,7 @@ per uscire dalla visualizzazione digitare '**q**'.
#### 4.3.1 - Esportiamo la chiave pubblica su un key-server remoto utilizzando la fingerprint della nostra chiave #### 4.3.1 - Esportiamo la chiave pubblica su un key-server remoto utilizzando la fingerprint della nostra chiave
>_ gpg --send-keys --keyserver https://pgp.mit.edu "1234ABCD1234ABCD1234ABCD1234ABCD1234ABCD" mio@pc:~$ gpg --send-keys --keyserver https://pgp.mit.edu "1234ABCD1234ABCD1234ABCD1234ABCD1234ABCD"
(la fingerprint è l'impronta digitale della chiave. Per saperne di più [**-▸**][10]) (la fingerprint è l'impronta digitale della chiave. Per saperne di più [**-▸**][10])
@ -186,22 +189,22 @@ per uscire dalla visualizzazione digitare '**q**'.
#### 4.4.1 - Se Lea ci ha già passato la sua chiave in un file (es. Lea.key) #### 4.4.1 - Se Lea ci ha già passato la sua chiave in un file (es. Lea.key)
>_ gpg --import "Lea.key" mio@pc:~$ gpg --import "Lea.key"
#### 4.4.2 - Se invece dobbiamo cercarla su un key-server remoto (ce ne sono tanti qui ne citiamo solo uno come esempio) utilizziamo il suo indirizzo mail associato alla chiave #### 4.4.2 - Se invece dobbiamo cercarla su un key-server remoto (ce ne sono tanti qui ne citiamo solo uno come esempio) utilizziamo il suo indirizzo mail associato alla chiave
>_ gpg --keyserver https://pgp.mit.edu --search-keys "lea@mail.org" mio@pc:~$ gpg --keyserver https://pgp.mit.edu --search-keys "lea@mail.org"
#### 4.4.3 - Oppure la cerchiamo su un key-server remoto tramite l'ID #### 4.4.3 - Oppure la cerchiamo su un key-server remoto tramite l'ID
>_ gpg --recv-keys "0x5678EFGH5678EFGH" mio@pc:~$ gpg --recv-keys "0x5678EFGH5678EFGH"
### 4.5 - Verifichiamo e firmiamo la chiave di Lea: ### 4.5 - Verifichiamo e firmiamo la chiave di Lea:
#### 4.5.1 - Verificare la fingerprint (per confrontarla con quella che ci ha comunicato Lea) #### 4.5.1 - Verificare la fingerprint (per confrontarla con quella che ci ha comunicato Lea)
>_ gpg --fingerprint "lea@mail.org" mio@pc:~$ gpg --fingerprint "lea@mail.org"
#### 4.5.2 - Firmiamo la chiave (solo se siamo certi che appartenga realmente a Lea) #### 4.5.2 - Firmiamo la chiave (solo se siamo certi che appartenga realmente a Lea)
@ -209,7 +212,7 @@ L'impronta digitale di una chiave va verificata preferibilmente con il proprieta
Ciò può essere fatto di persona (consigliato), per telefono o attraverso un qualsiasi altro mezzo con il quale sia possibile garantire che si sta comunicando con il vero possessore della chiave. Ciò può essere fatto di persona (consigliato), per telefono o attraverso un qualsiasi altro mezzo con il quale sia possibile garantire che si sta comunicando con il vero possessore della chiave.
Se l'impronta digitale è la stessa che il possessore della chiave detiene, allora si può essere sicuri della sua autenticità. Se l'impronta digitale è la stessa che il possessore della chiave detiene, allora si può essere sicuri della sua autenticità.
>_ gpg --sign-key "lea@mail.org" mio@pc:~$ gpg --sign-key "lea@mail.org"
@ -235,11 +238,11 @@ Un altro tool disponibile per la gestione delle chiavi (ma non delle email) sui
per installarlo (se non lo avete già fatto) per installarlo (se non lo avete già fatto)
>_ sudo apt install seahorse mio@pc:~$ sudo apt install seahorse
lo si lancia da riga di comando lo si lancia da riga di comando
>_ seahorse mio@pc:~$ seahorse
e permette di eseguire con l'ausilio di un'interfaccia grafica, le operazioni più comuni compresa la sincronizzazione del proprio keyring (il portachiavi) con i key-server remoti. e permette di eseguire con l'ausilio di un'interfaccia grafica, le operazioni più comuni compresa la sincronizzazione del proprio keyring (il portachiavi) con i key-server remoti.
@ -251,15 +254,15 @@ e permette di eseguire con l'ausilio di un'interfaccia grafica, le operazioni pi
#### 6.1.1 - Per vedere la lista delle chiavi pubbliche (pub) #### 6.1.1 - Per vedere la lista delle chiavi pubbliche (pub)
>_ gpg -k mio@pc:~$ gpg -k
#### 6.1.2 - Per vedere la lista delle chiavi private (sec) #### 6.1.2 - Per vedere la lista delle chiavi private (sec)
>_ gpg -K mio@pc:~$ gpg -K
oppure oppure
>_ gpg --list-secret-keys --keyid-format LONG mio@pc:~$ gpg --list-secret-keys --keyid-format LONG
### 6.2 - Aggiorniamo periodicamente le chiavi ### 6.2 - Aggiorniamo periodicamente le chiavi
@ -269,7 +272,7 @@ Periodicamente, è possibile chiedere a GPG di controllare le chiavi in uso risp
L'opzione --refresh-keys consente a GPG di eseguire il controllo. L'opzione --keyserver deve essere seguita dal key-server scelto. I key-server si sincronizzano tra loro periodicamente, pertanto la scelta di quale utilizzare non è così importante. Il key-server https://pgp.mit.edu è comunque sempre una buona scelta iniziale. L'opzione --refresh-keys consente a GPG di eseguire il controllo. L'opzione --keyserver deve essere seguita dal key-server scelto. I key-server si sincronizzano tra loro periodicamente, pertanto la scelta di quale utilizzare non è così importante. Il key-server https://pgp.mit.edu è comunque sempre una buona scelta iniziale.
In caso di insuccesso potete comunque provare altri server, quali ad esempio: http://keys.gnupg.net/; https://keyserver.pgp.com o https://pgp.key-server.io/. In caso di insuccesso potete comunque provare altri server, quali ad esempio: http://keys.gnupg.net/; https://keyserver.pgp.com o https://pgp.key-server.io/.
>_ gpg --keyserver https://pgp.mit.edu --refresh-keys mio@pc:~$ gpg --keyserver https://pgp.mit.edu --refresh-keys
### 6.3 - Applichiamo la chiave ad un altro acount ### 6.3 - Applichiamo la chiave ad un altro acount
@ -278,7 +281,7 @@ Per evitare di creare chiavi diverse per ogni indirizzo e poi dovrele gestire,
Digitiamo il comando Digitiamo il comando
>_ gpg --edit-key "mia@mail.org" mio@pc:~$ gpg --edit-key "mia@mail.org"
Ora sei sulla riga di comando GPG. Per aggiungere un'identità di posta, digitare '**adduid**' e premere **Invio**. Verrà quindi richiesto quanto segue: Ora sei sulla riga di comando GPG. Per aggiungere un'identità di posta, digitare '**adduid**' e premere **Invio**. Verrà quindi richiesto quanto segue:
@ -309,13 +312,13 @@ Visto che si tratta della **nostra** chiave e quindi ci possiamo fidare, si cons
Potremmo accorgerci, o anche solo avere il dubbio, che la nostra chiave sia stata compromessa. In questi casi è bene revocare la chiave affinché nessuno possa utilizzarla spacciandosi per noi. Potremmo accorgerci, o anche solo avere il dubbio, che la nostra chiave sia stata compromessa. In questi casi è bene revocare la chiave affinché nessuno possa utilizzarla spacciandosi per noi.
Ricordiamoci che oltre alla nostra privacy, dobbiamo sempre pensare anche a **salvaguardare la rete di persone che ci ha dato fiducia**. Ricordiamoci che oltre alla nostra privacy, dobbiamo sempre pensare anche a **salvaguardare la rete di persone che ci ha dato fiducia**.
>_ gpg --import "mia"-revoke.asc mio@pc:~$ gpg --import "mia"-revoke.asc
Una volta revocata la chiave localmente, è necessario inviare il certificato revocato a un keyserver, indipendentemente dal fatto che la chiave sia stata originariamente rilasciata in questo modo. La distribuzione tramite un server remoto consente ad altri utenti di rendersi rapidamente conto che la chiave è stata compromessa. Una volta revocata la chiave localmente, è necessario inviare il certificato revocato a un keyserver, indipendentemente dal fatto che la chiave sia stata originariamente rilasciata in questo modo. La distribuzione tramite un server remoto consente ad altri utenti di rendersi rapidamente conto che la chiave è stata compromessa.
### 6.5 - Esportiamo la revoca in un key-server remoto ### 6.5 - Esportiamo la revoca in un key-server remoto
>_ gpg --keyserver hkp://pgp.mit.edu --send "mia@mail.org" mio@pc:~$ gpg --keyserver hkp://pgp.mit.edu --send "mia@mail.org"
### 6.6 - Spostiamo (privatamente) le nostre chiavi GPG da un pc ad un altro ### 6.6 - Spostiamo (privatamente) le nostre chiavi GPG da un pc ad un altro
@ -329,7 +332,7 @@ Questo metodo consente di esportare insieme chiavi pubbliche e private, in modo
È possibile ottenere questo risultato dall'output di È possibile ottenere questo risultato dall'output di
>_ gpg -K mio@pc:~$ gpg -K
Si noti che la 'K' maiuscola è importante in modo da elencare solo le chiavi segrete. Si noti che la 'K' maiuscola è importante in modo da elencare solo le chiavi segrete.
@ -337,11 +340,11 @@ Si noti che la 'K' maiuscola è importante in modo da elencare solo le chiavi se
Queste sono ovviamente informazioni pubbliche, quindi non c'è motivo di preoccuparsi per la sicurezza Queste sono ovviamente informazioni pubbliche, quindi non c'è motivo di preoccuparsi per la sicurezza
>_ gpg --output "lamiachiave.gpg" --export "1234ABCD1234ABCD" mio@pc:~$ gpg --output "lamiachiave.gpg" --export "1234ABCD1234ABCD"
#### 6.6.3 - Ora, in un solo passaggio, esporteremo la chiave segreta, la combineremo in un file con la chiave pubblica, e la codificheremo per il trasferimento #### 6.6.3 - Ora, in un solo passaggio, esporteremo la chiave segreta, la combineremo in un file con la chiave pubblica, e la codificheremo per il trasferimento
>_ gpg --output - --export-secret-key "1234ABCD1234ABCD" |\ cat lamiachiave.gpg - |\ gpg --armor --output "lemiechiavi".asc --symmetric --cipher-algo AES256 mio@pc:~$ gpg --output - --export-secret-key "1234ABCD1234ABCD" |\ cat lamiachiave.gpg - |\ gpg --armor --output "lemiechiavi".asc --symmetric --cipher-algo AES256
Verrà richiesto di inserire una passphrase, ovvero la passphrase per questa crittografia temporanea per il trasferimento. Quindi usa una buona passphrase per la sicurezza, e **ricordala!** Verrà richiesto di inserire una passphrase, ovvero la passphrase per questa crittografia temporanea per il trasferimento. Quindi usa una buona passphrase per la sicurezza, e **ricordala!**
Ora trasferisci il file "lemiechiavi".asc nel nuovo computer o da qualsiasi altra parte. Ora trasferisci il file "lemiechiavi".asc nel nuovo computer o da qualsiasi altra parte.
@ -349,7 +352,7 @@ Dal momento che il file è criptato, il trasferimento si può tecnicamente fare
#### 6.6.4 - On the new computer, we need to import the keys from the file. So, run this command to unpack and then import the keys (using pipes again) #### 6.6.4 - On the new computer, we need to import the keys from the file. So, run this command to unpack and then import the keys (using pipes again)
gpg --no-use-agent --output - keys.asc | gpg --import mio@pc:~$ gpg --no-use-agent --output - keys.asc | gpg --import
6. And that, should be, 6. And that, should be,
@ -370,11 +373,11 @@ Ah, no, ma c'è anche un'altra cosa utile che potete fare con le chiavi GPG, cio
Nell'esempio vogliamo crittografare un file che si chiama "prova.txt" e vogliamo inviarlo alla nostra amica Lea. Nell'esempio vogliamo crittografare un file che si chiama "prova.txt" e vogliamo inviarlo alla nostra amica Lea.
L'opzione --encrypt consente a gpg di crittografare il file, mentre l'opzione --sign le consente di firmare il file con i dettagli. L'opzione --armor consente a gpg di creare un file ASCII. L'opzione -r (destinatario) deve essere seguita dall'indirizzo e-mail della persona a cui si sta inviando il file. L'opzione --encrypt consente a gpg di crittografare il file, mentre l'opzione --sign le consente di firmare il file con i dettagli. L'opzione --armor consente a gpg di creare un file ASCII. L'opzione -r (destinatario) deve essere seguita dall'indirizzo e-mail della persona a cui si sta inviando il file.
gpg --encrypt --sign --armor -r <lea@mail.org> <prova.txt> mio@pc:~$ gpg --encrypt --sign --armor -r <lea@mail.org> <prova.txt>
1.1) Il file viene generato con lo stesso nome dell'originale, ma con ".asc" aggiunto al nome del file. Diamo un'occhiata a cosa contiene. 1.1) Il file viene generato con lo stesso nome dell'originale, ma con ".asc" aggiunto al nome del file. Diamo un'occhiata a cosa contiene.
less <prova.txt.asc> mio@pc:~$ less <prova.txt.asc>
Il file è del tutto illeggibile e può essere decrittografato solo da un utente che possiede tua chiave pubblica e la chiave privata di Lea (quindi solo da lei). Ora possiamo inviare il file a Lea fiduciosi che nessun altro possa decifrarlo, perchè solo Lea possiede, oltre alla nostra chiave pubblica, la sua chiave privata. Il file è del tutto illeggibile e può essere decrittografato solo da un utente che possiede tua chiave pubblica e la chiave privata di Lea (quindi solo da lei). Ora possiamo inviare il file a Lea fiduciosi che nessun altro possa decifrarlo, perchè solo Lea possiede, oltre alla nostra chiave pubblica, la sua chiave privata.
@ -385,11 +388,11 @@ Lea ci ha inviato una risposta. Si trova in un file crittografato denominato "te
2.1) Non dobbiamo dire a gpg da chi proviene il file. Questa informazione è già presente nel contenuto crittografato del file. 2.1) Non dobbiamo dire a gpg da chi proviene il file. Questa informazione è già presente nel contenuto crittografato del file.
gpg --decrypt <testo.asc> <messaggio.txt> mio@pc:~$ gpg --decrypt <testo.asc> <messaggio.txt>
2.2) Ora esaminiamo il contenuto file "messaggio.txt" 2.2) Ora esaminiamo il contenuto file "messaggio.txt"
less <messaggio.txt> mio@pc:~$ less <messaggio.txt>