June 30th 2008 04:41 pm
GPG
Introducción
La seguridad en las comunicaciones es un tema muy importante y delicado que no debemos tomar a la ligera, en internet sobre todo en donde el robo de identidad y de información es muy frecuente. Para evitar esto podemos tomar algunas medidas al respecto.
GPG es una herramienta de cifrado y firmas digitales, es la alternativa libre a PGP, ambas herramientas están basadas en el estándar OpenPGP. GPG es software libre.
El estándar OpenPGP usa como sistema de cifrado/firma un par de llaves: publica y privada. A esto se le conoce como Sistemas de cifrado asimétrico. Estas llaves nos permiten cifrar o firmar un documento.
La llave publica debe distribuirse a todas las personas con las que queremos mantener comunicación cifrada y/o que quieran verificar nuestras firmas, mientras que la llave privada la mantendremos nosotros, y nunca la compartiremos, para descifrar los mensajes que nos envían las demás personas.
Lo que se cifra con la llave publica se descifra con la llave privada y viceversa, lo que se cifra con la llave privada se descifra con la llave publica. En otras palabras, si queremos enviar un mensaje de tal forma que solo el destinatario lo pueda leer, debemos usar la llave publica de esta persona para cifrar el mensaje así con su llave privada esta persona descifrara el mensaje; si queremos enviar un documento firmado debemos usar nuestra llave privada para cifrarlo y con nuestra llave publica cualquier persona podrá descifrarlo y comprobara que fuimos nosotros quienes lo enviamos.
Ejemplos
Supongamos que Pedro quiere enviar un mensaje cifrado a Jaime, para esto Pedro debe tener la llave publica de Jaime y cifrar el mensaje con esta, posteriormente, Jaime, con su llave privada descifra el mensaje de Pedro.
Supongamos que Pedro quiere enviar un mensaje firmado a Jaime, para esto Pedro debe usar su llave privada y cifrar el mensaje con esta, posteriormente, Jaime, con la llave publica de Pedro descifrara el mensaje.
Creación de un par de llaves
Requisitos
Lo primero que tenemos que hacer es instalar GPG en nuestro sistema. Para instalarlo, desde una consola y como root.
# apt-get install gnupg
También podemos bajar el código fuente desde la pagina de descargas de GPG o los binarios (la mejor opción para usuarios de Windows).
Con esto ya podemos crear nuestro par de llaves, pero tendríamos que hacerlo desde la consola. Afortunadamente hay un entorno gráfico que nos permite hacer lo mismo. Lo instalamos.
# apt-get install seahorse
Creación
Con esto ya tenemos todo listo para crear nuestro juego de llaves. Iniciamos seahorse.
$ seahorse
Esta es la pantalla principal de seahorse:

Damos click a la opción Nuevo y después en continue.

En la siguiente pantalla introducimos nuestro nombre completo, e-mail y un comentario. El único dato obligatorio es el nombre. En la parte de opciones avanzadas, en la opción tipo de encriptado dejamos seleccionada la opción DSA Elgamal, en la opción fortaleza de la clave podemos dejar 2048 o elegir un valor mas grande, en la opción expiration date seleccionamos Never expires. Y damos click en crear.

La siguiente pantalla nos preguntara por una contraseña, que podemos dejar en blanco. Y damos click en continuar.
La siguiente pantalla nos muestra el progreso de la creación de las llaves, tarda un poco, sean pacientes.

Por ultimo ya tenemos nuestro par de llaves creadas.

Nuestro identificador es 9C558BF7, esta clave la compartiremos con las personas que deseemos mantener comunicación.
Distribución de la llave publica
Compartir nuestra llave publica
Ahora vamos a colocar en un servidor nuestra llave publica para que cualquiera la pueda consultar.
Nos vamos a Editar -> Preferencia en la pestaña servidores de claves, seleccionamos algún servidor y damos click en cerrar.

Regresamos a la pantalla principal. Seleccionamos Remota -> Sincronizar y damos click en sincronizar.

Ahora nuestra clave publica ya esta disponible para todo el mundo ver.
Obtención de otras llaves publicas
Para esto debemos obtener el identificador de la otra persona y el nombre del servidor en donde este su llave publica.
Supongamos que el servidor es hkp://pgp.mit.edu:11371, y el identificador de la llave publica es C5A3CF1E, también nos puede servir el correo electrónico de esa persona, nicolas(at)ihtoa(dot)org o su nombre, Nicolas Sarmiento.
Teniendo esto, nos vamos a Remote -> Find remote keys, y en el cuadro de texto search for keys containing escribimos el identificador de la clave o el nombre de la persona o su dirección de e-mail, en la opción Where to search seleccionamos el servidor en el cual vamos a buscar. Damos click en search.

Se mostrara una pantalla en la cual aparece el resultado de la búsqueda, seleccionamos la clave que vamos a importar y damos click en import.

Finalmente, en la pantalla principal de seahorse nos vamos a la pestaña Other Collected Keys y veremos la llave publica importada.

Enlaces
2 Comments »
lesthack on 30 Jun 2008 at 2:49 pm #
Excelente, yo lo había hecho desde consola, pero ya que ahora ya nos enseñaste a hacerlo mediante un entorno gráfico esta de lujo. Me gusta el formato que tiene el post, muy bien.
Dave on 30 Jun 2008 at 3:25 pm #
Me parece una excelente opción para incrementar la seguridad de las comunicaciones a través de Internet, si bien su uso no es una prioridad en el común de los mensajes si existe cierta información sensible en la que no estaría de más agregar esta capa de protección.
Muy la ilustración de su uso.
Thnx Nick.