GnuPG
De SergiTurWiki
| Curs: | SeguretatXarxesInformàtiques |
| Fitxers: | TecniquesCriptografiques.pdf (TecniquesCriptografiques.odp) |
| Repositori SVN: | https://anonymous@svn.projectes.lafarga.cat/svn/iceupc/SeguretatXarxesInformàtiques |
| Usuari: | anonymous |
| Paraula de pas: | sense paraula de pas |
| Autors: | Sergi Tur Badenas |
Creació d'una clau PGP
$ gpg --gen-key
gpg (GnuPG) 1.4.6; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
Seleccioneu quin tipus de clau voleu:
(1) DSA and Elgamal (default)
(2) DSA (només signar)
(5) RSA (només signar)
La vostra selecció?
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
La grandària sol·licitada és 2048 bits
Especifiqueu el temps de validesa de la clau.
0 = la clau no caduca
<n> = la clau caduca als n dies
<n>w = la clau caduca a les n setmanes
<n>m = la clau caduca als n mesos
<n>y = la clau caduca als n anys
Indiqueu la validesa de la clau (0)
Key does not expire at all
Is this correct? (y/N)
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and E-mail Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Nom i cognoms: Pepe Pardo Jeans
Adreça electrònica: pepe@gmail.com
Comentari: Clau de broma
Heu triat l'identificador d'usuari:
"Pepe Pardo Jeans (Clau de broma) <pepe@gmail.com>"
Canvia (N)om, (C)omentari, (E)mail o (O) d'acord / (X) ix o
Cal una contrasenya per a protegir la clau secreta.
Cal generar molts bits aleatòriament. És bona idea fer alguna altra cosa
(teclejar, moure el ratolí, usar els discos) durant la generació de
nombres primers; açò dóna oportunitat al generador de nombres aleatoris
d'aconseguir prou entropia.
.++++++++++..++++++++++++++++++++.+++++++++++++++.+++++++++++++++.
Cal generar molts bits aleatòriament. És bona idea fer alguna altra cosa
(teclejar, moure el ratolí, usar els discos) durant la generació de
nombres primers; açò dóna oportunitat al generador de nombres aleatoris
d'aconseguir prou entropia.
++++++++++++++++++++.++++++++++++++++++++..+++++++++++++++..+++++++
gpg: key F19D66B4 marked as ultimately trusted
s'han creat i signat les claus pública i secreta.
gpg: s'està comprovant la base de dades de confiança
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 2 signed: 1 trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: depth: 1 valid: 1 signed: 0 trust: 1-, 0q, 0n, 0m, 0f, 0u
pub 1024D/F19D66B4 2007-10-14
Key fingerprint = 2B2C 5E4C 5FBE 9BDE 3EB4 C4FC 0C59 F136 F19D 66B4
uid Pepe Pardo Jeans (Clau de broma) <pepe@gmail.com>
sub 2048g/29D5722E 2007-10-14
Si no tenim clar el que volem, les respostes per defecte són les adequades.Si que cal indicar que l'identificador i el correu electrònic han de ser correcte si volem que les claus compleixin amb els seu objectiu.
Ara cal fer pública la clau:
$ gpg --keyserver pgp.mit.edu --send-keys IDDECLAU
On IDDECLAU és l'identificador de la clau que acabem de crear:
pub 1024D/F19D66B4 2007-10-14
En l'exemple F19D66B4.
Hi han diferents servidors de claus. Un altre servidor pot ser subkeys.pgp.net.
Podem obtenir els identificadors de les nostres claus amb:
$ gpg --list-secret-keys | grep sec
La informació de GPG és guarda a la carpeta:
/home/sergi/.gnupg
Segons el manual:
$ man gpg
La clau privada és guarda a:
~/.gnupg/secring.gpg
i la pública a:
~/.gnupg/pubring.gpg
Amb l'ordre file podeu saber quin tipus de fitxer és:
$ file /home/sergi/.gnupg/secring.gpg /home/sergi/.gnupg/secring.gpg: PGP key security ring
$ file /home/sergi/.gnupg/pubring.gpg /home/sergi/.gnupg/pubring.gpg: GPG key public ring
Podeu consultar la vostra clau pública a través de la web
http://pgp.mit.edu
Una exemple de URL de clau és la següent:
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x177D98AD
Exemples
Signar en text clar
$ gpg --clearsign prova.txt
$ cat prova.txt.asc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Això és una prova! -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFJMrNXkDcRtKCX0rURAg5fAJ0WsqTry3y5483dMHOxLK1uje+qiwCeJFMd xYmVfE7JrCVt+4BFn7zPmR4= =74A1 -----END PGP SIGNATURE-----
Verificar un missatge
$ gpg --verify prova.txt.asc gpg: Signature made dg 30 nov 2008 16:37:59 CET using DSA key ID A097D2B5 gpg: Good signature from "Sergi Tur Badenas <sergi.tur@upc.edu>" gpg: aka "Sergi Tur Badenas <acacha@gmail.com>" gpg: aka "[jpeg image of size 2338]"
O
$ gpg --verify prova.txt.sig gpg: Signature made dg 30 nov 2008 16:39:53 CET using DSA key ID A097D2B5 gpg: Good signature from "Sergi Tur Badenas <sergi.tur@upc.edu>" gpg: aka "Sergi Tur Badenas <acacha@gmail.com>" gpg: aka "[jpeg image of size 2338]"
Xifrar amb GPG
$ echo "Prueba de gpg" | gpg --encrypt --armor
Les opcions --encrypt i -e són idèntiques.
També podem xifrar el contingut d'un fitxer amb:
$ gpg --encrypt -r sergi --armor prova.txt
L'opció --armor mostra el fitxer xifrat en base64?
Signar i xifrar un fitxer
$ gpg -se prova.txt No heu especificat un ID d'usuari. (podeu usar «-r») Current recipients: Introduïu l'ID d'usuari. Finalitzeu amb una línia en blanc:
$ file prova.txt.gpg prova.txt.gpg: GPG encrypted data
Es pot indicar directament l'usuari amb:
$ gpg -se -r sergi file
Una altra opció:
$ gpg -s --encrypt -r sergi --armor prova.txt
Crear un fitxer .sig
$ gpg -sb prova.txt
gpg --list-keys user_ID
show keys
Mostrar les claus d'un usuari
$ gpg --list-keys sergi pub 1024D/A097D2B5 2007-05-02 uid Sergi Tur Badenas <sergi.tur@upc.edu> uid Sergi Tur Badenas <acacha@gmail.com> uid [jpeg image of size 2338] sub 2048g/818898A6 2007-05-02
Mostrar el fingerprint d'un usuari
$ gpg --fingerprint user_ID
Exportar una clau pública
$ gpg --export -a "User Name" > public.key
Buscar claus secretes i mostrar la seva informació
Les claus secretes es guarden al fitxer secring.gpg. Podeu fer una cerca amb find o locate:
$ locate secring.gpg ... /linux2/.Trash-1000/files/sergi/.gnupg/secring.gpg
I mostrar totes les claus amb:
$ gpg --list-secret-keys --secret-keyring /linux2/.Trash-1000/files/sergi/.gnupg/secring.gpg /home/sergi/.gnupg/secring.gpg ------------------------------ claus del fitxer per defecte /linux2/.Trash-1000/files/sergi/.gnupg/secring.gpg -------------------------------------------------- claus de l'altre fitxer
Per afegir altres fitxers cal repetir l'opció --secret-keyring:
$ gpg --list-secret-keys --secret-keyring /linux2/.Trash-1000/files/sergi/.gnupg/secring.gpg --secret-keyring /linux3/linux2/home/sergi/.gnupg/secring.gpg
Exportar/Importar múltiples anells de claus secretes
Per exportar-les:
$ gpg --export-secret-keys --armor --secret-keyring /linux2/.Trash-1000/files/sergi/.gnupg/secring.gpg --secret-keyring \ /linux3/linux2/home/sergi/.gnupg/secring.gpg > clausprivades.keys
Per importar-les:
$ gpg --allow-secret-key-import --import clausprivades.keys
Importar una clau pública
$ gpg --import public.key
Exportar una clau privada
$ gpg --export-secret-keys --armor
NOTA: Podeu utilitzar --armor o -a
El resultat es mostra per la sortida estàndard en format armor (fitxer de text). Per guardar-ho en un fitxer:
$ gpg --export-secret-keys --armor > privateGPGkey
També es pot guardar en un format binari:
$ gpg --export-secret-key "Sergi Tur Badenas" > private.key
També es pot guardar una sola clau, especificant el nom d'usuari:
$ gpg --export-secret-key "Sergi Tur Badenas" > private.key
Importar una clau privada
$ gpg --allow-secret-key-import --import private.key
Mostrar les claus
Per mostrar les claus públiques:
$ gpg --list-keys
Per mostrar les claus de l'anell de claus secretes:
$ gpg --list-secret-keys
Servidors de claus públics
Ens permeten publicar i buscar claus públiques:
Servidor de claus públiques del MIT
PGP Key Server:
Ubuntu Key Server:
Debian Key Server:
Subkeys:
Seahorse
NOTA: No exporta claus privades, només exporta la part pública. Vegeu kgpg (força més complet en opcions)
Eina gràfica per a la gestió de claus.
Instal·lació:
$ sudo apt-get install seahorse
Podem buscar i publicar claus públiques en servidors de claus. Menú Remot/Cerca Claus Remotes i Sincronitza i publica:
Seahorse s'integra amb el navegador de fitxers Nautilus:
I també el podem utilitzar per fer cerques a servidors de claus públiques o publicar la nostra clau:
Enigmail
Proveeix de xifratge de clau pública a Mozilla Thunderbird. És un plugin de Mozilla-Thunderbird.
Instal·lació:
$ sudo apt-get install mozilla-thunderbird-enigmail
Utilitza GNU Privacy Guard.
Web of Trust
Consulteu la secció Web of Trust a l'article sobre Criptografia de clau pública
Festa de Firmes
Una Festa de Firmes és un esdeveniment on usuaris de claus GPG es troben per autenticar-se entre ells i firmar claus i d'aquesta manera crear Xarxes de confiança (Web Of Trust).
En aquest esdeveniment els usuaris de claus de firmes poden firmar les claus dels "amics" o "coneguts" com a un mètode per autenticar les claus de la xarxa:
Cal tenir en compte que per firmar una clau s'hauria de complir les següents condicions:
- El propietari de la clau convenç al que firma de la seva identitat. Normalment això implica que com a mínim el propietari de la clau ha d'utilitzar algun document identificatiu com per exemple el passaport o el DNI.
- El propietari de la clau ha de verificar que el fingerprint de la firma i la longitud de la clau que serà firmada són efectivament la seva.
Per tant per firmar firmes és obligatori l'assistència del propietari de la firma.
El propietari de la firma ha de:
- Imprimir el "fingerprint" (petjada digital) de la clau GnuPG, la longitud de la clau i portar un document que l'identifiqui.
Durant la trobada cal donar les petjades digital i les longituds de clau a altres persones per tal que firmin la seva clau (i identificant-se al mateix temps)
Després de la trobada cal firmar les claus PGP. Primer obtenim la clau
$ gpg --keyserver keyring.debian.org --recv-keys 0xIDENTIFICADOR DE LA CLAU
On l'identificador de la clau són els últims 8 dígits de la petjada digital de la clau.
Un cop teniu la clau s'ha de firmar seguint les següents passes:
$ gpg --edit-key 0xIDENTIFICADOR DE LA CLAU
Podem seleccionar diferents uid i per firmar hem d'introduir:
sign
En aquest moment veurem la petajada digital i la longitud de la clau i la verificarem amb les dades que ens va donar la persona durant la trobada.
Quan es pregunti pel mode d'identificació utilitzeu casual
Podem sortir de GnuPG amb quit.
Per verificar que em fet la firma correctament:
$ gpg --list-sigs 0xIDENTIFICADOR DE LA CLAU
Un com estem segurs de que tot ha anat correctament podem enviar la clau firmada al seu propietari:
$ gpg --export -a 0xIDENTIFICADOR DE LA CLAU > nom_fitxer_clau
La opció -a exporta la clau en ASCII i així es pot enviar per correu electrònic sense possibilitat de ser corrompuda.
El propietari si rep una clau firmada d'aquesta manera pot executar
$ gpg --import mi_clave_firmada $ gpg --keyserver keyring.debian.org --send-keys 0xIDENTIFICADOR DE LA CLAU
Un exemple de Festa de firmes, és la que duen a terme els membres del Ubuntu Catalan Team:
Hi ha un paquet Debian amb utilitats per facilitar els passos a seguir durant una Festa de Firmes:
$ sudo apt-get install signing-party
Vegeu també
Recursos
- Web_of_trust
- Firmado de claves. Debian
- Tutorial Enigmail a Thunderbird
- KeySigningParty ubuntu wiki
- FestaDeFirmes CatalanTeam
- GnuPrivacyGuardHowto a la wiki d'Ubuntu
- http://www.versvs.net/node/598
- http://www.gnupg.org/gph/en/manual.html
- GPGsigningforSSHHowTo
- GPGKeyOnUSBDrive
- http://irtfweb.ifa.hawaii.edu/~lockhart/gpg/gpg-cs.html












