Progetto

Generale

Profilo

UsoDiOpenPGPCard » Cronologia » Versione 4

Elena Grandi, 19-10-2016 11:56

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
Ll'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
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 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).
14
15
Per il supporto della Card è poi necessario installare "PC/SC Lite":http://pcsclite.alioth.debian.org/.
16
17
Sotto distribuzioni debian o derivate (che già preinstallano @gnupg@ e @openssh-client@) i pacchetti da installare sono quindi:
18
19
<pre>
20
apt install pcscd gnupg-agent
21
</pre>
22 2 Elena Grandi
23
h2. creazione della chiave
24
25 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.
26
27
Ovviamente, se si ha già una chiave gpg da 4096 bit si può saltare questo passaggio ed usare quella.
28
29
Innanzitutto, configurare gpg per l'uso di SHA2 aggiungendo le seguenti righe a @~/.gnupg/gpg.conf@:
30
31
<pre>
32
personal-digest-preferences SHA256
33
cert-digest-algo SHA256
34
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
35
</pre>
36
37
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).
38
39
<pre>
40
$ gpg --full-gen-key 
41
gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
42
This is free software: you are free to change and redistribute it.
43
There is NO WARRANTY, to the extent permitted by law.
44
45
Please select what kind of key you want:
46
   (1) RSA and RSA (default)
47
   (2) DSA and Elgamal
48
   (3) DSA (sign only)
49
   (4) RSA (sign only)
50
Your selection? 1
51
RSA keys may be between 1024 and 4096 bits long.
52
What keysize do you want? (2048) 4096
53
Requested keysize is 4096 bits
54
Please specify how long the key should be valid.
55
         0 = key does not expire
56
      <n>  = key expires in n days
57
      <n>w = key expires in n weeks
58
      <n>m = key expires in n months
59
      <n>y = key expires in n years
60
Key is valid for? (0) 
61
Key does not expire at all
62
Is this correct? (y/N) y
63
64
GnuPG needs to construct a user ID to identify your key.
65
66
Real name: Random User
67
Email address: random@example.org
68
Comment: 
69
You selected this USER-ID:
70
    "Random User <random@example.org>"
71
72
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
73
We need to generate a lot of random bytes. It is a good idea to perform
74
some other action (type on the keyboard, move the mouse, utilize the
75
disks) during the prime generation; this gives the random number
76
generator a better chance to gain enough entropy.
77
gpg: key 3E0EE5BAC50DF7C1 marked as ultimately trusted
78
gpg: directory '/home/random/.gnupg/openpgp-revocs.d' created
79
gpg: revocation certificate stored as '/home/valhalla/.gnupg/openpgp-revocs.d/19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1.rev'
80
public and secret key created and signed.
81
82
pub   rsa4096 2016-10-19 [SC]
83
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
84
      19DB75A75734ABBEDB1124163E0EE5BAC50DF7C1
85
uid                      Random User <random@example.org>
86
sub   rsa4096 2016-10-19 [E]
87
</pre>
88
89 2 Elena Grandi
h2. creazione delle sottochiavi
90
91
h2. spostamento delle chiavi sulla Card
92
93
h2. configurazione di ssh