Aug 27 2008

GPG III

Nick

Integración con Evolution

Supongamos que ya tenemos creada una cuenta en Evolution, ahora veamos como configurarla para que trabaje con GPG.

  1. Iniciamos Evolution, Applications -> Office -> Evolution.Evolution Main Window
  2. Damos click en Edit -> Preferences.
  3. En Mail Accounts, seleccionamos la cuenta que deseamos (en este caso solo hay una, pero recuerda que puede haber varias) y damos click en Edit.
  4. En la siguiente pantalla, seleccionamos la pestaña security y en el campo PGP/GPG Key ID colocamos nuestro identificador.
  5. Damos click en OK, cerramos la ventana del editor; después damos click en close, cerramos las preferencias y listo. Ya tenemos integrada nuestra llave GPG con nuestro e-mail.

Manejo de e-mail

Ahora que ya tenemos integrada nuestra GPG, veamos como enviar correo firmado/cifrado.

Hay que mencionar que aunque aquí se esta intercambiando correo entre dos personas que usan Evolution, GPG también funciona aunque, por ejemplo, un usuario use Microsoft Outlook y otro Kontact. Es decir, no importa que tipo de cliente de correo se use, GPG funciona igual.

Como dijimos antes, para cifrar un mensaje necesitamos tener la llave publica de la persona a quien se lo mandamos. Y para que el destinatario de un mensaje firmado sepa que nosotros somos quien lo escribió él necesita nuestra llave publica.

Por ultimo, si un mensaje firmado es interceptado, se podrá leer el contenido aunque si lo modifican su firma dejara de ser válida y el destinatario podrá darse cuenta de esto. Pero, si un mensaje cifrado es interceptado, no se podrá leer su contenido, solo se podrán ver caracteres sin sentido aparente.

Cifrado

Escribimos el correo como siempre (File -> New -> New Message).

Para cifrar el mensaje, seleccionamos Security -> PGP Encrypt. Y enviamos el correo.

Descifrado

Si el destinatario del mensaje abre el correo con un cliente que no tenga integrada su GPG, verá algo similar a esto.

En cambio si lo abre con un cliente de correo que si tenga integrada su GPG, verá algo como esto.

Cuando el destinatario quiera leer el mensaje se le pedirá su contraseña para poder desbloquear su llave privada y poder descifrar el menaje.

Firmado

Escribimos el correo como siempre (File -> New -> New Message).

Para firmar el mensaje, seleccionamos Security -> PGP Sign. Y enviamos el correo.

Verificar firma

Si el destinatario del mensaje abre el correo con un cliente que no tenga integrada su GPG, vera algo similar a esto.

En cambio si lo abre con un cliente de correo que si tenga integrada su GPG, verá algo como esto.


Jul 11 2008

GPG II

Nick

Manejo de archivos

Cifrado

Supongamos que tenemos un archivo llamado repub13.txt en /home/invitado.

  1. Abrimos una ventana del explorador de archivos, nautilus.
    Applications -> System tools -> File Browser.
  2. Localizamos el archivo repub13.txt, lo seleccionamos, y le damos click con el botón secundario del mouse.
    Cifrado
  3. Damos click en la opcion Encrypt…
    Selección Llave
  4. Seleccionamos la llave que deseamos usar para cifrar el archivo y damos click en OK. Listo, tenemos nuestro archivo cifrado.
    Cifrado completo

Hay que notar que lo ciframos usando nuestra llave publica, es decir, solo podrá ser descifrado con nuestra llave privada, solo lo podremos descifrar nosotros. Si por el contrario lo hubiéramos cifrado con la llave publica de Nicolas Sarmiento, solo él, podría descifrarlo.

Descifrado

Supongamos que tenemos un archivo llamado repub13.txt.pgp en /home/invitado.

  1. Abrimos una ventana del explorador de archivos, nautilus.
    Applications -> System tools -> File Browser.
  2. Localizamos el archivo repub13.txt.pgp, lo seleccionamos, y le damos click con el botón secundario del mouse.Decrypt File
  3. Damos click en la opción Open with “Decrypt File”.Password
  4. Proporcionamos la contraseña de la llave privada y damos click en OK. Listo, tenemos nuestro archivo descifrado.File Decrypted

Hay que notar que siempre que se cifra un documento se usa la llave publica, no la privada.

Firmado

Supongamos que tenemos un archivo llamado repub13.txt en /home/invitado.

  1. Abrimos una ventana del explorador de archivos, nautilus.
    Applications -> System tools -> File Browser.
  2. Localizamos el archivo repub13.txt, lo seleccionamos, y le damos click con el botón secundario del mouse.
    Sign
  3. Damos click en la opcion Sign.Choose Key
  4. Seleccionamos la llave que deseamos usar para firmar el archivo y damos click en OK.
    Password
  5. Proporcionamos la contraseña de la llave privada y damos click en OK.
    File signed
  6. Listo, tenemos nuestro archivo firmado.

Para firmar un documento siempre se usa una llave privada.

Verificar firma

Supongamos que tenemos un archivo llamado repub13.txt.sig en /home/invitado.

  1. Abrimos una ventana del explorador de archivos, nautilus.
    Applications -> System tools -> File Browser.
  2. Localizamos el archivo repub13.txt.sig, lo seleccionamos, y le damos click con el botón secundario del mouse.Verify Signature
  3. Damos click en la opción Open with “Verify Signature”.
  4. El aviso de firma válida se muestra en la esquina inferior derecha de la pantalla.
    Signature Verified

Para comprobar la validez de la firma se usa la llave publica.

Una vez que tenemos nuestro archivo cifrado este puede ser enviado a otras personas, claro estas personas solo lo podrán descifrar si el archivo fue cifrado con su llave publica. Si tenemos un archivo firmado que deseamos enviar a otra personas, tendremos que enviar tanto el archivo original, el que se firmo, como el archivo con extensión .sig resultante de la firma.

Manejo de cadenas

Cifrado

  1. Abrimos una instancia del editor de texto de GNOME, Gedit.
    Applications -> Accessories -> Text Editor.
  2. Supongamos que tenemos un texto ya escrito.
    Texto original
  3. Damos click en la opción Edit -> Encrypt…
    Encrypt
  4. Seleccionamos la llave publica con la que deseamos encriptar el texto, y damos click en OK.
    Private Key
  5. Listo, ya tenemos el texto cifrado.
    [code]
    -----BEGIN PGP MESSAGE-----
    Version: GnuPG v1.4.6 (GNU/Linux)

    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
    =dwT4
    -----END PGP MESSAGE-----
    [/code]

Descifrado

Partiendo del texto cifrado en la sección anterior.

  1. Damos click en la opción Edit -> Decrypt/Verify.
    Encrypted Text
  2. Proporcionamos la contraseña para la llave privada y damos click en OK.
    Password
  3. Listo, ya tenemos el texto descifrado.
    Texto original

Hay que tener en mente que no debemos modificar nada dentro de las ‘etiquetas’


-----BEGIN PGP MESSAGE-----
-----END PGP MESSAGE-----


Fuera de ellas se puede agregar lo que sea. Posteriormente si deseamos descifrar el mensaje no habra problema alguno.

De la misma manera si solo se desea cifrar una parte de todo el texto que hay en el archivo, se selecciona la parte del texto deseado y se procede de la misma forma que se explico anteriormente.

Para decifrarlo no hace falta seleccionarlo y se procede de la forma que se explico anteriormente.

Firmado

  1. Abrimos una instancia del editor de texto de GNOME, Gedit.
    Applications -> Accessories -> Text Editor.
  2. Supongamos que tenemos un texto ya escrito.
    Texto original
  3. Damos click en la opción Edit -> Sign…
    Sign
  4. Seleccionamos la llave privada con la que deseamos firmar el texto, y damos click en OK.
    Choose Private Key
  5. Proporcionamos la contraseña para la llave privada y damos click en OK.
    Password
  6. Listo, ya tenemos el texto firmado.
    [code]
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Gravitation cannot be held responsible for people falling in love. How on earth can you explain in terms of chemistry and physics so important a biological phenomenon as first love? Put your hand on a stove for a minute and it seems like an hour. Sit with that special girl for an hour and it seems like a minute. That's relativity.
    Albert Einstein
    US (German-born) physicist (1879 - 1955)

    We can learn even from our enemies.
    Ovid, Metamorphoses
    Roman poet (43 BC - 17 AD)

    What is done out of love always takes place beyond good and evil.
    Friedrich Nietzsche, Beyond Good and Evil, Aphorism 153
    German philosopher (1844 - 1900)
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.6 (GNU/Linux)

    iD8DBQFIdUEtdyFlPZxVi/cRAtUGAKCnJslgk87F3tWfD+r8zKFNlLK7FwCgjJmV
    a6LagYC43fgK0Urse9iz/t8=
    =Di6S
    -----END PGP SIGNATURE-----

    [/code]

Verificar firma

Partiendo del texto firmado en la sección anterior.

  1. Damos click la opción Edit -> Decrypt/Verify.
    Verify Sign
  2. El aviso de firma válida se muestra en la esquina inferior derecha de la pantalla.
    Valid Signature

Hay que tener en mente que no debemos modificar nada dentro de las ‘etiquetas’


-----BEGIN PGP SIGNED MESSAGE-----
-----END PGP SIGNATURE-----

Fuera de ellas se puede agregar lo que sea. Posteriormente si deseamos verificar la firma del mensaje no habra problema alguno.

De la misma manera si solo se desea firmar una parte de todo el texto que hay en el archivo, se selecciona la parte del texto deseado y se procede de la misma forma que se explico anteriormente.

Para verificar la firma no hace falta seleccionarlo y se procede de la forma que se explico anteriormente.

Nota: Si no se muestran las opciones de cifrado/firma en el editor de texto, es necesario activar el plugin correspondiente.
Edit -> Preferences
En la pestaña Plugins, habilitar la opción Text Encryption.


Jun 30 2008

GPG

Nick

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:

Pantalla principal

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

Nueva Clave GPG

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.

Datos

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.

Proceso

Por ultimo ya tenemos nuestro par de llaves creadas.

Final

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.

Preferencias

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

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.

Buscar

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.

importar

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

Llaves publicas

Enlaces