Sei sulla pagina 1di 5

Procedimiento de cifrado con clave pública

El receptor elige una de las claves públicas para comunicarla al emisor por si desea
enviarle información cifrada. Ahora, no hace falta la utilización de canales seguros para
enviarla, si la clave fuera capturada por un tercer individuo no podría interpretar la
información puesto que el mensaje sólo se puede descifrar si se dispone de la clave
privada, que nunca es comunicada.

Figura 2: Cifrado con clave pública (Elaboración propia)

Para poder enviar un documento cifrado se siguen los siguientes pasos:


1. Alice consigue la clave pública de Bob.
2. Con la clave pública de Bob, Alice aplica al documento a enviar un
algoritmo asimétrico de cifrado generando un nuevo documento cifrado.
3. El documento cifrado se envía a Bob.
4. Bob recibe el mensaje cifrado y los descifra aplicando al documento cifrado
el algoritmo asimétrico de descifrado, utilizando para ello su clave privada.

Con este sistema, donde el remitente usa la clave pública del destinatario para cifrar
el mensaje, y sólo puede ser descifrado con la clave privada del destinatario, se logra
la confidencialidad del envío del mensaje, nadie salvo el destinatario puede descifrarlo
pues nadie más conoce la clave privada.

Desventajas y problemas de este método


Son poco eficientes, ya que tardan bastante en aplicar las claves a los documentos
cifrados, sobre todo porque las claves tienen que ser largas para asegurar la
independencia matemática entre ellas.
Utilizar las claves privadas de forma repetida es arriesgado ya que algunos ataques
criptográficos se basan el uso de keyloggers para analizar las claves tecleadas.
La clave privada se guarda en un fichero llamado (keyring, llavero de claves) que
está protegido mediante cifrado simétrico. Este fichero se tiene que incluir en las
políticas de backup de la empresa.
Otro problema es cuando se transporta el fichero de claves con el riesgo que esto
supone.

Algunas soluciones
La solución más común a los problemas de proteger y transportar la clave privada es
la utilización de las llamadas tarjetas inteligentes que disponen de un chip electrónico.
Por ejemplo:
 Tarjeta de memoria: es equivalente a una memoria flash y se limita a
almacenar el llavero de claves.
 Tarjeta de procesador: también almacena el fichero de claves, pero a
diferencia de la tarjeta de memoria, este nunca sale de la tarjeta. Cualquier
cifrado que necesite nuestra clave privada es realizada dentro del propio chip ya
que incluye una CPU, memoria RAM, etc. Sigue siendo necesario introducir
la clave simétrica que abre el llavero.
o De contacto: el lector necesita tocar los contactos metálicos del chip
para interactuar con él. Son las más utilizadas.
o Sin contacto: el lector utiliza tecnologías inalámbricas para comunicarse
con el chip. Se utiliza en transacciones rápidas.
Caso práctico: Cifrado asimétrico con GnuPG
GPG tiene un repositorio de claves (anillo de claves) donde guarda todas las que tenemos
almacenadas en nuestro sistema, ya sean privadas o públicas. Para que nos cifren un mensaje
tenemos que compartir la clave pública, para difundirla a muchas personas existen los servidores
de claves PGP (compatibles con GPG), donde podemos subir nuestra clave pública para que esté a
disposición de todo el mundo. Algunos servidores de claves son: pgp.rediris.es y pgp.mit.edu

Generar la clave pública y privada

1º. Crear la pareja de claves (pública y privada) con el comando gpg --gen-key.
profesor@ubuntu:~/gpg$ gpg --gen-key
gpg (GnuPG) 1.4.11; Copyright (C) 2010 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 (predeterminado)
(2) DSA y Elgamal
(3) DSA (sólo firmar)
(4) RSA (sólo firmar)
¿Su selección?:
2º. Elegimos el tipo de clave que queremos usar, como vemos 3 y 4 solo permiten firmar y otras que
permiten firmar y cifrar, en este ejemplo usaremos DSA y Elgamal.
las claves DSA pueden tener entre 1024 y 3072 bits de longitud.
¿De qué tamaño quiere la clave? (2048)

3º. Elegimos el tamaño de la clave que puede variar entre 1024 bits y 3072. Cuanto mayor sea el
tamaño más segura será pero también más lento el proceso de cifrado y descifrado. En nuestro caso
tomaremos el valor por defecto: 2048.
4º Posteriormente, nos pide la fecha en la que expirará la clave, en nuestro caso pondremos 15 días.
5º. Siguiendo las indicaciones de la aplicación, proporcionaremos la información que nos solicita
como: nombre, mail y etc.
6º. Por último nos pedirá la contraseña que salvaguarda la clave privada. Esta debe ser lo más
compleja posible, mezclando símbolos especiales, números y caracteres alfabéticos.
7º. Tras generar las claves podemos verlas con el comando gpg -k que nos muestra nuestro anillo de
claves, lo importante de este paso es que veremos la identificación de cada una, que es necesaria
para poderlas exportar y enviar.
profesor@ubuntu:~/gpg$ gpg -k
/home/pedro/.gnupg/pubring.gpg
------------------------------
pub 2048D/18384645 2017-01-20
uid Profesor informática <info@dominio.es>
sub 2048g/C4A9EA7A 2017-01-20
Caso práctico: Intercambiar claves. Exportar e importar.

Con esta pareja de claves cualquiera nos pueda mandar un archivo cifrado, para ello
tenemos que difundir la clave pública que acabamos de crear, para exportarla en un archivo
usaremos el comando gpg -output [archivo destino] --export [ID de a clave pública] (la clave pública
generada antes tiene la ID 18384645).
profesor@ubuntu:~/gpg$ gpg --output ProfesorClavePub.gpg --export 18384645
profesor@ubuntu:~/gpg$ ls
MiClavePub.gpg

Ahora podemos pasar el archivo ProfesorClavePub.gpg a aquellos con los que nos
queremos comunicar o subirlo a un servidor público.

Subir una clave pública a un servidor de claves

Los servidores de claves suelen ser de acceso público. Subiremos una clave a los servidores
del MIT (pgp.mit.edu) usando el comando gpg --send-keys --keyserver [Dirección del servidor] [ID de la
clave pública] (al igual que antes la ID es 18384645).
profesor@ubuntu:~/gpg$ gpg --send-keys --keyserver pgp.mit.edu 18384645
gpg: enviando clave 18384645 a hkp servidor pgp.mit.edu

A partir de este momento la clave estará accesible desde este servidor específico.

Importar la clave desde el archivo o servidor de claves

Para poder usar la clave pública para cifrar o comprobar la identidad del remitente tenemos
que importar previamente la clave, desde un archivo debemos de usar el comando gpg --import
[Archivo de la clave pública]
profesor@ubuntu:~/gpg$ gpg --import ProfesorMiClavePub.gpg
gpg: clave 18384645: «Profesor Informática <info@dominio.es>» sin cambios
gpg: Cantidad total procesada: 1
gpg: sin cambios: 1

Al tener la clave ya en mi anillo de claves me contesta que no hay cambios. Pero, si la


pasamos a otro usuario o este la baja de un servidor. La opción de import la añadirá a su
anillo de claves.
Para realizar la importación desde el servidor tenemos que usar el comando gpg --keyserver
[Dirección del servidor] --recv-keys [ID de la clave].
profesor@ubuntu:~/gpg$ gpg --keyserver pgp.mit.edu --recv-keys 18384645
gpg: solicitando clave 18384645 de hkp servidor pgp.mit.edu
gpg: clave 18384645: «Profesor Informática <info@dominio.es>» sin cambios
gpg: Cantidad total procesada: 1
gpg: sin cambios: 1

Como podemos ver al tener ya la clave nos devuelve el mismo mensaje.


Caso práctico: Cifrar y descifrar

Cifrar con la clave pública

Una vez tenemos la clave pública del receptor de nuestros mensajes en nuestro anillo de
claves podemos enviarle un documento cifrado.
Para cifrar el documento usaremos el comando gpg —encrypt —recipient [ID de la
clave] [Archivo]
Nuestro documento es: documento.txt

profesor@ubuntu:~/gpg$ gpg --encrypt --recipient 18384645 documento.txt


profesor@ubuntu:~/gpg$ ls
documento.txt documento.txt.gpg

Y ya tenemos el archivo listo para mandarlo de forma segura.

Descifrar un archivo con la clave privada

Y ahora es el momento de descifrar con nuestra clave privada el documento tras


recibirlo, con el comando gpg -d [Archivo] e introduciendo la contraseña que creamos para
salvaguardar la clave privada.
profesor@ubuntu:~/gpg$ gpg -d documento.txt.gpg
Necesita una frase contraseña para desbloquear la clave secreta
del usuario: …

A continuación nos muestra el contenido del mensaje.

Potrebbero piacerti anche