Dic 01 2009

GPG en Emacs

Tag: basicoverdrive @ 11:31 pm

EasyPG es una funcionalidad incluida dentro del paquete emacs que nos permite acceder a las funcionalidades de GPG (GnuPG). Al estar integrado, no necesitamos ninguna instalacion adicional mas que incluir en nuestro .emacs la siguiente configuracion:

;; EasyPG (GPG for emacs)
(require ‘epa)
(require ‘epa-file)
(epa-file-enable)

; EPG support for GNUS
(setq gnus-treat-x-pgp-sig t
mm-verify-option ‘always
mm-decrypt-option ‘always)

Existen distintas formas para usar esta funcionalidad para cifrar, pero antes debemos generar nuestro par de claves privada y publica en caso de que queramos cifrar para nosotros mismos documentos o bien importar claves de algun servidor de claves para poder cifrar documentos que luego enviaremos a algun receptor. Pero antes un poco de cultura general, debido a la desinformacion al respecto y aprovechando dicho articulo, asi que pongo un texto que lei hace un tiempo:

El Diccionario de la Real Academia Española da los siguientes resultados:

cifrar.

1. tr. Transcribir en guarismos, letras o símbolos, de acuerdo con una clave, un mensaje cuyo contenido se quiere ocultar.

2. tr. Valorar cuantitativamente, en especial pérdidas y ganancias.

3. tr. Compendiar, reducir muchas cosas a una, o un discurso a pocas palabras. U. t. c. prnl.

4. tr. Reducir exclusivamente a una cosa, una persona o una idea determinadas lo que ordinariamente procede de varias causas. Cifrar la dicha en la estimación pública. Cifrar la esperanza en Dios.

encriptar.

La palabra encriptar no está en el Diccionario.

“Encriptar” no suena correcto porque las palabras españolas que derivan de κρυπτός (”oculto”) se forman de manera diferente:

Viendo “criptografía”, “criptograma”, “críptico”, “criptógamo”, “criptoanálisis”, etc. la raíz es “cripto” o “cripti” con lo que, siguiendo las reglas de fonética y formación del español, la palabra debería ser (inventadas) “encripticar”, “criptificar” o –más probablemente– “criptografiar”.

“Cripta” viene del griego κρύπτη, sustantivo femenino en η que significa “sótano” o “lugar bajo tierra”, luego pasó por el latín y adquirió el tinte mortuorio. El lexema de “encriptar” es “cripta”, luego parece correcto decir que “encriptar”, de significar algo, es “meter en la cripta” o “meter bajo tierra” (como “sepultar”, que también tiene connotación de “ocultar”).

“Sifr” es “cifra” y “cifrar”, por lógica, sería “poner en números”, “numerar”, etc. Teniendo en cuenta que los criptosistemas se han basado siempre en el tratamiento numérico de los mensajes pues su uso no está demasiado desencaminado, etimológicamente hablando.

Por lo tanto, encriptar en si no existe, y si tuviera un significado sería el de “meter en una cripta”, y cifrar sería el termino más correcto.

Aún asi, y debido a las influencias del inglés, sobre todo en la informatica, se usa la palabra encriptar y se acepta aunque sea incorrecto, por lo que se pueden utilizar ambos terminos según quiera cada uno pero teniendo en cuenta cual es el termino correcto si se quiere demostrar un poco de “culturilla” (que falta hace con la generación HOYGAN que hay hoy dia..).

Para comenzar a utilizar esta funcionalidad en emacs tan solo debemos editar un fichero con extension .gpg, insertar cualquier texto y al salir, nos pedira guardarlo, pero esta vez usando una clave publica que debemos haber generado previamente. Aunque la finalidad de este articulo es el uso de GPG bajo emacs, creo que es interesante informar de los comandos esenciales de GPG de forma breve, para poder poner este articulo en practica sin errores por falta de una clave importada o por no haber generado las claves:

Generar una clave (escoged RSA + ElGamal)

gpg –gen-key

Enviar nuestra clave a un servidor PGP/GPG

gpg –send-keys –keyserver pgp.rediris.es CLAVEID_O_MAIL

Buscar claves en servidores

gpg –keyserver pgp.rediris.es –search-keys CLAVEID_O_MAIL

Ver las claves en rediris o cualqueir otro server (todos estan conectados entre ellos) mediante web

http://www.rediris.es/keyserver/

Importar una clave de un servidor

gpg –keyserver pgp-rediris.es –recv-key CLAVEID_O_MAIL

Importar una clave de un fichero

gpg –import suclave.asc.pub

Abrir GPG subshell para modificar nuestra clave y otra informacion

gpg –edit-key CLAVEID_O_MAIL

Una vez hayamos generado nuestro par de claves publica/privada o bien hayamos importado alguna clave publica de algun conocido, ya podemos poner en practica EasyPG. Tenemos 3 formas basicas de cifrar:

  1. Si creamos o abrimos un fichero con extension .gpg desde emacs, escribimos un texto en el, y al guardar dicho fichero se nos pedira que clave queremos usar para cifrarlo (nos mostrara una lista en una ventana aparte). Una vez seleccionado el mensaje sera cifrado. Si salimos de emacs veremos que desde consola el fichero es ilegible, es decir esta cifrado. Si abrimos esta vez el fichero .gpg con emacs nos pedira la contrasena para usar la clave privada para asi poder descifrarlo, haciendo de este legible otra vez.
  2. Podemos cifrar desde consola mediante el comando gpg por ejemplo (la opcion –armor cifrara dejando en el fichero de salida un formato ASCII, si no se especifica dicha opcion el fichero de salida sera un fichero binario):
    • gpg –armor –recipient CLAVEID –encrypt fichero_a_cifrar
    • gpg –armor –output fichero_cifrado –recipient CLAVEID –encrypt fichero_a_cifrar
  3. Podemos desde emacs seleccionar una region de un buffer (o el buffer completo como se desee) y presionando M-x epa-encrypt-region. Para descifrar realizaremos el mismo proceso de seleccionar una region cifrada y presionando M-x epa-decrypt-region.

Podemos asociar a dichas funciones algun keystroke para acelerar dicho proceso si lo hacemos de forma habitual, en mi caso lo asocie a las teclas F11 para cifrar y F12 para descifrar:

;; To cipher a region
;; M-x epa-encrypt-region OR global F11
(global-set-key [f11] ‘epa-encrypt-region)
;; To uncipher a region
;; M-x epa-decrypt-region OR global F12
(global-set-key [f12] ‘epa-decrypt-region)

« Página anterior