{"id":82,"date":"2009-12-01T23:31:25","date_gmt":"2009-12-01T21:31:25","guid":{"rendered":"http:\/\/www.blackhats.es\/wordpress\/?p=82"},"modified":"2022-08-20T18:26:02","modified_gmt":"2022-08-20T16:26:02","slug":"gpg-en-emacs","status":"publish","type":"post","link":"https:\/\/www.blackhats.es\/wordpress\/?p=82","title":{"rendered":"GPG en Emacs"},"content":{"rendered":"<p><strong>EasyPG<\/strong> es una funcionalidad incluida dentro del paquete <strong>emacs<\/strong> que nos permite acceder a las funcionalidades de <strong>GPG<\/strong> (GnuPG). Al estar integrado, no necesitamos ninguna instalacion adicional mas que incluir en nuestro .<strong>emacs<\/strong> la siguiente configuracion:<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #ff6600;\"><span style=\"color: #0000ff;\"><em>;; EasyPG (GPG for emacs)<\/em><\/span><\/span><span style=\"color: #0000ff;\"><em><br \/>\n<\/em><\/span> <span style=\"color: #ff6600;\"><span style=\"color: #0000ff;\"><em>(require &#8216;epa)<br \/>\n(require &#8216;epa-file)<br \/>\n(epa-file-enable)<\/em><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #ff6600;\"><span style=\"color: #0000ff;\"><em>; EPG support for GNUS<br \/>\n(setq gnus-treat-x-pgp-sig t<br \/>\nmm-verify-option &#8216;always<br \/>\nmm-decrypt-option &#8216;always)<\/em><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\">\n<p>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:<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">El Diccionario de la Real Academia Espa\u00f1ola da los siguientes resultados:<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">cifrar.<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">1. tr. Transcribir en guarismos, letras o s\u00edmbolos, de acuerdo con una clave, un mensaje cuyo contenido se quiere ocultar.<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">2. tr. Valorar cuantitativamente, en especial p\u00e9rdidas y ganancias.<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">3. tr. Compendiar, reducir muchas cosas a una, o un discurso a pocas palabras. U. t. c. prnl.<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">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\u00f3n p\u00fablica. Cifrar la esperanza en Dios.<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">encriptar.<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">La palabra encriptar no est\u00e1 en el Diccionario.<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">\u201cEncriptar\u201d no suena correcto porque las palabras espa\u00f1olas que derivan de \u03ba\u03c1\u03c5\u03c0\u03c4\u03cc\u03c2 (\u201doculto\u201d) se forman de manera diferente:<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">Viendo \u201ccriptograf\u00eda\u201d, \u201ccriptograma\u201d, \u201ccr\u00edptico\u201d, \u201ccript\u00f3gamo\u201d, \u201ccriptoan\u00e1lisis\u201d, etc. la ra\u00edz es \u201ccripto\u201d o \u201ccripti\u201d con lo que, siguiendo las reglas de fon\u00e9tica y formaci\u00f3n del espa\u00f1ol, la palabra deber\u00eda ser (inventadas) \u201cencripticar\u201d, \u201ccriptificar\u201d o \u2013m\u00e1s probablemente\u2013 \u201ccriptografiar\u201d.<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">\u201cCripta\u201d viene del griego \u03ba\u03c1\u03cd\u03c0\u03c4\u03b7, sustantivo femenino en \u03b7 que significa \u201cs\u00f3tano\u201d o \u201clugar bajo tierra\u201d, luego pas\u00f3 por el lat\u00edn y adquiri\u00f3 el tinte mortuorio. El lexema de \u201cencriptar\u201d es \u201ccripta\u201d, luego parece correcto decir que \u201cencriptar\u201d, de significar algo, es \u201cmeter en la cripta\u201d o \u201cmeter bajo tierra\u201d (como \u201csepultar\u201d, que tambi\u00e9n tiene connotaci\u00f3n de \u201cocultar\u201d).<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">\u201cSifr\u201d es \u201ccifra\u201d y \u201ccifrar\u201d, por l\u00f3gica, ser\u00eda \u201cponer en n\u00fameros\u201d, \u201cnumerar\u201d, etc. Teniendo en cuenta que los criptosistemas se han basado siempre en el tratamiento num\u00e9rico de los mensajes pues su uso no est\u00e1 demasiado desencaminado, etimol\u00f3gicamente hablando.<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">Por lo tanto, encriptar en si no existe, y si tuviera un significado ser\u00eda el de \u201cmeter en una cripta\u201d, y cifrar ser\u00eda el termino m\u00e1s correcto.<\/span><\/span><\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-size: x-small;\"><span style=\"font-family: verdana, arial, helvetica, sans-serif;\"><span style=\"color: #800080;\">A\u00fan asi, y debido a las influencias del ingl\u00e9s, 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\u00fan quiera cada uno pero teniendo en cuenta cual es el termino correcto si se quiere demostrar un poco de \u201cculturilla\u201d (que falta hace con la generaci\u00f3n HOYGAN que hay hoy dia..).<\/span><\/span><\/span><\/p>\n<p>Para comenzar a utilizar esta funcionalidad en emacs tan solo debemos editar un fichero con extension .<strong>gpg<\/strong>, 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 <strong>GPG<\/strong> bajo <strong>emacs<\/strong>, creo que es interesante informar de los comandos esenciales de <strong>GPG<\/strong> 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:<\/p>\n<p>Generar una clave (escoged <strong>RSA<\/strong> + <strong>ElGamal<\/strong>)<\/p>\n<p style=\"padding-left: 30px;\"><strong>gpg &#8211;gen-key<\/strong><\/p>\n<p>Enviar nuestra clave a un servidor <strong>PGP\/GPG<\/strong><\/p>\n<p style=\"padding-left: 30px;\"><strong>gpg &#8211;send-keys &#8211;keyserver pgp.rediris.es CLAVEID_O_MAIL<\/strong><\/p>\n<p>Buscar claves en servidores<\/p>\n<p style=\"padding-left: 30px;\"><strong>gpg &#8211;keyserver pgp.rediris.es &#8211;search-keys CLAVEID_O_MAIL<\/strong><\/p>\n<p>Ver las claves en rediris o cualqueir otro server (todos estan conectados entre ellos) mediante web<\/p>\n<p style=\"padding-left: 30px;\"><strong><a href=\"http:\/\/www.rediris.es\/keyserver\/\" target=\"_blank\" rel=\"noopener\">http:\/\/www.rediris.es\/keyserver\/<\/a><\/strong><\/p>\n<p>Importar una clave de un servidor<\/p>\n<p style=\"padding-left: 30px;\"><strong>gpg &#8211;keyserver pgp-rediris.es &#8211;recv-key CLAVEID_O_MAIL<\/strong><\/p>\n<p>Importar una clave de un fichero<\/p>\n<p style=\"padding-left: 30px;\"><strong>gpg &#8211;import suclave.asc.pub<\/strong><\/p>\n<p>Abrir GPG subshell para modificar nuestra clave y otra informacion<\/p>\n<p style=\"padding-left: 30px;\"><strong>gpg &#8211;edit-key CLAVEID_O_MAIL<\/strong><\/p>\n<p>Una vez hayamos generado nuestro par de <strong>claves publica\/privada<\/strong> o bien hayamos importado alguna clave publica de algun conocido, ya podemos poner en practica <strong>EasyPG<\/strong>. Tenemos 3 formas basicas de cifrar:<\/p>\n<ol>\n<li>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 <strong>.gpg<\/strong> con emacs nos pedira la contrasena para usar la clave privada para asi poder descifrarlo, haciendo de este legible otra vez.<\/li>\n<li>Podemos cifrar desde consola mediante el comando gpg por ejemplo (la opcion<strong> &#8211;armor<\/strong> cifrara dejando en el fichero de salida un formato <strong>ASCII<\/strong>, si no se especifica dicha opcion el fichero de salida sera un fichero <strong>binario<\/strong>):\n<ul>\n<li><strong>gpg &#8211;armor &#8211;recipient CLAVEID &#8211;encrypt fichero_a_cifrar<\/strong><\/li>\n<\/ul>\n<ul>\n<li><strong>gpg &#8211;armor &#8211;output fichero_cifrado &#8211;recipient CLAVEID &#8211;encrypt fichero_a_cifrar<\/strong><\/li>\n<\/ul>\n<\/li>\n<li>Podemos desde emacs seleccionar una <strong>region<\/strong> de un <strong>buffer<\/strong> (o el <strong>buffer<\/strong> completo como se desee) y presionando <strong>M-x epa-encrypt-region<\/strong>. Para descifrar realizaremos el mismo proceso de seleccionar una region cifrada y presionando <strong>M-x epa-decrypt-region<\/strong>.<\/li>\n<\/ol>\n<p><\/p>\n<div>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 <strong>F11<\/strong> para cifrar y <strong>F12<\/strong> para descifrar:<\/div>\n<p><\/p>\n<div style=\"padding-left: 30px;\"><span style=\"color: #ff6600;\"><em><span style=\"color: #0000ff;\">;; To cipher a region<\/span><\/em><\/span><\/div>\n<div style=\"padding-left: 30px;\"><span style=\"color: #ff6600;\"><em><span style=\"color: #0000ff;\">;; M-x epa-encrypt-region OR global F11<\/span><\/em><\/span><\/div>\n<div style=\"padding-left: 30px;\"><span style=\"color: #ff6600;\"><em><span style=\"color: #0000ff;\">(global-set-key [f11] &#8216;epa-encrypt-region)<\/span><\/em><\/span><\/div>\n<div style=\"padding-left: 30px;\"><span style=\"color: #ff6600;\"><em><span style=\"color: #0000ff;\">;; To uncipher a region<\/span><\/em><\/span><\/div>\n<div style=\"padding-left: 30px;\"><span style=\"color: #ff6600;\"><em><span style=\"color: #0000ff;\">;; M-x epa-decrypt-region OR global F12<\/span><\/em><\/span><\/div>\n<div style=\"padding-left: 30px;\"><span style=\"color: #ff6600;\"><em><span style=\"color: #0000ff;\">(global-set-key [f12] &#8216;epa-decrypt-region)<\/span><\/em><\/span><\/div>\n","protected":false},"excerpt":{"rendered":"<p>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 &#8216;epa) (require &#8216;epa-file) (epa-file-enable) ; EPG support for GNUS (setq gnus-treat-x-pgp-sig t mm-verify-option [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[144,8,143,142],"class_list":["post-82","post","type-post","status-publish","format-standard","hentry","category-basic","tag-easypgp","tag-emacs","tag-gnupg","tag-gpg"],"_links":{"self":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/82"}],"collection":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=82"}],"version-history":[{"count":1,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/82\/revisions"}],"predecessor-version":[{"id":772,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/82\/revisions\/772"}],"wp:attachment":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=82"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=82"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=82"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}