Foro de elhacker.net

Seguridad Informática => Criptografía => Mensaje iniciado por: madpitbull_99 en 21 Noviembre 2010, 21:47 pm



Título: [Guía] Generación de claves para cifrado asimétrico
Publicado por: madpitbull_99 en 21 Noviembre 2010, 21:47 pm
Introducción a la criptografía asimétrica

La idea principal de la criptografía asimétrica es que en una comunicación segura se usan una pareja de claves. Una de ellas, que es la publica, que deberá ser intercambiada con cada una de las entidades con las que quiera comunicarse mensajes secretos, y otra de ellas, que es la privada, y que por tanto no debe ser compartida con nadie.

Para cifrar un mensaje, el emisor utilizara la clave publica del receptor, y a su vez, el receptor descifrara este mensaje usando su clave privada.

Ejemplo:
Supongamos que Fernando y Julia quieren intercambiarse información confidencial usando la criptografía asimétrica. Lo primero que deben hacer, es obtener una pareja de claves propias (privada + publica), cada uno comunica su clave publica al otro, ya que no pasaría nada si cayera en manos de un tercero. Cuando Fernando quiera enviarle un mensaje cifrado a Julia debera usar la clave que le a sido proporcionada anteriormente para cifrar el mensaje.

Como es lógico pensar, estas claves (privada y publica) se generan a la vez y se encuentran relacionadas matemáticamente entre si mediante funciones de un solo sentido. Resulta prácticamente imposible descubrir la clave privada a partir de la publica.

En la imagen de abajo podemos ver un esquema gráfico con el proceso de cifrado:

(http://madzone.comoj.com/image_host/images/asimetrico.jpg)


Generación de claves para uso de cifrado asimétrico

Para la creación de claves asimétricas usare la herramienta GNUPG (http://www.gnupg.org/) que se puede descargar desde la pagina oficial . (http://www.gnupg.org/download/index.es.html) En mi caso usare una distribución GNU/Linux, pero el proceso es igual para Windows.

1. Abrimos una consola y ejecutamos la instrucción gpg con el parámetro --gen-key .

2. Nos aparecerá este menú:
Código
  1. Por favor seleccione tipo de clave deseado:
  2. (1) RSA y RSA (predeterminado)
  3. (2) DSA y Elgamal
  4. (3) DSA (solo firmar)
  5. (4) RSA (solo firmar)
  6. Su seleccion?:
  7. 1
Donde tenemos que elegir el tipo de cifrado, en nuestro caso usaremos RSA y RSA, o sea el numero 1.

3. Elegir el tamaño de la clave. Usaremos 2048 (por defecto).
Código
  1. las claves RSA pueden tener entre 1024 y 4096 bits de longitud.
  2. De que tamano quiere la clave? (2048) 2048

4. Indicar el periodo de validez de la clave.
Código
  1. Por favor, especifique el periodo de validez de la clave.
  2. 0 = la clave nunca caduca
  3. <n> = la clave caduca en n dias
  4. <n>w = la clave caduca en n semanas
  5. <n>m = la clave caduca en n meses
  6. <n>y = la clave caduca en n anyos
  7. Validez de la clave (0)? 0
Código
  1. La clave nunca caduca
  2. Es correcto? (s/n) s
Ponemos <s> si elegimos que nuca caduque.

5. Introducir Nombre y Apellidos.
Código
  1. Nombre y apellidos: Alex MadPitbull_99

6. Dirección de Correo Electrónico.
Código
  1. Direccion de correo electronico: madpitbull99@elhacker.net

7. Poner comentarios.
Código
  1. Comentario: Claves para cuenta @ehn.net

8. Proceso final. Nos preguntara si todos nuestros datos son correctos. Ponemos v (vale) si es así.
Código
  1. Cambia (N)ombre, (C)omentario, (D)ireccion o (V)ale/(S)alir? v

9. Introducir contraseña. Recordadla o mejor apuntadla en algún lado.

10. Paso final. Sera necesario cargar el microprocesador con algo de carga y esperar a que se genere la clave.



Exportar clave publica

Para exportar nuestra clave publica en un fichero de texto usaremos la instruccion de abajo:
Código
  1. gpg -a --export madpitbul99@elhacker.net >/home/mad/Escritorio/clave_publica_ehn.pub
Eso exportara la clave publica en un fichero de texto llamado clave_publica_ehn.pub . Si lo abrimos veremos nuestra clave:

(http://madzone.comoj.com/image_host/images/seleccin00.png)

Esa es la clave que tendremos que pasar a la persona que quiera enviarnos un mensaje cifrado.



Importar clave publica

El emisor debera importar nuestra clave publica en su anillo de claves (base de datos de claves) para que luego pueda cifrar un documento y enviarlo.
Código
  1. gpg --import fichero_clave_publica.txt



Cifrar ficheros

Para que el emisor puede cifrar un documento deberá tener instalado el GPG (http://www.gnupg.org/) pero no tiene porque crearse su propia clave privada si no la necesita.
Usaremos este comando para cifrar un documento de texto:
Código
  1. gpg -a --encrypt -r madpitbull99@elhacker.net documento.txt

Donde documento.txt es el fichero a cifrar. Despues de ejecutar este comando nos habrá creado un fichero con un nombre igual que el anterior pero acabado en la extensión .asc (documento.txt.asc)

Ese es el fichero que el emisor deba enviar al receptor de forma segura (cifrado)



Descifrar ficheros

Para descifrar un fichero necesitaremos la clave privada que hemos introducido en el primer paso. Ponemos el comando de abajo y después introduciremos la contraseña privada.
Código
  1. gpg -o documento_descifrado.txt --decrypt documento.txt.asc



Resumen

  • Creamos las dos claves, la privada y la publica.
  • Le pasamos la clave publica a la persona que nos quiera enviar un mensaje cifrado.
  • El emisor cifra el mensaje/documento con nuestra clave publica.
  • Envía el documento cifrado.
  • El receptor descifrara el documento cifrado usando su clave privada.



Enlaces externos con mas información:
GNU Privacy Guard (GnuPG) Official How-To (http://www.dewinter.com/gnupg_howto/spanish/gpgminicomo.html)
Pretty Good Privacy (Wikipedia) (http://en.wikipedia.org/wiki/Pretty_Good_Privacy)
Encrypt your mail using Thunderbird (Lifehacker) (http://lifehacker.com/180878/how-to-encrypt-your-email)
Criptografía Asimétrica (Wikipedia) (http://es.wikipedia.org/wiki/Criptograf%C3%ADa_asim%C3%A9trica)



Solo se aceptan criticas constructivas. Cualquier mejora a este tutorial/guía es bienvenida.