Hacking Ético, Unidad 1 - Tarea 3: Una sencilla práctica sobre criptografía

En la tercera tarea de la unidad 1, se trata de generar un par de claves (publica y privada) mediante gpg2. Crear un fichero de texto, firmarlo y cifrarlo, después compartir con un tercero.

El primer paso es generar el par de claves (publica y privada).

sergio@tux:~$ gpg2 --gen-key
El programa «gpg2» no está instalado. Puede instalarlo escribiendo:
sudo apt-get install gnupg2
sergio@tux:~$

Nos informa que no está instalado el paquete, tal y como sugiere mediante apt-get install gnupg2 lo instalaremos.

sergio@tux:~$ sudo apt-get install gnupg2
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Paquetes sugeridos:
  gnupg-doc xloadimage
Se instalarán los siguientes paquetes NUEVOS:
  gnupg2
0 actualizados, 1 se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 0 B/671 kB de archivos.
Se utilizarán 2.253 kB de espacio de disco adicional después de esta operación.
Seleccionando el paquete gnupg2 previamente no seleccionado.
(Leyendo la base de datos ... 207018 ficheros o directorios instalados actualmente.)
Preparing to unpack .../gnupg2_2.0.22-3ubuntu1.1_i386.deb ...
Unpacking gnupg2 (2.0.22-3ubuntu1.1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Configurando gnupg2 (2.0.22-3ubuntu1.1) ...
sergio@tux:~$ 

Volvemos a probar y ahora si funciona.

En función de nuestras necesidades, modificaremos las opciones que se nos van dando. El tipo de clave, si tiene fecha de caducidad, nombre y apellidos, dirección de correo valida y finalmente nos solicitara una contraseña.

Tal y como recomienda, mientras está generando las claves interesa realizar otras tareas, abrir otras consolas, mirar algún vídeo, etc.

sergio@tux:~$ gpg2 --gen-key
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Por favor seleccione tipo de clave deseado:
   (1) RSA y RSA (por defecto)
   (2) DSA y ElGamal
   (3) DSA (sólo firmar)
   (4) RSA (sólo firmar)
Su elección: 1
las claves RSA pueden tener entre 1024 y 4096 bits de longitud.
¿De qué tamaño quiere la clave? (2048) 
El tamaño requerido es de 2048 bits
Por favor, especifique el período de validez de la clave.
         0 = la clave nunca caduca
        = la clave caduca en n días
      w = la clave caduca en n semanas
      m = la clave caduca en n meses
      y = la clave caduca en n años
¿Validez de la clave (0)? 0
La clave nunca caduca
¿Es correcto? (s/n) s

GnuPG debe construir un ID de usuario para identificar su clave.

Nombre y apellidos: Sergio Martin
Dirección de correo electrónico: sergmartin@andaluciajunta.es
Comentario: 
Ha seleccionado este ID de usuario:
    "Sergio Martin "

¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? V
Necesita una frase contraseña para proteger su clave secreta.

Es necesario generar muchos bytes aleatorios. Es una buena idea realizar
alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar
la red y los discos) durante la generación de números primos. Esto da al
generador de números aleatorios mayor oportunidad de recoger suficiente
entropía.
Es necesario generar muchos bytes aleatorios. Es una buena idea realizar
alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar
la red y los discos) durante la generación de números primos. Esto da al
generador de números aleatorios mayor oportunidad de recoger suficiente
entropía.
gpg: clave D5798008 marcada como de confianza absoluta
claves pública y secreta creadas y firmadas.

gpg: comprobando base de datos de confianza
gpg: 3 dudosa(s) necesarias, 1 completa(s) necesarias,
modelo de confianza PGP
gpg: nivel: 0  validez:   2  firmada:   0  confianza: 0-, 0q, 0n, 0m, 0f, 2u
gpg: siguiente comprobación de base de datos de confianza el: 2015-11-08
pub   2048R/D5798008 2015-09-28
      Huella de clave = 18D2 7BB6 749A 46D7 F96C  17DE 1865 D8B9 D579 8008
uid                  Sergio Martin 
sub   2048R/34DD14A4 2015-09-28

sergio@tux:~$ 

Una vez finalizado, ya tenemos nuestra clave publica.
El siguiente paso, es exportar la clave en formato binario y ASCII blindado

sergio@tux:~$ gpg2 --export Sergio Martin > Sergio_Martin-pub.gpg
sergio@tux:~$ 

sergio@tux:~$ gpg2 --armor --export Sergio Martin > Sergio_Martin-pub-asc.gpg
sergio@tux:~$ 


sergio@tux:~$ gpg2 --list-keys
/home/sergio/.gnupg/pubring.gpg
-------------------------------
pub   2048R/D5798008 2015-09-28
uid                  Sergio Martin <sergmartin[dot]andaluciajunta.es>
sub   2048R/34DD14A4 2015-09-28

sergio@tux:~$ 

Si queremos compartir nuestra clave publica para que cualquiera nos pueda enviar un mensaje cifrado, se puede subir al servidor publico PGP Global Directory. Una vez enviado, recibiremos un correo para validar el email y finalizar el proceso.

Firma

Importar clave de un tercero.

sergio@tux:~$ gpg2 --import cp_grosp.asc
gpg: clave 956108D8: "Grosp (Prueba) " sin cambios
gpg: Cantidad total procesada: 1
gpg:              sin cambios: 1
sergio@tux:~$ 

Para verificar sí la importación es correcta, deberá aparecer en el listado.

sergio@tux:~$ gpg2 --list-keys
/home/sergio/.gnupg/pubring.gpg
-------------------------------
pub   2048R/D5798008 2015-09-28
uid                  Sergio Martin 
sub   2048R/34DD14A4 2015-09-28

pub   2048R/956108D8 2015-09-28 [caduca: 2017-09-28]
uid                  Grosp (Prueba) 
sub   2048R/D8C8A479 2015-09-28 [caduca: 2017-09-28]

sergio@tux:~$ 

Ahora ya podemos desencriptar el fichero de texto cifrado que hemos recibido.

sergio@tux:~$ gpg2 --decrypt Prueba.txt.asc > resultado_prueba.txt

Necesita una frase contraseña para desbloquear la clave secreta
del usuario: "Sergio Martin "
clave RSA de 2048 bits, ID 34DD14A4, creada el 2015-09-28 (ID de clave primaria D5798008)

gpg: cifrado con clave RSA de 2048 bits, ID D8C8A479, creada el 2015-09-28
      "Grosp (Prueba) "
gpg: cifrado con clave RSA de 2048 bits, ID BE3C9B52, creada el 2015-09-27
      "Sergio Martin "
gpg: cifrado con clave RSA de 2048 bits, ID 34DD14A4, creada el 2015-09-28
      "Sergio Martin "
gpg: Firmado el lun 28 sep 2015 22:26:32 CEST usando clave RSA ID 956108D8
gpg: Firma correcta de "Grosp (Prueba) "
gpg: ATENCIÓN: ¡Esta clave no está certificada por una firma de confianza!
gpg:          No hay indicios de que la firma pertenezca al propietario.
Huellas dactilares de la clave primaria: A3F5 1B7E 66FA 4DBD 9D69  52B4 57F6 10D5 9561 08D8
sergio@tux:~$ 

Una vez desencriptado, podemos leer el contenido del fichero de texto.

Archivo de prueba - MOOC Hacking Ético
Para firmar y cifrar un fichero de texto, es necesario utilizar la clave publica del tercero.

Firmar y cifrar en modo binario.

sergio@tux:~$ gpg2 --recipient Grosp  --sign --encrypt tarea3_unidad1.txt 

Necesita una frase contraseña para desbloquear la clave secreta
del usuario: "Sergio Martin "
clave RSA de 2048 bits, ID C32F2578, creada el 2015-09-27

gpg: D8C8A479: No hay seguridad de que esta clave pertenezca realmente
al usuario que se nombra

pub  2048R/D8C8A479 2015-09-28 Grosp (Prueba) 
 Huella clave primaria: A3F5 1B7E 66FA 4DBD 9D69  52B4 57F6 10D5 9561 08D8
      Huella de subclave: CDB9 AE16 D6F1 89EB B901  99B8 E38E 9201 D8C8 A479

No es seguro que la clave pertenezca a la persona que se nombra en el
identificador de usuario. Si *realmente* sabe lo que está haciendo,
puede contestar sí a la siguiente pregunta.

¿Usar esta clave de todas formas? (s/N) s
sergio@tux:~$ 

Firmar y cifrar en modo texto.

sergio@tux:~$ gpg2 --recipient Grosp --sign --armor --encrypt tarea3_unidad1.txt 

Necesita una frase contraseña para desbloquear la clave secreta
del usuario: "Sergio Martin "
clave RSA de 2048 bits, ID C32F2578, creada el 2015-09-27

gpg: D8C8A479: No hay seguridad de que esta clave pertenezca realmente
al usuario que se nombra

pub  2048R/D8C8A479 2015-09-28 Grosp (Prueba) 
 Huella clave primaria: A3F5 1B7E 66FA 4DBD 9D69  52B4 57F6 10D5 9561 08D8
      Huella de subclave: CDB9 AE16 D6F1 89EB B901  99B8 E38E 9201 D8C8 A479

No es seguro que la clave pertenezca a la persona que se nombra en el
identificador de usuario. Si *realmente* sabe lo que está haciendo,
puede contestar sí a la siguiente pregunta.

¿Usar esta clave de todas formas? (s/N) s
sergio@tux:~$

0 comentarios:

Publicar un comentario