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