mutt: ¿Usar gpgme o gpg clásico?

13

El wiki de Mutt sobre la integración de GnuPG y muchos otros lugares (como el predeterminado en Debian) usan la forma clásica de conectar mutt a gnupg. Es decir, uno configura un montón de comandos para llamar gpgdirectamente. Por otro lado, hay una biblioteca llamada gpgme, que intenta estandarizar exactamente eso. Buscar en la web "mutt gpgme" no me dio ningún resultado realmente útil.

¿Cuáles son los pros y los contras de la utilización set crypt_use_gpgme=yesde .muttrc? ¿Por qué se usa tan raramente?

Elrond
fuente

Respuestas:

8

Mucha gente realmente no entiende GPGME y probablemente no ayuda que la documentación que existe es básicamente el comentario de código escrito en ese momento. Sin embargo, permitirá el acceso programático completo o casi completo a toda la suite GNU Privacy Guard y se supone que también permite el acceso a cosas como libassuan, gpg-agent y varios otros componentes. Es por eso que, por defecto, también incluye la implementación S / MIME que casi nadie fuera de algunas compañías que exclamaron en voz alta a fines de los años 90.

Actualmente GPGME incluye algo así como 500 funciones separadas o más y definitivamente cubre casi todo lo que haría con GPG en la línea de comando. Sin embargo, también contiene algunas reliquias de elecciones de diseño anteriores que posteriormente se determinó que no eran la dirección correcta. Por ejemplo, esta es una API con grandes porciones de GTK 2 en ella. Obviamente, esto debe desaparecer (y lo hará cuando el tiempo lo permita). Otro problema que tiene en estos días, quizás el mayor obstáculo para la adopción es que cuando alguien dice "API", la mayoría de los codificadores no piensan de inmediato en los archivos de encabezado C para compilar con su propio código para acceder a la cosa; admitámoslo, en estos días la mayoría de las personas está pensando en algo que es RESTful o al menos les permite interactuar con datos en formato JSON. GPGME está tan lejos de eso como ' s posible de conseguir. Tenga en cuenta que si bien debería ser posible hacer que funcione bien con JSON, nunca puede ser RESTful porque las teclas de edición no pueden serlo. Además, la administración de claves a través de la web solo está buscando problemas.

También hay muchas características y aspectos indocumentados de tal manera que incluso las personas que trabajan con el software desde su inicio todavía pueden sorprenderse por algunas cosas. Como, digamos, el formato XML para datos de llavero que tenían todo excepto un esquema formal (hasta que se generó hace un par de meses).

Por otro lado, por todas las cosas buenas que hace Mutt, también hace algunas cosas bastante impactantes. Por ejemplo, si se usa GPGME o no, no debe haber ninguna razón para que Mutt guarde en caché las frases de contraseña; En cualquier caso, debe ser entregado a GPG (con o sin gpg-agent). Del mismo modo, debería respetar los parámetros de configuración en el ~/.gnupg/gpg.confarchivo (y otros en ese directorio). Claro, configurar una ID de clave alternativa para diferentes cuentas para cambiar la forma en que se llaman los comandos o incluso poder especificar archivos de configuración alternativos o directorios completos (p. Ej.gpg --homedir ~/.gnupg-work/gpg.conf) Sin embargo, tal como están las cosas, Mutt pierde el tiempo tratando de resolver problemas que ya están resueltos por el programa con el que interactúa, como la frase de contraseña o la administración de claves, pero no permite el acceso a las funciones normales de GPG, muchas de las cuales son fantásticas para el correo electrónico como usar líneas de grupo para múltiples destinatarios o para anular la selección de clave para destinatarios particulares (porque siempre hay un tipo que sigue perdiendo su clave secreta u olvida la frase de contraseña y ahora tiene 15 claves públicas con la misma dirección que el UID y el comportamiento predeterminado es elegir la primera coincidencia que probablemente no sea correcta). Emacs es un poco mejor allí, pero incluso no puede detectar el gpg.confarchivo que generalmente responde automáticamente a las cosas que desea solicitar.

Ahora, para algo un poco más útil y relacionado tangencialmente, GPGME viene con otra pequeña cosa indocumentada ingeniosa llamada gpgme-tool. Es una interfaz rudimentaria para GPGME que se ejecutará en un zócalo UNIX (y, por supuesto, podría usar ncat o algo para que se asiente en un puerto de red si lo desea). Aunque no está documentado, se explica por sí mismo si lo ejecuta e interactúa con él durante un tiempo y comienza con el comando de ayuda. Alternativamente, esto funciona bastante bien:

echo help | gpgme-tool > gpgme-tool-cheatsheet.txt

Con mucho gusto hará todo lo básico (cifrar, descifrar, firmar, verificar, cambiar frases de contraseña, generar claves, enumerar claves, enumerar claves secretas, buscar claves específicas o seleccionarlas, etc.). Si desea ver el formato XML "oculto" intente esto:

echo "KEYLIST --secret-only" | gpgme-tool > secret-key-list.xml

Eso no exportará las claves secretas, solo enumere y datos sobre ellas. Además, se exportará con algún formato de salida cruft que deberá filtrarse antes de que algo realmente lo reconozca como XML (elimine la línea superior, los dos primeros caracteres de cada línea posterior y el% 0A desde el final de cada línea ) De todos modos, gpgme-tool puede dar una mejor idea de lo que GPGME realmente puede hacer. Los enlaces PyME Python para GPGME, por ejemplo, intenta hacer coincidir automáticamente las funciones GPGME (y generalmente lo logra sin problemas); la lista actual de características en pyme.core.pygpgme llega a 534. Compare eso con la línea de comando y GPG 1.4.20 tiene 322 opciones, mientras que 2.1.11 tiene 347 (omití 2.0, así que no puedo verificar, pero debería estar en algún lugar entre esos dos).

En cuanto a la respuesta anterior que se refiere a la coincidencia de los comandos de teclado, eso debería ser impulsado únicamente por las opciones de configuración y si Mutt "permite" o no el acceso completo a GPG o no. Actualmente estoy usando Mutt con GPGME y las dos funciones mencionadas (mail-key y extract keys) están bien, aunque Mutt tiene problemas para reconocer PGP / contenido en línea si ha asignado o recogido el tipo de texto / contenido sin formato. algun lado. Cuando eso sucede, sí, generalmente es necesario cambiar a Emacs o algo así. Aún así, eso parece ser un problema con la forma en que Mutt verifica si el contenido realmente es solo texto o cómo, de lo contrario, verifica el contenido en formato OpenPGP. Si bien no me gustaría nada mejor que decir que todos deberíamos estar usando PGP / MIME en su lugar (y deberíamos estarlo),

Básicamente, parece que Mutt se basa únicamente en que el mensaje es MIME de varias partes con una o más de esas partes que contienen la clave, las firmas y / o el contenido cifrado para que pueda hacer algo. No solo buscará en cualquier correo electrónico simple buscando contenido que coincida, sino que no es culpa de GPG ni de GPGME. La solución es agregar esas características a Mutt o abrir el mensaje en algo con esa capacidad (por ejemplo, Emacs con EPA / EasyPG, que debería estar habilitado de forma predeterminada en estos días) o canalizar el mensaje a un comando directo (o gpgme-tool si lo desea, pero cuando se canaliza generalmente es más fácil ir directamente a un comando regular).

En cuanto a GPGME, no todos lo tienen disponible porque siempre necesita compilarse desde la misma versión de origen que está instalada en el sistema. Si actualiza GPG y no recompila GPGME para que coincida, es probable que haya problemas. Por otro lado, la instalación de GPG desde la fuente generalmente se recomienda siempre que sea posible, por lo que si va por la ruta GPGME se convierte en una buena práctica simplemente ejecutar esa recompilación al actualizar GPG y todo debería estar bien.

Mientras que las personas que confían únicamente en los paquetes proporcionados por su distribución elegida también estarán sujetas a cualquier cosa que se pueda molestar a los mantenedores de esos paquetes y pueden o no comprender los requisitos de GPG y GPGME trabajando juntos. Por ejemplo, el paquete MacPorts para GPGME está configurado para depender de GPG 2.0.x, que a su vez está en conflicto con GPG 2.1.x, por lo que la mayoría de las personas que instalan 2.1 tampoco pueden instalar GPGME, aunque claramente trabajan juntos. Hacer que GPGME funcione en ese escenario requiere hacer cosas que MacPorts recomienda (compilar cosas fuera del sistema de administración de puertos, pero dentro /opt/local). Algunas distribuciones de Linux pueden tener problemas similares.

Entonces, si solo va a usar PGP / MIME, no debería haber problemas con el uso de la integración GPGME y significará que nunca tendrá que configurar comandos específicos en su .muttrcarchivo. Si trata con PGP / en línea, entonces encontrará problemas, pero no se pueden evitar de ninguna manera con Mutt, por lo que le recomendaría usar GPGME si puede de todos modos.

DESCARGO DE RESPONSABILIDAD: estoy involucrado con el trabajo de desarrollo para hacer una API a la API para que todos los desarrolladores que no sean C puedan usar la cosa después de la revisión. También porté PyME 0.9 de Python 2 a Python 3 (actualmente está en una rama de GPGME y solo la versión de Python 2 está disponible a través de PyPI y pip).

ACTUALIZACIÓN: ese puerto de PyME a Python 3 ahora está en la rama maestra de GPGME y está disponible en PyPI como pyme3.

Ben
fuente
3

Porque algunas funciones no funcionan directamente con la gpgmeinterfaz.

Por ejemplo, las siguientes funciones no funcionan en mi entorno:

^K      extract-keys
<Esc>k  mail-key

cuando todas las funciones básicas de las teclas están funcionando gpgme.

dan
fuente
0

Los chicos de cripto son paranoicos y entienden la línea de comando. La biblioteca es nueva y no ha sido probada, pero ofrece ventajas teóricas. pruébalo, puedes ser nuestro muñeco de prueba.

hildred
fuente
1
Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación.
Anthon
la pregunta era por qué no cómo. Ahora es cierto ¿por qué es más en el ámbito de la psicología ...
Hildred
1
La biblioteca no es nueva, tiene confirmaciones desde el año 2000, probablemente antes.
Ben