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
>_
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.
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...
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**:
>_ 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
[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.
È 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)
>_ 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.
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]
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
@ -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.
>_ 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
@ -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 --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
>_ less "mia.key"
mio@pc:~$ less "mia.key"
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
>_ 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])
@ -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)
>_ 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
>_ 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
>_ gpg --recv-keys "0x5678EFGH5678EFGH"
mio@pc:~$ gpg --recv-keys "0x5678EFGH5678EFGH"
### 4.5 - Verifichiamo e firmiamo la chiave di 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)
@ -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.
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)
>_ sudo apt install seahorse
mio@pc:~$ sudo apt install seahorse
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.
@ -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)
>_ gpg -k
mio@pc:~$ gpg -k
#### 6.1.2 - Per vedere la lista delle chiavi private (sec)
>_ gpg -K
mio@pc:~$ gpg -K
oppure
>_ gpg --list-secret-keys --keyid-format LONG
mio@pc:~$ gpg --list-secret-keys --keyid-format LONG
### 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.
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
@ -278,7 +281,7 @@ Per evitare di creare chiavi diverse per ogni indirizzo e poi dovrele gestire,
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:
@ -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.
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.
### 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
@ -329,7 +332,7 @@ Questo metodo consente di esportare insieme chiavi pubbliche e private, in modo
È 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.
@ -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
>_ 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
>_ 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!**
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)
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,
@ -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.
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.
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.
@ -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.
gpg --decrypt <testo.asc> <messaggio.txt>
mio@pc:~$ gpg --decrypt <testo.asc> <messaggio.txt>
2.2) Ora esaminiamo il contenuto file "messaggio.txt"
less <messaggio.txt>
mio@pc:~$ less <messaggio.txt>