introducción a gnupg

9
Introducción a GnuPG. Introducción. La existencia de este documento obedece a varias razones, pero principalmente para fomentar la conciencia respecto de la privacidad y seguridad. Aunque la gente a veces desconoce del tema o es indiferente, estamos en una época en la cuál cualquier «niño» de 12 años —o menos— con acceso a Internet puede aprovechar fácilmente los agujeros de seguridad, obtener información o documentos críticos o aprovecharse de descuidos de los usuarios. Sólo hay que hacer búsquedas por «visa.txt», «credit_card.doc» o «mastercard_list.xls» en las redes P2P como ejemplo. Uno de los mejores métodos para solventar este tipo de problemas es usar criptografía. Si bien la criptografía data de tiempos muy remotos, la gran revolución de ésta sucedió en 1975, cuando dos ingenieros electrónicos de la Universidad de Stanford, Whitfield Diffie y Martin Hellman, aportaron el primer concepto nuevo en criptografía desde el tiempo de los griegos: la criptografía de clave pública. La nueva idea consistía en algo aparentemente imposible: un criptosistema donde hubiera dos claves, una para cifrar y otra para descifrar. De esta forma, si los usuarios fulano y zutano quieren intercambiarse mensajes, cada uno crea su pareja de claves y hacen pública la clave de cifrado. Entonces fulano, usando la clave de cifrar de zutano, le envía un mensaje. Carece de relevancia si el mensaje es incidentalmente o intencionalmente interceptado: el único que puede recomponer el mensaje es zutano, quien posee la clave de descifrado. Zutano hará lo contrario para responder el mensaje a fulano: usará la clave pública de fulano para enviarle el mensaje. La idea es sencilla. El problema estaba en encontrar una función matemática que la lleve a la práctica. Diffie y Hellman sugirieron que una manera de diseñar sistemas criptográficos seguros era utilizando problemas irresolubles desde el punto de vista computacional. Es decir, un escenario donde una computadora requerirá muchísimo tiempo —incluso millones de años — en encontrar la solución. La manera de construir un criptosistema de clave pública es la siguiente: Se escoge un problema intratable desde el punto de vista computacional. De éste se obtiene un subproblema más sencillo de fácil resolución. Se transforma el problema fácil en otro más difícil que se acerque al problema intratable. A esta transformación se la llama función trampa.

Upload: wilton-vizarreta-villalobos

Post on 27-Sep-2015

220 views

Category:

Documents


1 download

DESCRIPTION

introduccion a GNU

TRANSCRIPT

Introduccin a GnuPG.Introduccin.La existencia de este documento obedece a varias razones, pero principalmente para fomentar la conciencia respecto de la privacidad y seguridad. Aunque la gente a veces desconoce del tema o es indiferente, estamos en una poca en la cul cualquierniode 12 aos o menos con acceso a Internet puede aprovechar fcilmente los agujeros de seguridad, obtener informacin o documentos crticos o aprovecharse de descuidos de los usuarios. Slo hay que hacer bsquedas por visa.txt, credit_card.doc o mastercard_list.xls en las redes P2P como ejemplo.Uno de los mejores mtodos para solventar este tipo de problemas es usarcriptografa.Si bien la criptografa data de tiempos muy remotos, la gran revolucin de sta sucedi en 1975, cuando dos ingenieros electrnicos de la Universidad de Stanford, Whitfield Diffie y Martin Hellman, aportaron el primer concepto nuevo en criptografa desde el tiempo de los griegos: la criptografa de clave pblica. La nueva idea consista en algo aparentemente imposible: un criptosistema donde hubiera dos claves, una para cifrar y otra para descifrar. De esta forma, si los usuarios fulano y zutano quieren intercambiarse mensajes, cada uno crea su pareja de claves y hacen pblica la clave de cifrado. Entonces fulano, usando la clave de cifrar de zutano, le enva un mensaje. Carece de relevancia si el mensaje es incidentalmente o intencionalmente interceptado: el nico que puede recomponer el mensaje es zutano, quien posee la clave de descifrado. Zutano har lo contrario para responder el mensaje a fulano: usar la clave pblica de fulano para enviarle el mensaje.La idea es sencilla. El problema estaba en encontrar una funcin matemtica que la lleve a la prctica. Diffie y Hellman sugirieron que una manera de disear sistemas criptogrficos seguros era utilizando problemas irresolubles desde el punto de vista computacional. Es decir, un escenario donde una computadora requerir muchsimo tiempo incluso millones de aos en encontrar la solucin. La manera de construir un criptosistema de clave pblica es la siguiente: Se escoge un problema intratable desde el punto de vista computacional. De ste se obtiene un subproblema ms sencillo de fcil resolucin. Se transforma el problema fcil en otro ms difcil que se acerque al problema intratable. A esta transformacin se la llama funcin trampa. Se publica el problema difcil y la forma de usarlo: es la clave de cifrado. Pero se reserva la forma de pasar del difcil al fcil: es la clave de descifrado.En la actualidad el mtodo ms utilizado es el llamado RSA, desarrollado en 1977 por Ronald Rivest, Adi Shamir y Leonard Adleman. Este sistema se basa sobre la inexistencia de un algoritmo suficientemente eficiente para factorizar grandes nmeros quesean producto de dos nmeros primos.La ventaja de la criptografa moderna es que permite resolver dos de los problemas ms importantes con los que se enfrenta el nuevo mundo digital que est emergiendo: la modificacin del contenido de un mensaje por parte de un tercero y la identificacin de quien envi el mensaje. La utilizacin tanto de la criptografa de clave secreta como de la pblica permite obtener cierta certeza de que el mensaje carece de alteraciones, aunque sin la certeza absoluta. Por otro lado, la criptografa de clave pblica ha permitido la aparicin de la firma digital como sustitucin de la firma manual.Diffie y Hellman se propusieron en 1976 encontrar un mtodo para que siguiendo con nuestros amigos fulano pudiera estar seguro de la procedencia del mensaje es de zutano y adems pudiera convencer tambin a un juez en un proceso legal. As, la firma digital debe ser nica, imposible de falsificar, fcil de autenticar e irrevocable. Pero quiz lo ms curioso de todo es que los sistemas de clave pblica permiten lo que se llama 'el protocolo de la fe' o la demostracin de conocimiento nulo: Fulano puede convencer a zutano que posee un secreto sin decirle de qu secreto se trata. Siguiendo un smil, fulano es incapaz de abrir una caja cerrada porque zutano posee la llave y zutano se compromete a jams modificar su contenido una vez abierta. Este protocolo tiene una aplicacin clara: permite decir quin eres sin decirlo, algo muy importante cuando se trata de contraseas o nmeros de identificacin personal.Hoy cualquiera puede hacerse con un criptosistema seguro como PGP (Pretty Good Privacy). Y todo este prembulo fue para llegar hasta aqu.GnuPGes un reemplazo completo para PGP. Puede ser utilizado sin restricciones gracias a que prescinde del algoritmo patentado IDEA. GnuPG es una aplicacin que cumple el RFC2440 (OpenPGP). La versin 1.0.0 fue lanzada el 7 de septiembre de 1999. GnuPG es Software Libre por lo que puede ser utilizado, modificado y distribuido libremente bajo los trminos de la GNU/GPLv2. PGP sobre el cual se basa OpenPGP fue desarrollado originalmente por Philip Zimmermann a comienzos de la dcada de 1990.GnuPG es una herramienta para el intrprete de mandatos y es muycomplejapara utilizarla sin un conocimientos previos. Afortunadamente este documento tiene como intencin facilitar su uso y adems existen frentes grficos que facilitan el trabajo para casi cualquier arquitectura. GnuPG es dems 100% compatible con las llaves PGP.SeaHorsees el mejor frente de gnupg para el escritorio.Equipamiento lgico necesario.En ALDOS, CentOS, Fedora y Red Hat Enterprise Linux.El paquetegnupgviene incluido en la instalacin estndar. Ejecute los siguiente en caso de ser necesario:yum -y install gnupg

Ejecute lo siguiente para instalar Seahorse:yum -y install seahorse

En openSUSE y SUSE Enterprise Linux.El paquetegnupgviene incluido en la instalacin estndar deSUSE Linux Enterprise Server. Ejecute lo siguiente en caso de ser necesario:yast -i gpg2

Ejecute lo siguiente para instalar Seahorse.yast -i seahorse

Procedimientos.Generando el par de llaves desde el intrprete de mandatos.Ejecute la siguiente para generar el par de llaves:gpg --gen-key

Lo anterior solicitar: Tipo de llave. Predeterminado y recomendado es RSA y RSA. Tamao de la llave. Predeterminado es 2048 bits. Se recomienda 4096 bits para produccin. Seleccione 1024 slo para pruebas. Caducidad de la llave. Predeterminado es sin caducidad. Confirmacin de la caducidad. Nombre y apellidos. Direccin de correo electrnico primaria. Comentario descriptivo para el par de llaves. Confirmacin de los datos del usuario. Contrasea y frase de acceso con confirmacin.El proceso puede demorar varios minutos incluso horas dependiendo del tamao de la firma. En mquinas virtuales en anfitriones sin instrucciones para virtualizacin en el CPU sto puede demorar muchas horas e incluso das.Ejecute lo siguiente para ver la lista de llaves.gpg --list-keys

La salida sera similar a lo siguiente:[fulano@localhost][~]$ gpg --list-secret-keys/home/fulano/.gnupg/secring.gpg----------------------------------sec 4096D/F08846B8 2004-10-27 Fulano (Personal) .....uid Fulano (Fulano de Tal) .....[fulano@localhost][~]$

Conviene generar un certificado de revocacin en caso de extraviar la frase de acceso o que la seguridad de las llaves se haya visto comprometida. En el siguiente ejemplo se crea el certificado de revocacin para la llave con identidad F08846B8.gpg --output revocacion.asc --gen-revoke F08846B8

Esta ltima llave se debe enviar a todos los contactos en caso de requerirse revocar la llave original.Ejecute lo siguiente para exportar la firma en formato binario:gpg --output fulano.gpg --export F08846B8

Ejecute lo siguiente para exportar la firma en formato legible:gpg --output fulano.asc --armor --export F08846B8

Ejecute lo siguiente para importar la firma de otro usuario a partir de cualquiera de los dos tipos de archivo mencionados arriba:gpg --import zutano.gpg

Generando el par de llaves con Seahorse.Una vez instalado este programa, lo primero es generar el par de llaves (keys) pblica y privada. Seahorse tiene un muy intuitivo asistente de configuracin que gua paso a paso para generar el juego de llaves.Las llaves pueden tener una longitud desde 1024 bits hasta 4096 bits, lo que significa que gnupg buscar dos nmeros primos cuyo producto sea un nmero de la cantidad de bits (combinacin de 1s y 0s) seleccionada cuando se genere la llave.La cantidad de bits de la llave depende del grado de seguridad que necesite el usuario. Cuanto ms grande sea la llave, ms difcil ser romperla pero tambin ser ms lento ser el cifrado y decifrado de datos.Estableciendo el anillo de confianza (KeyRing)El objetivo de sto es distribuir la llave pblica y obtener las llaves pblicas de amigos, conocidos o compaeros de trabajo y establecer as nuestro anillo de confianza. Una vez que alguien enva su llave pblica se debe importar al anillo personal. Ejecute SeaHorse, vaya al menKey/LlavesImport/Importaren ese momento le tenemos que especificar, la ruta a la llave pblica de la persona en cuestin.Una vez hecho esto hay que firmar la llave pblica recientemente importada a fin de poder utilizarla. Seleccione la llave correspondiente y haga clic sobre el botnSign Key/Firmar llave, se preguntar que tan convencido estamos de que esa llave es de quin dice ser y posteriormente la contrasea y la llave ser incluida en nuestro anillode confianza.Firma, cifrado y descifrado.Para cifrar un mensaje se debe utilizarla llave pblicade la persona receptora del mensaje/archivo o la llave pblica si el cifrado es por motivos de seguridad.Hoy en da casi cualquier cliente de correo electrnico tiene la opcin de firmar/cifrar correo electrnico a travs de complementos. Para mayor informacin consulte la documentacin de cada cliente de correo electrnico.Para descifrar un mensaje el emisor seguramente utiliz la llave pblica, y se requiere la llave privada para descifrarlo.Abra una terminal como usuario regular y genere un archivo para realizar pruebas:ls -ail > ~/archivo.txt

Ejecute lo siguiente para crear un archivo firmado en formato binario:gpg --sign archivo.txt

Lo anterior solicitar la contrasea o frase de acceso y crear un archivo en formato binario denominado archivo.txt.sig.Ejecute lo siguiente para crear un archivo firmado en texto legible:gpg --clearsign archivo.txt

Lo anterior solicitar la contrasea o frase de acceso y crear un archivo en formato de texto simple denominado archivo.txt.asc.Ejecute lo siguiente para verificar los archivos firmados en los 2 ejemplos de arriba:gpg --verify archivo.txt.siggpg --verify archivo.txt.asc

Ejecute lo siguiente para generar un archivo de firma separado para un archivo.gpg --output firma-archivo.txt.sig \--detach-sig archivo.txt

Lo anterior solicitar la contrasea o frase de acceso y crear el archivo en formato binario firma-archivo.txt.sig.Ejecute lo siguiente para verificar la integridad de un archivo a partir del archivo de firma:gpg --verify firma-archivo.txt.sig archivo.txt

Para cifrar un archivo se requiere definir el destinatario del mismo de entre la lista de identidades importadas al anillo personal. El remitente puede utilizar la cuenta de correo o la clave de identidad mostrada porgpg --list-keysque correspondiente al destinatario. Ejemplo:gpg --output archivo-cifrado.txt.gpg \--encrypt --recipient [email protected] \archivo.txt

Lo anterior solicitar la contrasea o frase de acceso.El destinatario tendra que ejecutar lo siguiente para descifrar el archivo:gpg --output archivo-descifrado.txt \--decrypt archivo-cifrado.txt.gpg

Lo anterior solicitar la contrasea o frase de acceso correspondiente a la llave del destinatario.Ejecute lo siguiente para cifrar un documento de forma simtrica, es decir utilizando una contrasea o frase distinta a la utilizada para la llave privada:gpg --output archivo-cifrado.txt.gpg \--symmetric archivo.txt

Ejecute lo siguiente para descifrar el archivo:gpg --output archivo-descifrado.txt \--decrypt archivo-cifrado.txt.gpg

Lo anterior solicitar la contrasea o frase de acceso asignada al archivo.Lo anterior solicitar ingresar una contrasea o frase de acceso con confirmacin.Diferencias entre cifrar y firmar.Cifrar consiste en hacer ilegible un archivo o texto utilizando lallave pblicadel receptor del mismo quien ser el nico que pueda descifrar el archivo o texto utilizando sullave privada.Firmar un archivo slo permite asegurar al receptor de ste la identidad del creador. El autor utiliza lallave privadapara firmar y el receptor lallave pblicapara validar la identidad del autor.Respaldo de las llavesSeahorse slo permite hacer el respaldo de la llave pblica. El respaldo de la llave privada slo es posible utilizando gpg desde el intrprete de mandatos. Desde la pestaa denominada Mis Claves personales seleccione la llave y desde el men contextual seleccione y haga clic sobre la opcin Export/Exportar y se guarda el archivo comonombre.asc. Este es el archivo que se puede distribuir a cualquier persona que se quiera incluir al anillo personal.Hay dos formas de respaldar el par de llaves. La ms simple es crear un respaldo de todo el contenido de~/.gnupg/secring.gpg(llave privada) y~/.gnupg/pubring.gpg. El respaldo incluira tambin otras llaves utilizadas y todas las llaves del anillo personal.La forma de respaldo ms confiable, precisa y segura es hacerlo utilizando gpg. Ejecute primero lo siguiente para conocer identidad de la llave:gpg --list-secret-keys

La salida sera similar a lo siguiente:[fulano@localhost][~]$ gpg --list-secret-keys/home/fulano/.gnupg/secring.gpg----------------------------------sec 4096D/F08846B8 2004-10-27 Fulano (Personal) .....uid Fulano (Fulano de Tal) .....[fulano@localhost][~]$

En el ejemplo anterior: la identidad de la llave correspondera aF08846B8.Ejecute lo siguiente para hacer respaldo de esta llave:gpg --armor \-o Llave_Privada.key \--export-secret-keys F08846B8

El respaldo se almacenar en el archivoLlave_Privada.key.Ejecute lo siguiente para proteger la llave privada con una contrasea o frase de acceso:gpg --armor \--export-secret-keys F08846B8 \| gpg --armor --symmetric \-o Llave_Privada.key.gpg

Lo anterior solicitar una contrasea o frase de acceso con confirmacin.Ejecute lo siguiente para restaurar de la llave privada protegida con una frase de acceso:gpg --decrypt Llave_Privada.key.gpg

Lo que solicitar la contrasea y el archivo resultante ser un archivo *.key que se puede importar normalmente desde Seahorse.Consejos Finales. GnuPG brinda la posibilidad de usar una frase de acceso. Es decir se puede escribir como contrasea, oraciones, citas, incluir espacios en blanco y dems. Sin embargo, utilizar frases como Mi mam me mima es una psima idea. Una buena frase de acceso contiene letras maysculas y minsculas, signos, puntuaciones, acentos y tildes y principalmente evitar palabras de diccionario de cualquier idioma.Ejemplo de una buena frase de acceso:@1c@nc3 lbr3, 1@ 1b3rt@d d31 c0n0cm3nt0 Es importante almacenar las llaves en algn tipo de medio confiable CD, DVD o llave USB y a su vez guardar stos en lugar seguro. Para los paranoicos, el hecho de tener la llave privada slo con una frase de acceso puede ser insuficiente. Existe una forma de reforzar la seguridad comprimiendo el archivo y protegindolo con una contrasea a travs dezip. Ejemplo:zip -e respaldo-llave.zip Llave_Privada.key.gpgLo anterior solicitar una contrasea con confirmacin.Adicionalmente y dependiendo de su grado de paranoia se puede volver a poner el archivo resultante dentro de otro archivo zip con compresin 0 y repetir tantas veces como se quiera. De esta forma, si la llave pblica cae en manos equivocadas, primero debe romper tantas contraseas como archivos zip se hayan creado, romper la frase de acceso del archivoLlave_Privada.key.gpgy luego la frase de acceso de la llave en si. An con un enorme poder de procesamiento, hacer todo sto puede llevar meses, aos o dcadas. Si la contrasea o frase de acceso es muy mala, sto puede demorar desde unos segundos hasta algunas horas o das.