Project

General

Profile

UsoDiOpenPGPCard » History » Version 20

Elena Grandi, 10/20/2016 12:00 PM

1 1 Elena Grandi
h1. Uso di OpenPGP Card
2
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
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
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
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
17
Per il supporto della Card è poi necessario installare "PC/SC Lite":http://pcsclite.alioth.debian.org/.
18
19
Sotto distribuzioni debian o derivate (che già preinstallano @gnupg@ e @openssh-client@) i pacchetti da installare sono quindi:
20
21 1 Elena Grandi
<pre>
22 20 Elena Grandi
apt install pcscd gnupg-agent scdaemon
23 1 Elena Grandi
</pre>
24 20 Elena Grandi
25
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".
26 2 Elena Grandi
27
h2. creazione della chiave
28
29 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.
30
31
Ovviamente, se si ha già una chiave gpg da 4096 bit si può saltare questo passaggio ed usare quella.
32
33
Innanzitutto, configurare gpg per l'uso di SHA2 aggiungendo le seguenti righe a @~/.gnupg/gpg.conf@:
34
35
<pre>
36
personal-digest-preferences SHA256
37
cert-digest-algo SHA256
38
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
39
</pre>
40
41
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).
42
43
<pre>
44
$ gpg --full-gen-key 
45
gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
46
This is free software: you are free to change and redistribute it.
47
There is NO WARRANTY, to the extent permitted by law.
48
49
Please select what kind of key you want:
50
   (1) RSA and RSA (default)
51
   (2) DSA and Elgamal
52
   (3) DSA (sign only)
53
   (4) RSA (sign only)
54
Your selection? 1
55
RSA keys may be between 1024 and 4096 bits long.
56
What keysize do you want? (2048) 4096
57
Requested keysize is 4096 bits
58
Please specify how long the key should be valid.
59
         0 = key does not expire
60
      <n>  = key expires in n days
61
      <n>w = key expires in n weeks
62
      <n>m = key expires in n months
63
      <n>y = key expires in n years
64
Key is valid for? (0) 
65
Key does not expire at all
66
Is this correct? (y/N) y
67
68
GnuPG needs to construct a user ID to identify your key.
69
70
Real name: Random User
71
Email address: random@example.org
72
Comment: 
73
You selected this USER-ID:
74
    "Random User <random@example.org>"
75
76
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
77
We need to generate a lot of random bytes. It is a good idea to perform
78
some other action (type on the keyboard, move the mouse, utilize the
79
disks) during the prime generation; this gives the random number
80
generator a better chance to gain enough entropy.
81
gpg: key 3E0EE5BAC50DF7C1 marked as ultimately trusted
82
gpg: directory '/home/random/.gnupg/openpgp-revocs.d' created
83
gpg: revocation certificate stored as '/home/valhalla/.gnupg/openpgp-revocs.d/19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1.rev'
84
public and secret key created and signed.
85
86
pub   rsa4096 2016-10-19 [SC]
87
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
88
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
89
uid                      Random User <random@example.org>
90
sub   rsa4096 2016-10-19 [E]
91
</pre>
92
93 2 Elena Grandi
h2. creazione delle sottochiavi
94
95 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.
96
97
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).
98
99
Per generare le sottochiavi necessarie, si entra in modalità di modifica con l'opzione @--expert@ che abilita la creazione di chiavi di autenticazione.
100
101
<pre>
102
$ gpg --expert --edit-key 3E0EE5BAC50DF7C1
103
gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
104
This is free software: you are free to change and redistribute it.
105
There is NO WARRANTY, to the extent permitted by law.
106
107
Secret key is available.
108
109
sec  rsa4096/3E0EE5BAC50DF7C1
110
     created: 2016-10-19  expires: never       usage: SC  
111
     trust: ultimate      validity: ultimate
112
ssb  rsa4096/F303978FEBB6E995
113
     created: 2016-10-19  expires: never       usage: E   
114
[ultimate] (1). Random User <random@example.org>
115
</pre>
116
117
Quindi si crea prima una normale sottochiave di firma (opzione 4)
118
119
<pre>
120
gpg> addkey 
121
Please select what kind of key you want:
122
   (3) DSA (sign only)
123
   (4) RSA (sign only)
124
   (5) Elgamal (encrypt only)
125
   (6) RSA (encrypt only)
126
   (7) DSA (set your own capabilities)
127
   (8) RSA (set your own capabilities)
128
  (10) ECC (sign only)
129
  (11) ECC (set your own capabilities)
130
  (12) ECC (encrypt only)
131
  (13) Existing key
132
Your selection? 4
133
RSA keys may be between 1024 and 4096 bits long.
134
What keysize do you want? (2048) 
135
Requested keysize is 2048 bits
136
Please specify how long the key should be valid.
137
         0 = key does not expire
138
      <n>  = key expires in n days
139
      <n>w = key expires in n weeks
140
      <n>m = key expires in n months
141
      <n>y = key expires in n years
142
Key is valid for? (0) 1y
143
Key expires at Thu 19 Oct 2017 12:15:49 CEST
144
Is this correct? (y/N) y
145
Really create? (y/N) y
146
We need to generate a lot of random bytes. It is a good idea to perform
147
some other action (type on the keyboard, move the mouse, utilize the
148
disks) during the prime generation; this gives the random number
149
generator a better chance to gain enough entropy.
150
151
sec  rsa4096/3E0EE5BAC50DF7C1
152
     created: 2016-10-19  expires: never       usage: SC  
153
     trust: ultimate      validity: ultimate
154
ssb  rsa4096/F303978FEBB6E995
155
     created: 2016-10-19  expires: never       usage: E   
156
ssb  rsa2048/40A2ADF0FE9E4620
157
     created: 2016-10-19  expires: 2017-10-19  usage: S   
158
[ultimate] (1). Random User <random@example.org>
159
160
</pre>
161
162
Una normale sottochiave per la crittografia (opzione 6)
163
164
<pre>
165
gpg> addkey 
166
Please select what kind of key you want:
167
   (3) DSA (sign only)
168
   (4) RSA (sign only)
169
   (5) Elgamal (encrypt only)
170
   (6) RSA (encrypt only)
171
   (7) DSA (set your own capabilities)
172
   (8) RSA (set your own capabilities)
173
  (10) ECC (sign only)
174
  (11) ECC (set your own capabilities)
175
  (12) ECC (encrypt only)
176
  (13) Existing key
177
Your selection? 6
178
RSA keys may be between 1024 and 4096 bits long.
179
What keysize do you want? (2048) 
180
Requested keysize is 2048 bits
181
Please specify how long the key should be valid.
182
         0 = key does not expire
183
      <n>  = key expires in n days
184
      <n>w = key expires in n weeks
185
      <n>m = key expires in n months
186
      <n>y = key expires in n years
187
Key is valid for? (0) 1y
188
Key expires at Thu 19 Oct 2017 12:18:16 CEST
189
Is this correct? (y/N) y
190
Really create? (y/N) y
191
We need to generate a lot of random bytes. It is a good idea to perform
192
some other action (type on the keyboard, move the mouse, utilize the
193
disks) during the prime generation; this gives the random number
194
generator a better chance to gain enough entropy.
195
196
sec  rsa4096/3E0EE5BAC50DF7C1
197
     created: 2016-10-19  expires: never       usage: SC  
198
     trust: ultimate      validity: ultimate
199
ssb  rsa4096/F303978FEBB6E995
200
     created: 2016-10-19  expires: never       usage: E   
201
ssb  rsa2048/40A2ADF0FE9E4620
202
     created: 2016-10-19  expires: 2017-10-19  usage: S   
203
ssb  rsa2048/ED9BBD7B3BFF900F
204
     created: 2016-10-19  expires: 2017-10-19  usage: E   
205
[ultimate] (1). Random User <random@example.org>
206
</pre>
207
208
Ed infine una sottochiave per l'autenticazione, selezionando l'opzione 8, togliendo le capacità di firma e crittografia e mettendo quella di autenticazione.
209
210
<pre>
211
gpg> addkey 
212
Please select what kind of key you want:
213
   (3) DSA (sign only)
214
   (4) RSA (sign only)
215
   (5) Elgamal (encrypt only)
216
   (6) RSA (encrypt only)
217
   (7) DSA (set your own capabilities)
218
   (8) RSA (set your own capabilities)
219
  (10) ECC (sign only)
220
  (11) ECC (set your own capabilities)
221
  (12) ECC (encrypt only)
222
  (13) Existing key
223
Your selection? 8
224
225
Possible actions for a RSA key: Sign Encrypt Authenticate 
226
Current allowed actions: Sign Encrypt 
227
228
   (S) Toggle the sign capability
229
   (E) Toggle the encrypt capability
230
   (A) Toggle the authenticate capability
231
   (Q) Finished
232
233
Your selection? s
234
235
Possible actions for a RSA key: Sign Encrypt Authenticate 
236
Current allowed actions: Encrypt 
237
238
   (S) Toggle the sign capability
239
   (E) Toggle the encrypt capability
240
   (A) Toggle the authenticate capability
241
   (Q) Finished
242
243
Your selection? e
244
245
Possible actions for a RSA key: Sign Encrypt Authenticate 
246
Current allowed actions: 
247
248
   (S) Toggle the sign capability
249
   (E) Toggle the encrypt capability
250
   (A) Toggle the authenticate capability
251
   (Q) Finished
252
253
Your selection? a
254
255
Possible actions for a RSA key: Sign Encrypt Authenticate 
256
Current allowed actions: Authenticate 
257
258
   (S) Toggle the sign capability
259
   (E) Toggle the encrypt capability
260
   (A) Toggle the authenticate capability
261
   (Q) Finished
262
263
Your selection? q
264
RSA keys may be between 1024 and 4096 bits long.
265
What keysize do you want? (2048) 
266
Requested keysize is 2048 bits
267
Please specify how long the key should be valid.
268
         0 = key does not expire
269
      <n>  = key expires in n days
270
      <n>w = key expires in n weeks
271
      <n>m = key expires in n months
272
      <n>y = key expires in n years
273
Key is valid for? (0) 1y
274
Key expires at Thu 19 Oct 2017 12:24:56 CEST
275
Is this correct? (y/N) y
276
Really create? (y/N) y
277
We need to generate a lot of random bytes. It is a good idea to perform
278
some other action (type on the keyboard, move the mouse, utilize the
279
disks) during the prime generation; this gives the random number
280
generator a better chance to gain enough entropy.
281
282
sec  rsa4096/3E0EE5BAC50DF7C1
283
     created: 2016-10-19  expires: never       usage: SC  
284
     trust: ultimate      validity: ultimate
285
ssb  rsa4096/F303978FEBB6E995
286
     created: 2016-10-19  expires: never       usage: E   
287
ssb  rsa2048/40A2ADF0FE9E4620
288
     created: 2016-10-19  expires: 2017-10-19  usage: S   
289
ssb  rsa2048/ED9BBD7B3BFF900F
290
     created: 2016-10-19  expires: 2017-10-19  usage: E   
291
ssb  rsa2048/5F89B668295AE797
292
     created: 2016-10-19  expires: 2017-10-19  usage: A   
293
[ultimate] (1). Random User <random@example.org>
294
</pre>
295
296
Si può quindi uscire dalla modalità di modifica chiave, salvando le modifiche.
297
298
<pre>
299
gpg> save
300
</pre>
301
302 7 Elena Grandi
h2. salvataggio su supporto esterno
303
304 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.
305
306 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).
307 8 Elena Grandi
308 9 Elena Grandi
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 
309
310
<pre>
311
$ gpg --homedir indirizzo/della/chiavetta/gnupg --list-secret-keys
312
indirizzo/della/chiavetta/gnupg
313
pubring.gpg
314
---------------------------------
315
sec   rsa4096 2016-10-19 [SC]
316
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
317
uid           [ultimate] Random User <random@example.org>
318
ssb   rsa4096 2016-10-19 [E]
319
ssb   rsa2048 2016-10-19 [S] [expires: 2017-10-19]
320
ssb   rsa2048 2016-10-19 [E] [expires: 2017-10-19]
321
ssb   rsa2048 2016-10-19 [A] [expires: 2017-10-19]
322
</pre>
323
324
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.
325 8 Elena Grandi
326 2 Elena Grandi
h2. spostamento delle chiavi sulla Card
327
328 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.
329
330
Collegare il lettore al computer, inserire la Card e controllare che venga correttamente riconosciuta:
331
332
<pre>
333
$ gpg --card-status 
334
Reader ...........: ####
335
Application ID ...: ####
336
Version ..........: 2.0
337
Manufacturer .....: ####
338
Serial number ....: ####
339
Name of cardholder: [not set]
340
Language prefs ...: [not set]
341
Sex ..............: unspecified
342
URL of public key : [not set]
343
Login data .......: [not set]
344
Signature PIN ....: forced
345
Key attributes ...: rsa2048 rsa2048 rsa2048
346
Max. PIN lengths .: 127 127 127
347
PIN retry counter : 3 3 3
348
Signature counter : 0
349
Signature key ....: [none]
350
Encryption key....: [none]
351
Authentication key: [none]
352
General key info..: [none]
353
</pre>
354
355 12 Elena Grandi
Cambiare poi i pin della chiave:
356
357
<pre>
358
$ gpg --card-edit
359
Reader ...........: ####
360
Application ID ...: ####
361
Version ..........: 2.0
362
Manufacturer .....: ####
363
Serial number ....: ####
364
Name of cardholder: [not set]
365
Language prefs ...: [not set]
366
Sex ..............: unspecified
367
URL of public key : [not set]
368
Login data .......: [not set]
369
Signature PIN ....: forced
370
Key attributes ...: rsa2048 rsa2048 rsa2048
371
Max. PIN lengths .: 127 127 127
372
PIN retry counter : 3 3 3
373
Signature counter : 0
374
Signature key ....: [none]
375
Encryption key....: [none]
376
Authentication key: [none]
377
General key info..: [none]
378
379
gpg/card> admin
380
Admin commands are allowed
381
382
gpg/card> passwd
383
gpg: OpenPGP card no. #### detected
384
385
1 - change PIN
386
2 - unblock PIN
387
3 - change Admin PIN
388
4 - set the Reset Code
389
Q - quit
390
391
Your selection? 
392
393
[TODO: completare il cambiamento pin dopo aver sbloccato la Card di prova]
394
395
</pre>
396
397 10 Elena Grandi
Si può quindi passare a spostare le varie sottochiavi sulla Card, aprendo la modalità di editing della chiave:
398
399
<pre>
400
$ gpg --edit-key 3E0EE5BAC50DF7C1
401
gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
402
This is free software: you are free to change and redistribute it.
403
There is NO WARRANTY, to the extent permitted by law.
404
405
Secret key is available.
406
407
sec  rsa4096/3E0EE5BAC50DF7C1
408
     created: 2016-10-19  expires: never       usage: SC  
409
     trust: ultimate      validity: ultimate
410
ssb  rsa4096/F303978FEBB6E995
411
     created: 2016-10-19  expires: never       usage: E   
412
ssb  rsa2048/40A2ADF0FE9E4620
413
     created: 2016-10-19  expires: 2017-10-19  usage: S   
414
ssb  rsa2048/ED9BBD7B3BFF900F
415
     created: 2016-10-19  expires: 2017-10-19  usage: E   
416
ssb  rsa2048/5F89B668295AE797
417
     created: 2016-10-19  expires: 2017-10-19  usage: A   
418
[ultimate] (1). Random User <random@example.org>
419
</pre>
420
421
passando alla modalità di modifica delle chiavi private
422
423
<pre>
424
gpg> toggle
425
426
sec  rsa4096/3E0EE5BAC50DF7C1
427
     created: 2016-10-19  expires: never       usage: SC  
428
     trust: ultimate      validity: ultimate
429
ssb  rsa4096/F303978FEBB6E995
430
     created: 2016-10-19  expires: never       usage: E   
431
ssb  rsa2048/40A2ADF0FE9E4620
432
     created: 2016-10-19  expires: 2017-10-19  usage: S   
433
ssb  rsa2048/ED9BBD7B3BFF900F
434
     created: 2016-10-19  expires: 2017-10-19  usage: E   
435
ssb  rsa2048/5F89B668295AE797
436
     created: 2016-10-19  expires: 2017-10-19  usage: A   
437
[ultimate] (1). Random User <random@example.org>
438
</pre>
439
440
e trasferendo una ad una le sottochiavi sulla Card; firma:
441
442
<pre>
443
gpg> key 2
444
445
sec  rsa4096/3E0EE5BAC50DF7C1
446
     created: 2016-10-19  expires: never       usage: SC  
447
     trust: ultimate      validity: ultimate
448
ssb  rsa4096/F303978FEBB6E995
449
     created: 2016-10-19  expires: never       usage: E   
450
ssb* rsa2048/40A2ADF0FE9E4620
451
     created: 2016-10-19  expires: 2017-10-19  usage: S   
452
ssb  rsa2048/ED9BBD7B3BFF900F
453
     created: 2016-10-19  expires: 2017-10-19  usage: E   
454
ssb  rsa2048/5F89B668295AE797
455
     created: 2016-10-19  expires: 2017-10-19  usage: A   
456
[ultimate] (1). Random User <random@example.org>
457
458
gpg> keytocard
459
Please select where to store the key:
460
   (1) Signature key
461
   (3) Authentication key
462
Your selection? 1
463
gpg: KEYTOCARD failed: Bad PIN
464
465
gpg> keytocard
466
Please select where to store the key:
467
   (1) Signature key
468
   (3) Authentication key
469
Your selection? 1
470
471
sec  rsa4096/3E0EE5BAC50DF7C1
472
     created: 2016-10-19  expires: never       usage: SC  
473
     trust: ultimate      validity: ultimate
474
ssb  rsa4096/F303978FEBB6E995
475
     created: 2016-10-19  expires: never       usage: E   
476
ssb* rsa2048/40A2ADF0FE9E4620
477
     created: 2016-10-19  expires: 2017-10-19  usage: S   
478
ssb  rsa2048/ED9BBD7B3BFF900F
479
     created: 2016-10-19  expires: 2017-10-19  usage: E   
480
ssb  rsa2048/5F89B668295AE797
481
     created: 2016-10-19  expires: 2017-10-19  usage: A   
482
[ultimate] (1). Random User <random@example.org>
483
</pre>
484
485
crittografia:
486
487
<pre>
488
gpg> key 2
489
490
sec  rsa4096/3E0EE5BAC50DF7C1
491
     created: 2016-10-19  expires: never       usage: SC  
492
     trust: ultimate      validity: ultimate
493
ssb  rsa4096/F303978FEBB6E995
494
     created: 2016-10-19  expires: never       usage: E   
495
ssb  rsa2048/40A2ADF0FE9E4620
496
     created: 2016-10-19  expires: 2017-10-19  usage: S   
497
ssb  rsa2048/ED9BBD7B3BFF900F
498
     created: 2016-10-19  expires: 2017-10-19  usage: E   
499
ssb  rsa2048/5F89B668295AE797
500
     created: 2016-10-19  expires: 2017-10-19  usage: A   
501
[ultimate] (1). Random User <random@example.org>
502
503
gpg> key 3
504
505
sec  rsa4096/3E0EE5BAC50DF7C1
506
     created: 2016-10-19  expires: never       usage: SC  
507
     trust: ultimate      validity: ultimate
508
ssb  rsa4096/F303978FEBB6E995
509
     created: 2016-10-19  expires: never       usage: E   
510
ssb  rsa2048/40A2ADF0FE9E4620
511
     created: 2016-10-19  expires: 2017-10-19  usage: S   
512
ssb* rsa2048/ED9BBD7B3BFF900F
513
     created: 2016-10-19  expires: 2017-10-19  usage: E   
514
ssb  rsa2048/5F89B668295AE797
515
     created: 2016-10-19  expires: 2017-10-19  usage: A   
516
[ultimate] (1). Random User <random@example.org>
517
518
gpg> keytocard
519
Please select where to store the key:
520
   (2) Encryption key
521
Your selection? 2
522
523
sec  rsa4096/3E0EE5BAC50DF7C1
524
     created: 2016-10-19  expires: never       usage: SC  
525
     trust: ultimate      validity: ultimate
526
ssb  rsa4096/F303978FEBB6E995
527
     created: 2016-10-19  expires: never       usage: E   
528
ssb  rsa2048/40A2ADF0FE9E4620
529
     created: 2016-10-19  expires: 2017-10-19  usage: S   
530
ssb* rsa2048/ED9BBD7B3BFF900F
531
     created: 2016-10-19  expires: 2017-10-19  usage: E   
532
ssb  rsa2048/5F89B668295AE797
533
     created: 2016-10-19  expires: 2017-10-19  usage: A   
534
[ultimate] (1). Random User <random@example.org>
535
</pre>
536
537
autenticazione:
538
539
<pre>
540
gpg> key 3
541
542
sec  rsa4096/3E0EE5BAC50DF7C1
543
     created: 2016-10-19  expires: never       usage: SC  
544
     trust: ultimate      validity: ultimate
545
ssb  rsa4096/F303978FEBB6E995
546
     created: 2016-10-19  expires: never       usage: E   
547
ssb  rsa2048/40A2ADF0FE9E4620
548
     created: 2016-10-19  expires: 2017-10-19  usage: S   
549
ssb  rsa2048/ED9BBD7B3BFF900F
550
     created: 2016-10-19  expires: 2017-10-19  usage: E   
551
ssb  rsa2048/5F89B668295AE797
552
     created: 2016-10-19  expires: 2017-10-19  usage: A   
553
[ultimate] (1). Random User <random@example.org>
554
555
gpg> key 4
556
557
sec  rsa4096/3E0EE5BAC50DF7C1
558
     created: 2016-10-19  expires: never       usage: SC  
559
     trust: ultimate      validity: ultimate
560
ssb  rsa4096/F303978FEBB6E995
561
     created: 2016-10-19  expires: never       usage: E   
562
ssb  rsa2048/40A2ADF0FE9E4620
563
     created: 2016-10-19  expires: 2017-10-19  usage: S   
564
ssb  rsa2048/ED9BBD7B3BFF900F
565
     created: 2016-10-19  expires: 2017-10-19  usage: E   
566
ssb* rsa2048/5F89B668295AE797
567
     created: 2016-10-19  expires: 2017-10-19  usage: A   
568
[ultimate] (1). Random User <random@example.org>
569
570
gpg> keytocard
571
Please select where to store the key:
572
   (3) Authentication key
573
Your selection? 3
574
575
sec  rsa4096/3E0EE5BAC50DF7C1
576
     created: 2016-10-19  expires: never       usage: SC  
577
     trust: ultimate      validity: ultimate
578
ssb  rsa4096/F303978FEBB6E995
579
     created: 2016-10-19  expires: never       usage: E   
580
ssb  rsa2048/40A2ADF0FE9E4620
581
     created: 2016-10-19  expires: 2017-10-19  usage: S   
582
ssb  rsa2048/ED9BBD7B3BFF900F
583
     created: 2016-10-19  expires: 2017-10-19  usage: E   
584
ssb* rsa2048/5F89B668295AE797
585
     created: 2016-10-19  expires: 2017-10-19  usage: A   
586
[ultimate] (1). Random User <random@example.org>
587
</pre>
588
589 11 Elena Grandi
Uscire salvando:
590
591
<pre>
592
gpg> save
593
</pre>
594
595
e a questo punto si può controllare che le sottochiavi sono sulla Card:
596
597
<pre>
598
$ gpg --card-status 
599
600
Reader ...........: ####
601
Application ID ...: ####
602
Version ..........: 2.0
603
Manufacturer .....: ####
604
Serial number ....: ####
605
Name of cardholder: [not set]
606
Language prefs ...: [not set]
607
Sex ..............: unspecified
608
URL of public key : [not set]
609
Login data .......: [not set]
610
Signature PIN ....: forced
611
Key attributes ...: rsa2048 rsa2048 rsa2048
612
Max. PIN lengths .: 127 127 127
613
PIN retry counter : 3 3 3
614
Signature counter : 0
615
Signature key ....: 2128 412C BC75 34F5 6305  9447 40A2 ADF0 FE9E 4620
616
      created ....: 2016-10-19 10:15:26
617
Encryption key....: 0B24 9C62 4A7D 19FE 7AB9  DCB3 ED9B BD7B 3BFF 900F
618
      created ....: 2016-10-19 10:17:57
619
Authentication key: 40E1 AE4A 7C13 FD8C C6EA  2C56 5F89 B668 295A E797
620
      created ....: 2016-10-19 10:24:14
621
General key info..: sub  rsa2048/40A2ADF0FE9E4620 2016-10-19 Random User <random@example.org>
622
sec   rsa4096/3E0EE5BAC50DF7C1  created: 2016-10-19  expires: never     
623
ssb   rsa4096/F303978FEBB6E995  created: 2016-10-19  expires: never     
624
ssb>  rsa2048/40A2ADF0FE9E4620  created: 2016-10-19  expires: 2017-10-19
625
                                card-no: ####
626
ssb>  rsa2048/ED9BBD7B3BFF900F  created: 2016-10-19  expires: 2017-10-19
627
                                card-no: ####
628
ssb>  rsa2048/5F89B668295AE797  created: 2016-10-19  expires: 2017-10-19
629
                                card-no: ####
630
</pre>
631
632
e non sono più presenti sul disco
633
634
<pre>
635
$ gpg --list-secret-keys 
636
/home/random/.gnupg/pubring.gpg
637
---------------------------------
638
sec   rsa4096 2016-10-19 [SC]
639
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
640
uid           [ultimate] Random User <random@example.org>
641
ssb   rsa4096 2016-10-19 [E]
642
ssb>  rsa2048 2016-10-19 [S] [expires: 2017-10-19]
643
ssb>  rsa2048 2016-10-19 [E] [expires: 2017-10-19]
644
ssb>  rsa2048 2016-10-19 [A] [expires: 2017-10-19]
645
</pre>
646
647
è però ancora presente la chiave principale.
648 10 Elena Grandi
649 13 Elena Grandi
h2. rimozione della chiave principale
650
651 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:
652
653
<pre>
654
$ gpg --with-keygrip --list-key 3E0EE5BAC50DF7C1
655
pub   rsa4096 2016-10-19 [SC]
656
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
657
      Keygrip = 3BC042D5749A498AA2F904CF548C6B5DEDDF0600
658
uid           [ultimate] Random User <random@example.org>
659
sub   rsa4096 2016-10-19 [E]
660
      Keygrip = 0B2A484CBE52875A07F377A1A87F229C60277642
661
sub   rsa2048 2016-10-19 [S] [expires: 2017-10-19]
662
      Keygrip = AD155C5349ECE4D3725AD77269EC9E696A8191E9
663
sub   rsa2048 2016-10-19 [E] [expires: 2017-10-19]
664
      Keygrip = BFADD9EEDA2E38A77DCF925E58FFD4FFA2F50B7C
665
sub   rsa2048 2016-10-19 [A] [expires: 2017-10-19]
666
      Keygrip = D9F3249B5F583B7B4099B80DCAB343A9BA440BA8
667
</pre>
668
669
A questo punto è sufficiente rimuovere il file corrispondente alla chiave principale:
670
671
<pre>
672
$ rm ~/.gnupg/private-keys-v1.d/3BC042D5749A498AA2F904CF548C6B5DEDDF0600.key
673
</pre>
674
675
E si può verificare che la chiave sia stata effettivamente rimossa:
676
677
<pre>
678
$ gpg --list-secret-keys 3E0EE5BAC50DF7C1
679
sec#  rsa4096 2016-10-19 [SC]
680
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
681
uid           [ultimate] Random User <random@example.org>
682
ssb   rsa4096 2016-10-19 [E]
683
ssb>  rsa2048 2016-10-19 [S] [expires: 2017-10-19]
684
ssb>  rsa2048 2016-10-19 [E] [expires: 2017-10-19]
685
ssb>  rsa2048 2016-10-19 [A] [expires: 2017-10-19]
686
</pre>
687
688
dove @#@ dopo @sec@ indica che la chiave segreta non è presente sulla macchina in questione.
689
690 2 Elena Grandi
h2. configurazione di ssh
691 6 Elena Grandi
692 15 Elena Grandi
Per abilitare l'autenticazione ssh tramite chiave, aggiungere la seguente riga al file @~/.gnupg/gpg-agent.conf@:
693
694
<pre>
695
enable-ssh-support
696
</pre>
697
698
Questo dovrebbe essere sufficiente per far sì che le connessioni ssh usino la chiave gpg per l'autenticazione.
699
700
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,
701
702
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.
703
704 16 Elena Grandi
h2. Esportazione della chiave pubblica
705
706 17 Elena Grandi
Adesso che tutto è funzionante, si può inviare la propria chiave pubblica sui keyserver:
707
708
<pre>
709
$ gpg --send-keys 3E0EE5BAC50DF7C1
710
gpg: sending key 3E0EE5BAC50DF7C1 to [server]
711
</pre>
712
713
Nel caso non abbiate configurato un server in @~/.gnupg/dirmngr.conf@ (o in @~/.gnupg/gpg.conf@ ) lo si può specificare sulla riga di comando:
714
715
<pre>
716
$ gpg --keyserver keys.gnupg.net --send-keys 3E0EE5BAC50DF7C1
717
gpg: sending key 3E0EE5BAC50DF7C1 to hkp://keys.gnupg.net
718
</pre>
719
720
Se la chiave non deve essere pubblica, è comunque necessario estrarne la parte pubblica da importare su altre macchine dove si vuole usare la Card:
721
722
<pre>
723
gpg --armour --export 3E0EE5BAC50DF7C1 > 3E0EE5BAC50DF7C1.asc
724
</pre>
725
726 16 Elena Grandi
h2. Configurazione su una nuova macchina
727 6 Elena Grandi
728 18 Elena Grandi
Per poter usare la Card si una macchina diversa è necessario far conoscere a GnuPG la chiave: innanzitutto importando la chiave pubblica:
729
730
<pre>
731
gpg --recv-key 3E0EE5BAC50DF7C1
732
</pre>
733
734
oppure
735
736
<pre>
737
gpg --import 3E0EE5BAC50DF7C1.asc
738
</pre>
739
740
e quindi far ricreare gli stub di chiavi dalle chiavi presenti sulla card, semplicemente con 
741
742
<pre>
743
$ gpg --card-status 
744
745
Reader ...........: ####
746
Application ID ...: ####
747
Version ..........: 2.0
748
Manufacturer .....: ####
749
Serial number ....: ####
750
Name of cardholder: [not set]
751
Language prefs ...: [not set]
752
Sex ..............: unspecified
753
URL of public key : [not set]
754
Login data .......: [not set]
755
Signature PIN ....: forced
756
Key attributes ...: rsa2048 rsa2048 rsa2048
757
Max. PIN lengths .: 127 127 127
758
PIN retry counter : 3 3 3
759
Signature counter : 0
760
Signature key ....: 2128 412C BC75 34F5 6305  9447 40A2 ADF0 FE9E 4620
761
      created ....: 2016-10-19 10:15:26
762
Encryption key....: 0B24 9C62 4A7D 19FE 7AB9  DCB3 ED9B BD7B 3BFF 900F
763
      created ....: 2016-10-19 10:17:57
764
Authentication key: 40E1 AE4A 7C13 FD8C C6EA  2C56 5F89 B668 295A E797
765
      created ....: 2016-10-19 10:24:14
766
General key info..: sub  rsa2048/40A2ADF0FE9E4620 2016-10-19 Random User <random@example.org>
767
sec   rsa4096/3E0EE5BAC50DF7C1  created: 2016-10-19  expires: never     
768
ssb   rsa4096/F303978FEBB6E995  created: 2016-10-19  expires: never     
769
ssb>  rsa2048/40A2ADF0FE9E4620  created: 2016-10-19  expires: 2017-10-19
770
                                card-no: ####
771
ssb>  rsa2048/ED9BBD7B3BFF900F  created: 2016-10-19  expires: 2017-10-19
772
                                card-no: ####
773
ssb>  rsa2048/5F89B668295AE797  created: 2016-10-19  expires: 2017-10-19
774
                                card-no: ####
775
</pre>
776
777 6 Elena Grandi
h2. configurazione su una nuova macchina, con versioni precedenti di gpg