Está en la página 1de 4

Criptografía 2

En primer lugar creamos los usuarios alumno y profesor:

sudo adduser alumno


sudo adduser profesor

Caso práctico 3
Cifrado asimétrico en Linux ciado (hay varios tipos, como también ocurría en crip-
tografía simétrica: DES, AES, etc.). Es decir, una clave
Objetivo. Cifrar ficheros con algoritmos asimétricos mediante de tipo DSA se utiliza en un algoritmo DSA, y una
la herramienta gpg. clave Elgamal, en un algoritmo Elgamal. Las dos prime-
Material. Máquina virtual Lubuntu ras opciones ofrecen dos algoritmos, luego generan dos
pares de claves: en total, cuatro claves, dos públicas y
„Duración: Ÿ 30 minutos „Dificultad: . Media dos privadas. El motivo es que generalmente se utiliza
una clave (un par) para cifrar y otra diferente (otro par)
1. En el caso práctico 2 hemos utilizado la herramienta para firmar, como veremos en el siguiente apartado de
gpg para el cifrado simétrico. Esta misma herra- esta unidad. Elegimos la opción 2, que tiene algoritmos
mienta sirve para el cifrado asimétrico. distintos, y así veremos claramente cuándo se utiliza
cada clave.
2. Entramos con un usuario de la máquina (en este ejem-
plo, alumno). Lo primero será generar un par de claves
de criptografía asimétrica, nuestra propia clave pública
y clave privada. El comando es (Fig. 2.19):
alumno$ gpg --full-generate-key
3. En el proceso de generación de la clave nos pregun-
tarán varios detalles. El primero es el tipo de clave. La
herramienta nos ofrece cuatro opciones. Los nombres se
corresponden con el tipo de algoritmo asimétrico aso- Fig. 2.19. Generamos un par de claves.
(Continúa)
2 Criptografía

Caso práctico 3
(Continuación)

4. A continuación nos pregunta el tamaño de la clave del 8. Ya no hay más preguntas. Ahora la herramienta ejecuta
algoritmo DSA. Por defecto ofrece 2 048, pero en este los procedimientos matemáticos para obtener las claves
ejemplo elegimos el mínimo, 1 024, para tardar menos asimétricas que hemos solicitado. Estos procedimientos
en generarla (Fig. 2.20). necesitan muchos datos aleatorios, por lo que nos pide
que generemos actividad en el sistema para ayudarle
(Fig. 2.24).
Fig. 2.20. Elegimos el tamaño de la clave.

5. La siguiente pregunta es el periodo de validez de la clave.


Ya estamos advertidos de los problemas que supone pro-
teger la clave privada. Por si la perdemos, conviene fijar
una fecha de caducidad para que no se pueda usar más Fig. 2.24. Entropía.
allá de ese día. En nuestro ejemplo no hace falta tanta 9. En poco tiempo el proceso termina y ya tenemos nues-
seguridad y elegiremos que nunca caduque (Fig. 2.21). tras claves creadas (Fig. 2.25).

Fig. 2.21. Fijamos la caducidad de la clave.


6. A continuación nos pide algunos datos para identificar la
clave. Ya sabemos que en el llavero se pueden almace- Fig. 2.25. Claves creadas.
nar varias claves (de hecho, estamos generando dos pares
10. Si nos fijamos, veremos una clave primaria (pub) de tipo
ahora mismo). Para elegir una u otra en cada ocasión,
DSA con tamaño de clave 1 024 (1024D). Debajo hay
tenemos que identificarlas fácilmente. En este caso nos
una clave subordinada de tipo Elgamal con tamaño de
pedirá un nombre, una dirección de correo y un comenta-
clave 1 024 (1024g).
rio (Fig. 2.22). La herramienta gpg nunca nos enviará un
correo; pero es una forma de contactar con el dueño de la 11. En el directorio HOME del usuario se ha creado un direc-
clave (entregaremos nuestra clave pública a mucha gente, torio oculto llamado .gnupg, donde se guardan los
y ellos tendrán las claves públicas de otras personas). ficheros internos que utiliza la herramienta (Fig. 2.26).
El fichero pubring.gpg contiene las claves públicas
y el fichero secring.gpg, las claves privadas. Por
supuesto, ambos están cifrados.

Fig. 2.22. Identificamos la clave.


7. El siguiente paso es elegir la clave simétrica que prote-
gerá nuestras claves (Fig. 2.23). Como siempre, debe
ser una clave fácil de recordar para nosotros y difícil de
averiguar para cualquier otra persona. Si la olvidamos,
no podremos utilizar nuestras claves asimétricas.

Fig. 2.26. Ficheros internos.


12. Para trabajar con las claves debemos utilizar la pro-
pia herramienta. La lista de claves la obtenemos con el
parámetro list-keys (Fig. 2.27). En pantalla apare-
cerá nuestra clave principal y la subordinada.
Fig. 2.23. Elegimos la clave simétrica que protege
la clave privada. alumno$ gpg –-list-keys
(Continúa)
Criptografía 2

Caso práctico 3
(Continuación)

16. Podemos consultar las claves disponibles en el llavero


con el mismo parámetro list-keys que vimos ante-
riormente (Fig. 2.30):
profesor$ gpg -–list-keys

Fig. 2.27. Lista de claves.

13. Comparado con el caso práctico del cifrado simétrico,


estamos en el paso 13 y todavía no hemos cifrado nada:
como ya suponíamos, la criptografía asimétrica es un
poco más complicada. Ahora tenemos que comunicar
nuestra clave pública a quien esté interesado en enviar- Fig. 2.30. Claves disponibles.
nos un mensaje cifrado. Primero tenemos que sacarla del 17. Vamos a crear un fichero llamado mensaje y lo cifrare-
llavero. El parámetro es export (Fig. 2.28): mos para enviárselo al usuario alumno. Los comandos
alumno$ gpg –a –-export –o /tmp/alumno. serían (Fig. 2.31):
pub alumno@gmail.com (o crea un mensaje
profesor$ fortune > mensaje cualquiera con nano)
profesor$ gpg –v –a –o /tmp/mensaje.cifrado
–e -r alumno@gmail.com mensaje

Fig. 2.28. Exportamos la clave pública.

Hemos utilizado los parámetros a (armor) para que el


resultado no sea binario y o (output) para guardarlo
directamente en un fichero (si no, aparece por la salida Fig. 2.31. Ciframos un fichero.
estándar). El fichero lo ponemos tranquilamente en /tmp
porque no nos importa que otros usuarios lo copien. Los parámetros a y o ya los conocemos (dejamos el
14. En la máquina tenemos un segundo usuario llamado fichero en /tmp porque no nos importa que otros
profesor. Entramos con este usuario para enviar un usuarios puedan leerlo: sin la clave privada, el con-
mensaje cifrado al usuario alumno con la misma herra- tenido es ininteligible). Hemos añadido el paráme-
mienta gpg. Para coger las claves públicas de alumno tro v (verbose) para obtener más información. En este
utilizamos el parámetro import (Fig. 2.29): caso, nos sirve para conocer que utilizará la clave
subordinada (Elgamal), en lugar de la clave primaria
profesor$ gpg -–import /tmp/alumno.pub
(DSA).
El parámetro encrypt(e) indica que deseamos
cifrado asimétrico y el parámetro recipient (r)
va seguido del identificador de la clave pública que
queremos utilizar. Como ya sabemos, el cifrado
utiliza la clave pública del receptor.
18. Una vez introducido ese comando, la respuesta es
Fig. 2.29. Importamos la clave pública. una advertencia: no hay seguridad de que esa clave
pública sea realmente la clave pública de alumno.
15. En nuestro ejemplo el usuario profesor es la primera Cualquiera podría haber cambiado el fichero /tmp/
vez que utiliza la herramienta gpg, por lo que se le informa alumno.pub antes de que profesor hiciera el
que se crea el directorio .gnupg y los ficheros internos. import de las claves. Como ayuda, el comando nos
(Continúa)
2 Criptografía

Caso práctico 3
(Continuación)

ofrece la huella (fingerprint) de la clave y nos pide


la confirmación de que es la clave que queremos uti-
lizar.
19. Podemos volver a la sesión del usuario alumno, obte-
ner la huella de su clave pública y compararla con la
que aparece en la sesión de profesor. El parámetro
para obtener la huella es fingerprint (Fig. 2.32):
alumno$ gpg -–fingerprint

Fig. 2.33. Desciframos el fichero.

21. Si hemos introducido bien la contraseña aparecerá el men-


saje que nos ha enviado el usuario profesor (Fig. 2.34).
Fig. 2.32. Obtenemos la huella de la clave.

20. Efectivamente, las huellas coinciden y podemos confiar


en que la clave importada en profesor es correcta.
Confirmamos que queremos usar esa clave y se crea Fig. 2.34. Contenido recuperado.
el fichero cifrado. Ahora podemos volver a la sesión
22. Podemos comprobar qué pasa si el fichero, por cual-
del usuario alumno e intentar descifrarlo. El parámetro es
quier razón, resulta dañado (defecto físico del disco
decrypt (d): duro, error en la transmisión, etc.). En el usuario alumno
alumno$ gpg -d /tmp/mensaje.cifrado hacemos una copia del fichero y lo editamos para cam-
biar cualquier letra. Si después lo intentamos descifrar,
aparecerá un error (Fig. 2.35).
Como esperábamos, el comando nos solicita la con-
traseña que da acceso a la clave privada. En la ven-
tana aparece qué clave necesita (en nuestro caso, la
clave del algoritmo Elgamal), con toda su identificación
(Fig. 2.33).
Fig. 2.35. Detectamos error en el fichero cifrado.
Si pulsamos en Detalles podemos elegir que el sis-
tema recuerde esta clave; así ahorraremos volver a 23. Si ahora el usuario alumno quisiera enviar un fichero
teclearla. Como vimos en la Unidad 1, no es recomen- cifrado a profesor, primero profesor debería gene-
dable que la recuerde para siempre, porque cualquiera rar su propio par de claves, después exportar la clave
podría coger nuestro ordenador y descifrar nuestros pública, hacerla llegar hasta alumno para que la
mensajes. importe, etc.

También podría gustarte