Project

General

Profile

UsoDiOpenPGPCard » History » Version 22

Simone Piccardi, 11/04/2016 04:48 PM

1 1 Elena Grandi
h1. Uso di OpenPGP Card
2 1 Elena Grandi
3 2 Elena Grandi
L'"OpenPGP Card":https://en.wikipedia.org/wiki/OpenPGP_card è una smartcard sulla quale si possono salvare in modo sicuro ed usare le sottochiavi segrete usate da GnuPG per crittografia, firma ed anche autenticazione; ne esistono versioni tradizionali, oppure implementate in un dispositivo USB. In ogni caso si possono caricare nuove chiavi sulla scheda, ma non si possono estrarre (per via software) quelle salvate ed è la scheda stessa ad effettuare le operazioni crittografiche.
4 1 Elena Grandi
5 2 Elena Grandi
L'obiettivo che si vuole ottenere è di non avere materiale crittografico segreto sui computer, in modo che un attaccante remoto non possa impossessarsene, mantenendo comunque la comodità di poter usare le chiavi sulla stessa macchina di uso comune. Per farlo si dovrà avere una chiave principale di lunga durata conservata offline ed usata solo saltuariamente per operazioni di gestione della chiave stessa (creazione di nuove sottochiavi, modifica delle scadenze, firma di altre chiavi per la _Web Of Trust_) e delle sottochiavi da usare quotidianamente, conservate sulla card.
6 2 Elena Grandi
7 19 Elena Grandi
L'OpenPGP Card permette di caricare tre sottochiavi con finalità di crittografia, firma ed autenticazione: le prime due si usano normalmente tramite GnuPG, la terza può essere usata per l'autenticazione ssh tramite gpg-agent.
8 2 Elena Grandi
9 3 Elena Grandi
h2. prerequisiti
10 3 Elena Grandi
11 2 Elena Grandi
Tutte le versioni di "GnuPG":https://gnupg.org/ supportano l'uso di base delle OpenPGP Card, ma per meglio sfruttarne le capacità è meglio usare la versione 2.1 (_modern_), specialmente in fase di creazione della chiave e delle sue sottochiavi.
12 1 Elena Grandi
13 20 Elena Grandi
In questa guida si da per scontato l'uso di GnuPG 2.1 installato come eseguibile @gpg@, come ad esempio su Debian da stretch in poi; versioni precedenti o altre distribuzioni potrebbero usare un eseguibile @gpg2@ o altre varianti.
14 20 Elena Grandi
15 3 Elena Grandi
Nel caso si voglia usare poi la Card per autenticazione ssh con versioni precedenti di GnuPG è necessario installare anche gpg-agent (in 2.1 usato di default).
16 3 Elena Grandi
17 3 Elena Grandi
Per il supporto della Card è poi necessario installare "PC/SC Lite":http://pcsclite.alioth.debian.org/.
18 3 Elena Grandi
19 21 Simone Piccardi
Sotto distribuzioni Debian o derivate (che già preinstallano @gnupg@ e @openssh-client@) i pacchetti da installare sono quindi:
20 3 Elena Grandi
21 1 Elena Grandi
<pre>
22 20 Elena Grandi
apt install pcscd gnupg-agent scdaemon
23 1 Elena Grandi
</pre>
24 1 Elena Grandi
25 21 Simone Piccardi
Si tenga presente che in alcuni casi l'accesso alla Card può richiedere versioni sufficientemente aggiornate della libereria, ad esempio con il lettore _O2 Micro OZ776_ è necessario usare una versione di @libccid@ sufficientemente recente (la versione 1.4.15 di Ubuntu Trusty/Mint 17 non funziona, la versione 1.4.22 di Xenial/Mint 18 si).
26 21 Simone Piccardi
27 20 Elena Grandi
Si consiglia di svolgere le operazioni di creazione di chiavi e tutto ciò che coinvolga la chiave principale su un sistema pulito, ad esempio una distribuzione live, meglio se scollegato da internet, e di configurare poi le macchine di uso quotidiano secondo quanto descritto nella sezione "Configurazione su una nuova macchina".
28 2 Elena Grandi
29 2 Elena Grandi
h2. creazione della chiave
30 2 Elena Grandi
31 4 Elena Grandi
Innanzitutto bisogna creare una chiave principale che verrà associata alla nostra identità; questa dovrà essere da almeno 4096 bit per garantirle sufficiente longevità, dato che la sua sostituzione comporta un nuovo ingresso nella Web of Trust.
32 4 Elena Grandi
33 4 Elena Grandi
Ovviamente, se si ha già una chiave gpg da 4096 bit si può saltare questo passaggio ed usare quella.
34 4 Elena Grandi
35 4 Elena Grandi
Innanzitutto, configurare gpg per l'uso di SHA2 aggiungendo le seguenti righe a @~/.gnupg/gpg.conf@:
36 4 Elena Grandi
37 4 Elena Grandi
<pre>
38 4 Elena Grandi
personal-digest-preferences SHA256
39 4 Elena Grandi
cert-digest-algo SHA256
40 4 Elena Grandi
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
41 4 Elena Grandi
</pre>
42 4 Elena Grandi
43 4 Elena Grandi
Quindi generare una nuova chiave: notare l'uso di gpg versione 2.1 e la dimensione a 4096 bit (per il resto si sono accettate le scelte di default oppure inseriti i propri dati).
44 4 Elena Grandi
45 4 Elena Grandi
<pre>
46 4 Elena Grandi
$ gpg --full-gen-key 
47 4 Elena Grandi
gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
48 4 Elena Grandi
This is free software: you are free to change and redistribute it.
49 4 Elena Grandi
There is NO WARRANTY, to the extent permitted by law.
50 4 Elena Grandi
51 4 Elena Grandi
Please select what kind of key you want:
52 4 Elena Grandi
   (1) RSA and RSA (default)
53 4 Elena Grandi
   (2) DSA and Elgamal
54 4 Elena Grandi
   (3) DSA (sign only)
55 4 Elena Grandi
   (4) RSA (sign only)
56 4 Elena Grandi
Your selection? 1
57 4 Elena Grandi
RSA keys may be between 1024 and 4096 bits long.
58 4 Elena Grandi
What keysize do you want? (2048) 4096
59 4 Elena Grandi
Requested keysize is 4096 bits
60 4 Elena Grandi
Please specify how long the key should be valid.
61 4 Elena Grandi
         0 = key does not expire
62 4 Elena Grandi
      <n>  = key expires in n days
63 4 Elena Grandi
      <n>w = key expires in n weeks
64 4 Elena Grandi
      <n>m = key expires in n months
65 4 Elena Grandi
      <n>y = key expires in n years
66 4 Elena Grandi
Key is valid for? (0) 
67 4 Elena Grandi
Key does not expire at all
68 4 Elena Grandi
Is this correct? (y/N) y
69 4 Elena Grandi
70 4 Elena Grandi
GnuPG needs to construct a user ID to identify your key.
71 4 Elena Grandi
72 4 Elena Grandi
Real name: Random User
73 4 Elena Grandi
Email address: random@example.org
74 4 Elena Grandi
Comment: 
75 4 Elena Grandi
You selected this USER-ID:
76 4 Elena Grandi
    "Random User <random@example.org>"
77 4 Elena Grandi
78 4 Elena Grandi
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
79 4 Elena Grandi
We need to generate a lot of random bytes. It is a good idea to perform
80 4 Elena Grandi
some other action (type on the keyboard, move the mouse, utilize the
81 4 Elena Grandi
disks) during the prime generation; this gives the random number
82 4 Elena Grandi
generator a better chance to gain enough entropy.
83 4 Elena Grandi
gpg: key 3E0EE5BAC50DF7C1 marked as ultimately trusted
84 4 Elena Grandi
gpg: directory '/home/random/.gnupg/openpgp-revocs.d' created
85 4 Elena Grandi
gpg: revocation certificate stored as '/home/valhalla/.gnupg/openpgp-revocs.d/19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1.rev'
86 4 Elena Grandi
public and secret key created and signed.
87 4 Elena Grandi
88 4 Elena Grandi
pub   rsa4096 2016-10-19 [SC]
89 4 Elena Grandi
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
90 4 Elena Grandi
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
91 4 Elena Grandi
uid                      Random User <random@example.org>
92 4 Elena Grandi
sub   rsa4096 2016-10-19 [E]
93 4 Elena Grandi
</pre>
94 4 Elena Grandi
95 2 Elena Grandi
h2. creazione delle sottochiavi
96 2 Elena Grandi
97 5 Elena Grandi
Questo è il punto in cui è particolarmente importante l'uso di GnuPG 2.1, che rende molto più semplice la creazione di una chiave per l'autenticazione.
98 5 Elena Grandi
99 5 Elena Grandi
Molte delle OpenPGP Card disponibili sul mercato supportano chiavi al massimo a 2048 bit: questo non è un grosso problema dato che al momento sono considerate ancora ragionevolmente sicure, ed una loro eventuale sostituzione in futuro non è particolarmente onerosa (oltre ovviamente alla necessità di usare una Card o un dispositivo diverso).
100 5 Elena Grandi
101 5 Elena Grandi
Per generare le sottochiavi necessarie, si entra in modalità di modifica con l'opzione @--expert@ che abilita la creazione di chiavi di autenticazione.
102 5 Elena Grandi
103 5 Elena Grandi
<pre>
104 5 Elena Grandi
$ gpg --expert --edit-key 3E0EE5BAC50DF7C1
105 5 Elena Grandi
gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
106 5 Elena Grandi
This is free software: you are free to change and redistribute it.
107 5 Elena Grandi
There is NO WARRANTY, to the extent permitted by law.
108 5 Elena Grandi
109 5 Elena Grandi
Secret key is available.
110 5 Elena Grandi
111 5 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
112 5 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
113 5 Elena Grandi
     trust: ultimate      validity: ultimate
114 5 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
115 5 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
116 5 Elena Grandi
[ultimate] (1). Random User <random@example.org>
117 5 Elena Grandi
</pre>
118 5 Elena Grandi
119 22 Simone Piccardi
Quindi si crea prima una normale sottochiave di firma (opzione 4), alla selezione verrà chiesta (due volte) una passphrase per la nuova sottochiave ed anche la passphrase per la chiave principale:
120 5 Elena Grandi
121 5 Elena Grandi
<pre>
122 5 Elena Grandi
gpg> addkey 
123 5 Elena Grandi
Please select what kind of key you want:
124 5 Elena Grandi
   (3) DSA (sign only)
125 5 Elena Grandi
   (4) RSA (sign only)
126 5 Elena Grandi
   (5) Elgamal (encrypt only)
127 5 Elena Grandi
   (6) RSA (encrypt only)
128 5 Elena Grandi
   (7) DSA (set your own capabilities)
129 5 Elena Grandi
   (8) RSA (set your own capabilities)
130 5 Elena Grandi
  (10) ECC (sign only)
131 5 Elena Grandi
  (11) ECC (set your own capabilities)
132 5 Elena Grandi
  (12) ECC (encrypt only)
133 5 Elena Grandi
  (13) Existing key
134 5 Elena Grandi
Your selection? 4
135 5 Elena Grandi
RSA keys may be between 1024 and 4096 bits long.
136 5 Elena Grandi
What keysize do you want? (2048) 
137 5 Elena Grandi
Requested keysize is 2048 bits
138 5 Elena Grandi
Please specify how long the key should be valid.
139 5 Elena Grandi
         0 = key does not expire
140 5 Elena Grandi
      <n>  = key expires in n days
141 5 Elena Grandi
      <n>w = key expires in n weeks
142 5 Elena Grandi
      <n>m = key expires in n months
143 5 Elena Grandi
      <n>y = key expires in n years
144 5 Elena Grandi
Key is valid for? (0) 1y
145 5 Elena Grandi
Key expires at Thu 19 Oct 2017 12:15:49 CEST
146 5 Elena Grandi
Is this correct? (y/N) y
147 5 Elena Grandi
Really create? (y/N) y
148 5 Elena Grandi
We need to generate a lot of random bytes. It is a good idea to perform
149 5 Elena Grandi
some other action (type on the keyboard, move the mouse, utilize the
150 5 Elena Grandi
disks) during the prime generation; this gives the random number
151 5 Elena Grandi
generator a better chance to gain enough entropy.
152 5 Elena Grandi
153 5 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
154 5 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
155 5 Elena Grandi
     trust: ultimate      validity: ultimate
156 5 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
157 5 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
158 5 Elena Grandi
ssb  rsa2048/40A2ADF0FE9E4620
159 5 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
160 5 Elena Grandi
[ultimate] (1). Random User <random@example.org>
161 5 Elena Grandi
162 5 Elena Grandi
</pre>
163 5 Elena Grandi
164 22 Simone Piccardi
Poi occorre creare una normale sottochiave per la crittografia (opzione 6), anche in questo caso verrà chiesta due volte la passphrase per la nuova chiave, ma avendola già data prima non sarà richiesta quella della chiave principale:
165 5 Elena Grandi
166 5 Elena Grandi
<pre>
167 5 Elena Grandi
gpg> addkey 
168 5 Elena Grandi
Please select what kind of key you want:
169 5 Elena Grandi
   (3) DSA (sign only)
170 5 Elena Grandi
   (4) RSA (sign only)
171 5 Elena Grandi
   (5) Elgamal (encrypt only)
172 5 Elena Grandi
   (6) RSA (encrypt only)
173 5 Elena Grandi
   (7) DSA (set your own capabilities)
174 5 Elena Grandi
   (8) RSA (set your own capabilities)
175 5 Elena Grandi
  (10) ECC (sign only)
176 5 Elena Grandi
  (11) ECC (set your own capabilities)
177 5 Elena Grandi
  (12) ECC (encrypt only)
178 5 Elena Grandi
  (13) Existing key
179 5 Elena Grandi
Your selection? 6
180 5 Elena Grandi
RSA keys may be between 1024 and 4096 bits long.
181 5 Elena Grandi
What keysize do you want? (2048) 
182 5 Elena Grandi
Requested keysize is 2048 bits
183 5 Elena Grandi
Please specify how long the key should be valid.
184 5 Elena Grandi
         0 = key does not expire
185 5 Elena Grandi
      <n>  = key expires in n days
186 5 Elena Grandi
      <n>w = key expires in n weeks
187 5 Elena Grandi
      <n>m = key expires in n months
188 5 Elena Grandi
      <n>y = key expires in n years
189 5 Elena Grandi
Key is valid for? (0) 1y
190 5 Elena Grandi
Key expires at Thu 19 Oct 2017 12:18:16 CEST
191 5 Elena Grandi
Is this correct? (y/N) y
192 5 Elena Grandi
Really create? (y/N) y
193 5 Elena Grandi
We need to generate a lot of random bytes. It is a good idea to perform
194 5 Elena Grandi
some other action (type on the keyboard, move the mouse, utilize the
195 5 Elena Grandi
disks) during the prime generation; this gives the random number
196 5 Elena Grandi
generator a better chance to gain enough entropy.
197 5 Elena Grandi
198 5 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
199 5 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
200 5 Elena Grandi
     trust: ultimate      validity: ultimate
201 5 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
202 5 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
203 5 Elena Grandi
ssb  rsa2048/40A2ADF0FE9E4620
204 5 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
205 5 Elena Grandi
ssb  rsa2048/ED9BBD7B3BFF900F
206 5 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: E   
207 5 Elena Grandi
[ultimate] (1). Random User <random@example.org>
208 5 Elena Grandi
</pre>
209 5 Elena Grandi
210 22 Simone Piccardi
Ed infine una sottochiave per l'autenticazione, selezionando l'opzione 8, togliendo le capacità di firma e crittografia e mettendo quella di autenticazione (anche qui occorrerà specificare una passphrase).
211 5 Elena Grandi
212 5 Elena Grandi
<pre>
213 5 Elena Grandi
gpg> addkey 
214 5 Elena Grandi
Please select what kind of key you want:
215 5 Elena Grandi
   (3) DSA (sign only)
216 5 Elena Grandi
   (4) RSA (sign only)
217 5 Elena Grandi
   (5) Elgamal (encrypt only)
218 5 Elena Grandi
   (6) RSA (encrypt only)
219 5 Elena Grandi
   (7) DSA (set your own capabilities)
220 5 Elena Grandi
   (8) RSA (set your own capabilities)
221 5 Elena Grandi
  (10) ECC (sign only)
222 5 Elena Grandi
  (11) ECC (set your own capabilities)
223 5 Elena Grandi
  (12) ECC (encrypt only)
224 5 Elena Grandi
  (13) Existing key
225 5 Elena Grandi
Your selection? 8
226 5 Elena Grandi
227 5 Elena Grandi
Possible actions for a RSA key: Sign Encrypt Authenticate 
228 5 Elena Grandi
Current allowed actions: Sign Encrypt 
229 5 Elena Grandi
230 5 Elena Grandi
   (S) Toggle the sign capability
231 5 Elena Grandi
   (E) Toggle the encrypt capability
232 5 Elena Grandi
   (A) Toggle the authenticate capability
233 5 Elena Grandi
   (Q) Finished
234 5 Elena Grandi
235 5 Elena Grandi
Your selection? s
236 5 Elena Grandi
237 5 Elena Grandi
Possible actions for a RSA key: Sign Encrypt Authenticate 
238 5 Elena Grandi
Current allowed actions: Encrypt 
239 5 Elena Grandi
240 5 Elena Grandi
   (S) Toggle the sign capability
241 5 Elena Grandi
   (E) Toggle the encrypt capability
242 5 Elena Grandi
   (A) Toggle the authenticate capability
243 5 Elena Grandi
   (Q) Finished
244 5 Elena Grandi
245 5 Elena Grandi
Your selection? e
246 5 Elena Grandi
247 5 Elena Grandi
Possible actions for a RSA key: Sign Encrypt Authenticate 
248 5 Elena Grandi
Current allowed actions: 
249 5 Elena Grandi
250 5 Elena Grandi
   (S) Toggle the sign capability
251 5 Elena Grandi
   (E) Toggle the encrypt capability
252 5 Elena Grandi
   (A) Toggle the authenticate capability
253 5 Elena Grandi
   (Q) Finished
254 5 Elena Grandi
255 5 Elena Grandi
Your selection? a
256 5 Elena Grandi
257 5 Elena Grandi
Possible actions for a RSA key: Sign Encrypt Authenticate 
258 5 Elena Grandi
Current allowed actions: Authenticate 
259 5 Elena Grandi
260 5 Elena Grandi
   (S) Toggle the sign capability
261 5 Elena Grandi
   (E) Toggle the encrypt capability
262 5 Elena Grandi
   (A) Toggle the authenticate capability
263 5 Elena Grandi
   (Q) Finished
264 5 Elena Grandi
265 5 Elena Grandi
Your selection? q
266 5 Elena Grandi
RSA keys may be between 1024 and 4096 bits long.
267 5 Elena Grandi
What keysize do you want? (2048) 
268 5 Elena Grandi
Requested keysize is 2048 bits
269 5 Elena Grandi
Please specify how long the key should be valid.
270 5 Elena Grandi
         0 = key does not expire
271 5 Elena Grandi
      <n>  = key expires in n days
272 5 Elena Grandi
      <n>w = key expires in n weeks
273 5 Elena Grandi
      <n>m = key expires in n months
274 5 Elena Grandi
      <n>y = key expires in n years
275 5 Elena Grandi
Key is valid for? (0) 1y
276 5 Elena Grandi
Key expires at Thu 19 Oct 2017 12:24:56 CEST
277 5 Elena Grandi
Is this correct? (y/N) y
278 5 Elena Grandi
Really create? (y/N) y
279 5 Elena Grandi
We need to generate a lot of random bytes. It is a good idea to perform
280 5 Elena Grandi
some other action (type on the keyboard, move the mouse, utilize the
281 5 Elena Grandi
disks) during the prime generation; this gives the random number
282 5 Elena Grandi
generator a better chance to gain enough entropy.
283 5 Elena Grandi
284 5 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
285 5 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
286 5 Elena Grandi
     trust: ultimate      validity: ultimate
287 5 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
288 5 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
289 5 Elena Grandi
ssb  rsa2048/40A2ADF0FE9E4620
290 5 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
291 5 Elena Grandi
ssb  rsa2048/ED9BBD7B3BFF900F
292 5 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: E   
293 5 Elena Grandi
ssb  rsa2048/5F89B668295AE797
294 5 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: A   
295 5 Elena Grandi
[ultimate] (1). Random User <random@example.org>
296 5 Elena Grandi
</pre>
297 5 Elena Grandi
298 5 Elena Grandi
Si può quindi uscire dalla modalità di modifica chiave, salvando le modifiche.
299 5 Elena Grandi
300 5 Elena Grandi
<pre>
301 5 Elena Grandi
gpg> save
302 5 Elena Grandi
</pre>
303 5 Elena Grandi
304 7 Elena Grandi
h2. salvataggio su supporto esterno
305 7 Elena Grandi
306 8 Elena Grandi
A questo punto la chiave è ancora gestita nel modo tradizionale, su hard disk. Questo è il momento di salvarne un backup e di farne una copia su chiavetta USB da usare in futuro per le modifiche della chiave.
307 8 Elena Grandi
308 9 Elena Grandi
Per il backup ci sono vari metodi, da una semplice e poco efficiente copia di tutta la @~/.gnupg@ su un ulteriore supporto all'uso di "paperkey":http://www.jabberwocky.com/software/paperkey/ per salvare una copia su carta; l'importante è che venga fatto e custodito in un luogo sicuro, anche se magari remoto (cassetta di sicurezza).
309 8 Elena Grandi
310 22 Simone Piccardi
Per avere una copia della chiave principale da usare sporadicamente, invece, è necessario copiare l'intera @~/.gnupg@ su una chiavetta USB o simili; una volta fatta la copia verificare che contenga quanto dovuto con:
311 9 Elena Grandi
312 9 Elena Grandi
<pre>
313 9 Elena Grandi
$ gpg --homedir indirizzo/della/chiavetta/gnupg --list-secret-keys
314 9 Elena Grandi
indirizzo/della/chiavetta/gnupg
315 9 Elena Grandi
pubring.gpg
316 9 Elena Grandi
---------------------------------
317 9 Elena Grandi
sec   rsa4096 2016-10-19 [SC]
318 9 Elena Grandi
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
319 9 Elena Grandi
uid           [ultimate] Random User <random@example.org>
320 9 Elena Grandi
ssb   rsa4096 2016-10-19 [E]
321 9 Elena Grandi
ssb   rsa2048 2016-10-19 [S] [expires: 2017-10-19]
322 9 Elena Grandi
ssb   rsa2048 2016-10-19 [E] [expires: 2017-10-19]
323 9 Elena Grandi
ssb   rsa2048 2016-10-19 [A] [expires: 2017-10-19]
324 9 Elena Grandi
</pre>
325 9 Elena Grandi
326 9 Elena Grandi
smontare la chiavetta e riporla in un luogo sicuro; la si userà nuovamente quando sarà necessario cambiare le date di scadenza delle sottochiavi, oppure firmare chiavi di altre persone, per la Web of Trust.
327 8 Elena Grandi
328 22 Simone Piccardi
h2. Spostamento delle chiavi sulla Card
329 2 Elena Grandi
330 10 Elena Grandi
Per il prossimo passaggio è estremamente importante assicurarsi di aver fatto le copie delle chiavi e sottochiavi private: in questo passaggio verranno trasferite sulla Card, dalla quale non possono più essere estratte, e cancellate dal disco.
331 10 Elena Grandi
332 10 Elena Grandi
Collegare il lettore al computer, inserire la Card e controllare che venga correttamente riconosciuta:
333 10 Elena Grandi
334 10 Elena Grandi
<pre>
335 10 Elena Grandi
$ gpg --card-status 
336 10 Elena Grandi
Reader ...........: ####
337 10 Elena Grandi
Application ID ...: ####
338 10 Elena Grandi
Version ..........: 2.0
339 10 Elena Grandi
Manufacturer .....: ####
340 10 Elena Grandi
Serial number ....: ####
341 10 Elena Grandi
Name of cardholder: [not set]
342 10 Elena Grandi
Language prefs ...: [not set]
343 10 Elena Grandi
Sex ..............: unspecified
344 10 Elena Grandi
URL of public key : [not set]
345 10 Elena Grandi
Login data .......: [not set]
346 10 Elena Grandi
Signature PIN ....: forced
347 10 Elena Grandi
Key attributes ...: rsa2048 rsa2048 rsa2048
348 10 Elena Grandi
Max. PIN lengths .: 127 127 127
349 10 Elena Grandi
PIN retry counter : 3 3 3
350 10 Elena Grandi
Signature counter : 0
351 10 Elena Grandi
Signature key ....: [none]
352 10 Elena Grandi
Encryption key....: [none]
353 10 Elena Grandi
Authentication key: [none]
354 10 Elena Grandi
General key info..: [none]
355 10 Elena Grandi
</pre>
356 10 Elena Grandi
357 22 Simone Piccardi
Se la Card è nuova occorre cambiare poi i PIN della chiave rispetto ai default:
358 12 Elena Grandi
359 12 Elena Grandi
<pre>
360 12 Elena Grandi
$ gpg --card-edit
361 12 Elena Grandi
Reader ...........: ####
362 12 Elena Grandi
Application ID ...: ####
363 12 Elena Grandi
Version ..........: 2.0
364 12 Elena Grandi
Manufacturer .....: ####
365 12 Elena Grandi
Serial number ....: ####
366 12 Elena Grandi
Name of cardholder: [not set]
367 12 Elena Grandi
Language prefs ...: [not set]
368 12 Elena Grandi
Sex ..............: unspecified
369 12 Elena Grandi
URL of public key : [not set]
370 12 Elena Grandi
Login data .......: [not set]
371 12 Elena Grandi
Signature PIN ....: forced
372 12 Elena Grandi
Key attributes ...: rsa2048 rsa2048 rsa2048
373 12 Elena Grandi
Max. PIN lengths .: 127 127 127
374 12 Elena Grandi
PIN retry counter : 3 3 3
375 12 Elena Grandi
Signature counter : 0
376 12 Elena Grandi
Signature key ....: [none]
377 12 Elena Grandi
Encryption key....: [none]
378 12 Elena Grandi
Authentication key: [none]
379 12 Elena Grandi
General key info..: [none]
380 12 Elena Grandi
381 12 Elena Grandi
gpg/card> admin
382 12 Elena Grandi
Admin commands are allowed
383 12 Elena Grandi
384 12 Elena Grandi
gpg/card> passwd
385 12 Elena Grandi
gpg: OpenPGP card no. #### detected
386 12 Elena Grandi
387 12 Elena Grandi
1 - change PIN
388 12 Elena Grandi
2 - unblock PIN
389 12 Elena Grandi
3 - change Admin PIN
390 12 Elena Grandi
4 - set the Reset Code
391 1 Elena Grandi
Q - quit
392 21 Simone Piccardi
393 21 Simone Piccardi
Your selection? 1
394 1 Elena Grandi
</pre>
395 21 Simone Piccardi
396 22 Simone Piccardi
a questo punto verrà chiesto il PIN Standard corrente (il default della carta è 123456) e poi due volte quello nuovo (si faccia attenzione a mettere il PIN corretto, si hanno un massimo di tre errori possibili, dopo verrà bloccato, lo si può sbloccare solo con il PIN amministrativo). Quest'ultimo si cambia dal default selezionando ulteriormente:
397 21 Simone Piccardi
398 21 Simone Piccardi
<pre>
399 21 Simone Piccardi
PIN changed.
400 21 Simone Piccardi
401 21 Simone Piccardi
1 - change PIN
402 21 Simone Piccardi
2 - unblock PIN
403 1 Elena Grandi
3 - change Admin PIN
404 1 Elena Grandi
4 - set the Reset Code
405 1 Elena Grandi
Q - quit
406 21 Simone Piccardi
407 21 Simone Piccardi
Selezione? 3
408 21 Simone Piccardi
PIN changed.
409 21 Simone Piccardi
</pre>
410 21 Simone Piccardi
411 22 Simone Piccardi
dando quello vecchio e ripetendo due volte quello nuovo; qui però tre errori nel dare quello corrente comporteranno l'impossibilità di modificarlo, rendendo di fatto non più recuperabile la Card senza un reset alle condizioni di fabbrica.
412 21 Simone Piccardi
413 22 Simone Piccardi
A questo menù si può accedere direttamente anche con il comando @gpg --change-pin@, e ad esempio per recuperare un PIN dimenticato si può selezionare l'opzione 2, _Unblock PIN_ nel qual caso verrà chiesto il PIN amministrativo, e si potrà impostare un nuovo PIN. 
414 22 Simone Piccardi
415 10 Elena Grandi
Si può quindi passare a spostare le varie sottochiavi sulla Card, aprendo la modalità di editing della chiave:
416 10 Elena Grandi
417 10 Elena Grandi
<pre>
418 10 Elena Grandi
$ gpg --edit-key 3E0EE5BAC50DF7C1
419 10 Elena Grandi
gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
420 10 Elena Grandi
This is free software: you are free to change and redistribute it.
421 10 Elena Grandi
There is NO WARRANTY, to the extent permitted by law.
422 10 Elena Grandi
423 10 Elena Grandi
Secret key is available.
424 10 Elena Grandi
425 10 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
426 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
427 10 Elena Grandi
     trust: ultimate      validity: ultimate
428 10 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
429 1 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
430 10 Elena Grandi
ssb  rsa2048/40A2ADF0FE9E4620
431 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
432 10 Elena Grandi
ssb  rsa2048/ED9BBD7B3BFF900F
433 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: E   
434 10 Elena Grandi
ssb  rsa2048/5F89B668295AE797
435 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: A   
436 10 Elena Grandi
[ultimate] (1). Random User <random@example.org>
437 10 Elena Grandi
</pre>
438 10 Elena Grandi
439 22 Simone Piccardi
passando alla modalità di modifica delle chiavi private, con il comando @toggle@ che consente di selezionare le chiavi:
440 10 Elena Grandi
441 10 Elena Grandi
<pre>
442 10 Elena Grandi
gpg> toggle
443 10 Elena Grandi
444 10 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
445 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
446 10 Elena Grandi
     trust: ultimate      validity: ultimate
447 1 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
448 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
449 10 Elena Grandi
ssb  rsa2048/40A2ADF0FE9E4620
450 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
451 10 Elena Grandi
ssb  rsa2048/ED9BBD7B3BFF900F
452 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: E   
453 10 Elena Grandi
ssb  rsa2048/5F89B668295AE797
454 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: A   
455 10 Elena Grandi
[ultimate] (1). Random User <random@example.org>
456 10 Elena Grandi
</pre>
457 10 Elena Grandi
458 22 Simone Piccardi
per trasferire una ad una le sottochiavi sulla Card andranno selezionate ed inserite, una volta usato @toggle@ il comando @key@ permette di selezionare/deselezionare le chiavi da trasferire con il comando @keytocard@; pertanto per trasferire la chiave di firma useremo i comandi:
459 10 Elena Grandi
460 10 Elena Grandi
<pre>
461 10 Elena Grandi
gpg> key 2
462 10 Elena Grandi
463 10 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
464 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
465 10 Elena Grandi
     trust: ultimate      validity: ultimate
466 10 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
467 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
468 10 Elena Grandi
ssb* rsa2048/40A2ADF0FE9E4620
469 1 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
470 10 Elena Grandi
ssb  rsa2048/ED9BBD7B3BFF900F
471 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: E   
472 10 Elena Grandi
ssb  rsa2048/5F89B668295AE797
473 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: A   
474 10 Elena Grandi
[ultimate] (1). Random User <random@example.org>
475 10 Elena Grandi
476 10 Elena Grandi
gpg> keytocard
477 10 Elena Grandi
Please select where to store the key:
478 10 Elena Grandi
   (1) Signature key
479 10 Elena Grandi
   (3) Authentication key
480 10 Elena Grandi
Your selection? 1
481 22 Simone Piccardi
</pre>
482 10 Elena Grandi
483 22 Simone Piccardi
qui occorre selezionare il tipo di chiave e poi verrà chiesta la passphrase della chiave e poi proseguirà con:
484 10 Elena Grandi
485 22 Simone Piccardi
<pre>
486 10 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
487 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
488 10 Elena Grandi
     trust: ultimate      validity: ultimate
489 10 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
490 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
491 10 Elena Grandi
ssb* rsa2048/40A2ADF0FE9E4620
492 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
493 10 Elena Grandi
ssb  rsa2048/ED9BBD7B3BFF900F
494 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: E   
495 10 Elena Grandi
ssb  rsa2048/5F89B668295AE797
496 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: A   
497 10 Elena Grandi
[ultimate] (1). Random User <random@example.org>
498 10 Elena Grandi
</pre>
499 10 Elena Grandi
500 22 Simone Piccardi
per trasferire quella di crittografia occorrerà deselezionare la chiave di firma e selezionare quella di autenticazione, e ripetere il comando @keytocard@:
501 10 Elena Grandi
502 10 Elena Grandi
<pre>
503 10 Elena Grandi
gpg> key 2
504 10 Elena Grandi
505 10 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
506 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
507 10 Elena Grandi
     trust: ultimate      validity: ultimate
508 10 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
509 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
510 10 Elena Grandi
ssb  rsa2048/40A2ADF0FE9E4620
511 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
512 10 Elena Grandi
ssb  rsa2048/ED9BBD7B3BFF900F
513 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: E   
514 10 Elena Grandi
ssb  rsa2048/5F89B668295AE797
515 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: A   
516 10 Elena Grandi
[ultimate] (1). Random User <random@example.org>
517 10 Elena Grandi
518 10 Elena Grandi
gpg> key 3
519 1 Elena Grandi
520 10 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
521 1 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
522 1 Elena Grandi
     trust: ultimate      validity: ultimate
523 1 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
524 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
525 10 Elena Grandi
ssb  rsa2048/40A2ADF0FE9E4620
526 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
527 10 Elena Grandi
ssb* rsa2048/ED9BBD7B3BFF900F
528 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: E   
529 10 Elena Grandi
ssb  rsa2048/5F89B668295AE797
530 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: A   
531 10 Elena Grandi
[ultimate] (1). Random User <random@example.org>
532 10 Elena Grandi
533 10 Elena Grandi
gpg> keytocard
534 10 Elena Grandi
Please select where to store the key:
535 10 Elena Grandi
   (2) Encryption key
536 10 Elena Grandi
Your selection? 2
537 22 Simone Piccardi
</pre>
538 10 Elena Grandi
539 22 Simone Piccardi
di nuovo si sceglie (stavolta solo chiave di cifratura) e verrà chiesta la passphrase della chiave scelta:
540 22 Simone Piccardi
541 22 Simone Piccardi
<pre>
542 10 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
543 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
544 10 Elena Grandi
     trust: ultimate      validity: ultimate
545 10 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
546 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
547 10 Elena Grandi
ssb  rsa2048/40A2ADF0FE9E4620
548 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
549 10 Elena Grandi
ssb* rsa2048/ED9BBD7B3BFF900F
550 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: E   
551 10 Elena Grandi
ssb  rsa2048/5F89B668295AE797
552 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: A   
553 10 Elena Grandi
[ultimate] (1). Random User <random@example.org>
554 10 Elena Grandi
</pre>
555 10 Elena Grandi
556 22 Simone Piccardi
infine si ripeterà la procedura con la chiave di autenticazione:
557 10 Elena Grandi
558 10 Elena Grandi
<pre>
559 10 Elena Grandi
gpg> key 3
560 10 Elena Grandi
561 10 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
562 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
563 10 Elena Grandi
     trust: ultimate      validity: ultimate
564 10 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
565 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
566 10 Elena Grandi
ssb  rsa2048/40A2ADF0FE9E4620
567 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
568 10 Elena Grandi
ssb  rsa2048/ED9BBD7B3BFF900F
569 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: E   
570 10 Elena Grandi
ssb  rsa2048/5F89B668295AE797
571 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: A   
572 10 Elena Grandi
[ultimate] (1). Random User <random@example.org>
573 10 Elena Grandi
574 10 Elena Grandi
gpg> key 4
575 10 Elena Grandi
576 10 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
577 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
578 10 Elena Grandi
     trust: ultimate      validity: ultimate
579 10 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
580 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
581 10 Elena Grandi
ssb  rsa2048/40A2ADF0FE9E4620
582 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
583 10 Elena Grandi
ssb  rsa2048/ED9BBD7B3BFF900F
584 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: E   
585 10 Elena Grandi
ssb* rsa2048/5F89B668295AE797
586 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: A   
587 10 Elena Grandi
[ultimate] (1). Random User <random@example.org>
588 10 Elena Grandi
589 10 Elena Grandi
gpg> keytocard
590 10 Elena Grandi
Please select where to store the key:
591 10 Elena Grandi
   (3) Authentication key
592 10 Elena Grandi
Your selection? 3
593 10 Elena Grandi
594 10 Elena Grandi
sec  rsa4096/3E0EE5BAC50DF7C1
595 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: SC  
596 10 Elena Grandi
     trust: ultimate      validity: ultimate
597 10 Elena Grandi
ssb  rsa4096/F303978FEBB6E995
598 10 Elena Grandi
     created: 2016-10-19  expires: never       usage: E   
599 10 Elena Grandi
ssb  rsa2048/40A2ADF0FE9E4620
600 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: S   
601 10 Elena Grandi
ssb  rsa2048/ED9BBD7B3BFF900F
602 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: E   
603 10 Elena Grandi
ssb* rsa2048/5F89B668295AE797
604 10 Elena Grandi
     created: 2016-10-19  expires: 2017-10-19  usage: A   
605 10 Elena Grandi
[ultimate] (1). Random User <random@example.org>
606 10 Elena Grandi
</pre>
607 10 Elena Grandi
608 11 Elena Grandi
Uscire salvando:
609 11 Elena Grandi
610 11 Elena Grandi
<pre>
611 11 Elena Grandi
gpg> save
612 11 Elena Grandi
</pre>
613 11 Elena Grandi
614 11 Elena Grandi
e a questo punto si può controllare che le sottochiavi sono sulla Card:
615 11 Elena Grandi
616 11 Elena Grandi
<pre>
617 11 Elena Grandi
$ gpg --card-status 
618 11 Elena Grandi
619 11 Elena Grandi
Reader ...........: ####
620 11 Elena Grandi
Application ID ...: ####
621 11 Elena Grandi
Version ..........: 2.0
622 11 Elena Grandi
Manufacturer .....: ####
623 11 Elena Grandi
Serial number ....: ####
624 11 Elena Grandi
Name of cardholder: [not set]
625 11 Elena Grandi
Language prefs ...: [not set]
626 11 Elena Grandi
Sex ..............: unspecified
627 11 Elena Grandi
URL of public key : [not set]
628 11 Elena Grandi
Login data .......: [not set]
629 11 Elena Grandi
Signature PIN ....: forced
630 11 Elena Grandi
Key attributes ...: rsa2048 rsa2048 rsa2048
631 11 Elena Grandi
Max. PIN lengths .: 127 127 127
632 11 Elena Grandi
PIN retry counter : 3 3 3
633 11 Elena Grandi
Signature counter : 0
634 11 Elena Grandi
Signature key ....: 2128 412C BC75 34F5 6305  9447 40A2 ADF0 FE9E 4620
635 11 Elena Grandi
      created ....: 2016-10-19 10:15:26
636 11 Elena Grandi
Encryption key....: 0B24 9C62 4A7D 19FE 7AB9  DCB3 ED9B BD7B 3BFF 900F
637 11 Elena Grandi
      created ....: 2016-10-19 10:17:57
638 11 Elena Grandi
Authentication key: 40E1 AE4A 7C13 FD8C C6EA  2C56 5F89 B668 295A E797
639 11 Elena Grandi
      created ....: 2016-10-19 10:24:14
640 11 Elena Grandi
General key info..: sub  rsa2048/40A2ADF0FE9E4620 2016-10-19 Random User <random@example.org>
641 11 Elena Grandi
sec   rsa4096/3E0EE5BAC50DF7C1  created: 2016-10-19  expires: never     
642 11 Elena Grandi
ssb   rsa4096/F303978FEBB6E995  created: 2016-10-19  expires: never     
643 11 Elena Grandi
ssb>  rsa2048/40A2ADF0FE9E4620  created: 2016-10-19  expires: 2017-10-19
644 11 Elena Grandi
                                card-no: ####
645 11 Elena Grandi
ssb>  rsa2048/ED9BBD7B3BFF900F  created: 2016-10-19  expires: 2017-10-19
646 11 Elena Grandi
                                card-no: ####
647 11 Elena Grandi
ssb>  rsa2048/5F89B668295AE797  created: 2016-10-19  expires: 2017-10-19
648 1 Elena Grandi
                                card-no: ####
649 11 Elena Grandi
</pre>
650 11 Elena Grandi
651 11 Elena Grandi
e non sono più presenti sul disco
652 11 Elena Grandi
653 11 Elena Grandi
<pre>
654 11 Elena Grandi
$ gpg --list-secret-keys 
655 11 Elena Grandi
/home/random/.gnupg/pubring.gpg
656 11 Elena Grandi
---------------------------------
657 11 Elena Grandi
sec   rsa4096 2016-10-19 [SC]
658 11 Elena Grandi
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
659 11 Elena Grandi
uid           [ultimate] Random User <random@example.org>
660 11 Elena Grandi
ssb   rsa4096 2016-10-19 [E]
661 11 Elena Grandi
ssb>  rsa2048 2016-10-19 [S] [expires: 2017-10-19]
662 11 Elena Grandi
ssb>  rsa2048 2016-10-19 [E] [expires: 2017-10-19]
663 11 Elena Grandi
ssb>  rsa2048 2016-10-19 [A] [expires: 2017-10-19]
664 11 Elena Grandi
</pre>
665 11 Elena Grandi
666 11 Elena Grandi
è però ancora presente la chiave principale.
667 10 Elena Grandi
668 22 Simone Piccardi
h2. Rimozione della chiave principale
669 13 Elena Grandi
670 14 Elena Grandi
Usando gpg 2.1 si possono rimuovere sottochiavi semplicemente cancellando file in @~/.gnupg/private-keys-v1.d/@; per scoprire quale file cancellare bisogna scoprire il _keygrip_ della chiave in questione:
671 14 Elena Grandi
672 14 Elena Grandi
<pre>
673 14 Elena Grandi
$ gpg --with-keygrip --list-key 3E0EE5BAC50DF7C1
674 14 Elena Grandi
pub   rsa4096 2016-10-19 [SC]
675 14 Elena Grandi
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
676 14 Elena Grandi
      Keygrip = 3BC042D5749A498AA2F904CF548C6B5DEDDF0600
677 14 Elena Grandi
uid           [ultimate] Random User <random@example.org>
678 14 Elena Grandi
sub   rsa4096 2016-10-19 [E]
679 14 Elena Grandi
      Keygrip = 0B2A484CBE52875A07F377A1A87F229C60277642
680 14 Elena Grandi
sub   rsa2048 2016-10-19 [S] [expires: 2017-10-19]
681 14 Elena Grandi
      Keygrip = AD155C5349ECE4D3725AD77269EC9E696A8191E9
682 14 Elena Grandi
sub   rsa2048 2016-10-19 [E] [expires: 2017-10-19]
683 14 Elena Grandi
      Keygrip = BFADD9EEDA2E38A77DCF925E58FFD4FFA2F50B7C
684 14 Elena Grandi
sub   rsa2048 2016-10-19 [A] [expires: 2017-10-19]
685 14 Elena Grandi
      Keygrip = D9F3249B5F583B7B4099B80DCAB343A9BA440BA8
686 14 Elena Grandi
</pre>
687 14 Elena Grandi
688 1 Elena Grandi
A questo punto è sufficiente rimuovere il file corrispondente alla chiave principale:
689 14 Elena Grandi
690 14 Elena Grandi
<pre>
691 14 Elena Grandi
$ rm ~/.gnupg/private-keys-v1.d/3BC042D5749A498AA2F904CF548C6B5DEDDF0600.key
692 14 Elena Grandi
</pre>
693 14 Elena Grandi
694 14 Elena Grandi
E si può verificare che la chiave sia stata effettivamente rimossa:
695 1 Elena Grandi
696 1 Elena Grandi
<pre>
697 1 Elena Grandi
$ gpg --list-secret-keys 3E0EE5BAC50DF7C1
698 14 Elena Grandi
sec#  rsa4096 2016-10-19 [SC]
699 14 Elena Grandi
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
700 14 Elena Grandi
uid           [ultimate] Random User <random@example.org>
701 14 Elena Grandi
ssb   rsa4096 2016-10-19 [E]
702 14 Elena Grandi
ssb>  rsa2048 2016-10-19 [S] [expires: 2017-10-19]
703 14 Elena Grandi
ssb>  rsa2048 2016-10-19 [E] [expires: 2017-10-19]
704 14 Elena Grandi
ssb>  rsa2048 2016-10-19 [A] [expires: 2017-10-19]
705 14 Elena Grandi
</pre>
706 14 Elena Grandi
707 14 Elena Grandi
dove @#@ dopo @sec@ indica che la chiave segreta non è presente sulla macchina in questione.
708 14 Elena Grandi
709 22 Simone Piccardi
h2. Configurazione di ssh
710 6 Elena Grandi
711 15 Elena Grandi
Per abilitare l'autenticazione ssh tramite chiave, aggiungere la seguente riga al file @~/.gnupg/gpg-agent.conf@:
712 15 Elena Grandi
713 15 Elena Grandi
<pre>
714 15 Elena Grandi
enable-ssh-support
715 15 Elena Grandi
</pre>
716 15 Elena Grandi
717 22 Simone Piccardi
Questo dovrebbe essere sufficiente per far sì che le connessioni SSH usino la chiave gpg per l'autenticazione.
718 15 Elena Grandi
719 22 Simone Piccardi
Il caso di non funzionamento più comune è che il @gpg-agent@ non stia effettivamente girando: dato che generalmente è lanciato alla bisogna da GnuPG, è sufficiente usare un comando @gpg@, ad esempio @gpg --card-status@ e da quel momento in poi l'agent sarà disponibile per @ssh@.
720 15 Elena Grandi
721 22 Simone Piccardi
Un secondo caso di non funzionamento potrebbe essere dovuto alla presenza di un altro agent per @ssh@: da Debian stretch in poi questo non dovrebbe essere presente, ma vecchie versioni o altre distribuzioni potrebbero lanciarlo ad esempio tramite degli script in @/etc/X11/Xsession.d@, da disattivare.
722 15 Elena Grandi
723 16 Elena Grandi
h2. Esportazione della chiave pubblica
724 16 Elena Grandi
725 17 Elena Grandi
Adesso che tutto è funzionante, si può inviare la propria chiave pubblica sui keyserver:
726 17 Elena Grandi
727 17 Elena Grandi
<pre>
728 1 Elena Grandi
$ gpg --send-keys 3E0EE5BAC50DF7C1
729 17 Elena Grandi
gpg: sending key 3E0EE5BAC50DF7C1 to [server]
730 17 Elena Grandi
</pre>
731 17 Elena Grandi
732 17 Elena Grandi
Nel caso non abbiate configurato un server in @~/.gnupg/dirmngr.conf@ (o in @~/.gnupg/gpg.conf@ ) lo si può specificare sulla riga di comando:
733 1 Elena Grandi
734 17 Elena Grandi
<pre>
735 17 Elena Grandi
$ gpg --keyserver keys.gnupg.net --send-keys 3E0EE5BAC50DF7C1
736 17 Elena Grandi
gpg: sending key 3E0EE5BAC50DF7C1 to hkp://keys.gnupg.net
737 17 Elena Grandi
</pre>
738 17 Elena Grandi
739 17 Elena Grandi
Se la chiave non deve essere pubblica, è comunque necessario estrarne la parte pubblica da importare su altre macchine dove si vuole usare la Card:
740 17 Elena Grandi
741 17 Elena Grandi
<pre>
742 17 Elena Grandi
gpg --armour --export 3E0EE5BAC50DF7C1 > 3E0EE5BAC50DF7C1.asc
743 17 Elena Grandi
</pre>
744 17 Elena Grandi
745 16 Elena Grandi
h2. Configurazione su una nuova macchina
746 6 Elena Grandi
747 18 Elena Grandi
Per poter usare la Card si una macchina diversa è necessario far conoscere a GnuPG la chiave: innanzitutto importando la chiave pubblica:
748 18 Elena Grandi
749 18 Elena Grandi
<pre>
750 18 Elena Grandi
gpg --recv-key 3E0EE5BAC50DF7C1
751 18 Elena Grandi
</pre>
752 18 Elena Grandi
753 22 Simone Piccardi
oppure:
754 18 Elena Grandi
755 18 Elena Grandi
<pre>
756 18 Elena Grandi
gpg --import 3E0EE5BAC50DF7C1.asc
757 18 Elena Grandi
</pre>
758 18 Elena Grandi
759 22 Simone Piccardi
e quindi far ricreare gli stub di chiavi dalle chiavi presenti sulla card, semplicemente con:
760 18 Elena Grandi
761 18 Elena Grandi
<pre>
762 18 Elena Grandi
$ gpg --card-status 
763 18 Elena Grandi
764 18 Elena Grandi
Reader ...........: ####
765 18 Elena Grandi
Application ID ...: ####
766 18 Elena Grandi
Version ..........: 2.0
767 18 Elena Grandi
Manufacturer .....: ####
768 18 Elena Grandi
Serial number ....: ####
769 1 Elena Grandi
Name of cardholder: [not set]
770 1 Elena Grandi
Language prefs ...: [not set]
771 1 Elena Grandi
Sex ..............: unspecified
772 18 Elena Grandi
URL of public key : [not set]
773 18 Elena Grandi
Login data .......: [not set]
774 18 Elena Grandi
Signature PIN ....: forced
775 18 Elena Grandi
Key attributes ...: rsa2048 rsa2048 rsa2048
776 18 Elena Grandi
Max. PIN lengths .: 127 127 127
777 18 Elena Grandi
PIN retry counter : 3 3 3
778 18 Elena Grandi
Signature counter : 0
779 18 Elena Grandi
Signature key ....: 2128 412C BC75 34F5 6305  9447 40A2 ADF0 FE9E 4620
780 18 Elena Grandi
      created ....: 2016-10-19 10:15:26
781 18 Elena Grandi
Encryption key....: 0B24 9C62 4A7D 19FE 7AB9  DCB3 ED9B BD7B 3BFF 900F
782 18 Elena Grandi
      created ....: 2016-10-19 10:17:57
783 18 Elena Grandi
Authentication key: 40E1 AE4A 7C13 FD8C C6EA  2C56 5F89 B668 295A E797
784 18 Elena Grandi
      created ....: 2016-10-19 10:24:14
785 18 Elena Grandi
General key info..: sub  rsa2048/40A2ADF0FE9E4620 2016-10-19 Random User <random@example.org>
786 18 Elena Grandi
sec   rsa4096/3E0EE5BAC50DF7C1  created: 2016-10-19  expires: never     
787 18 Elena Grandi
ssb   rsa4096/F303978FEBB6E995  created: 2016-10-19  expires: never     
788 18 Elena Grandi
ssb>  rsa2048/40A2ADF0FE9E4620  created: 2016-10-19  expires: 2017-10-19
789 18 Elena Grandi
                                card-no: ####
790 18 Elena Grandi
ssb>  rsa2048/ED9BBD7B3BFF900F  created: 2016-10-19  expires: 2017-10-19
791 18 Elena Grandi
                                card-no: ####
792 18 Elena Grandi
ssb>  rsa2048/5F89B668295AE797  created: 2016-10-19  expires: 2017-10-19
793 18 Elena Grandi
                                card-no: ####
794 18 Elena Grandi
</pre>
795 18 Elena Grandi
796 22 Simone Piccardi
h2. Configurazione su una nuova macchina, con versioni precedenti di gpg
797 22 Simone Piccardi
798 22 Simone Piccardi
da fare