IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Alert.png Aquesta wiki forma part dels materials d'un curs
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

Consulteu Seahorse

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.

Enigmail.png

Enigmail2.png

Enigmail3.png

Enigmail4.png

FireGPG

Consulteu també Gmail.

Web of Trust

Consulteu la Web of Trust

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:

  1. 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.
  2. 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