mutt: usi gpgme o gpg classico?


13

Il wiki di Mutt sull'integrazione di GnuPG e molti altri luoghi (come il default su Debian) usano il modo classico di connettere mutt a gnupg. Cioè, si configura un gruppo di comandi per chiamare gpgdirettamente. D'altra parte, c'è una libreria chiamata gpgme, che cerca di standardizzare esattamente questo. La ricerca sul web di "mutt gpgme" non mi ha dato risultati veramente utili.

Quali sono i pro ei contro di utilizzare set crypt_use_gpgme=yesin .muttrc? Perché è così raramente usato?

Risposte:


8

Molte persone non capiscono davvero GPGME e probabilmente non aiuta che la documentazione esistente sia fondamentalmente il commento al codice scritto in quel momento. Tuttavia, consentirà l'accesso programmatico completo o quasi completo all'intera suite GNU Privacy Guard e dovrebbe consentire anche l'accesso a cose come libassuan, gpg-agent e vari altri componenti. Ecco perché di default include anche l'implementazione S / MIME che quasi nessuno al di fuori di alcune aziende che hanno esclamato a gran voce alla fine degli anni '90 usano.

Attualmente GPGME include qualcosa come 500 o più funzioni separate e copre praticamente qualsiasi cosa tu faccia con GPG dalla riga di comando. Contiene, tuttavia, anche alcune reliquie di precedenti scelte progettuali che sono state successivamente determinate come non nella giusta direzione. Ad esempio, questa è un'API con grossi pezzi di GTK 2. Ovviamente, questo deve andare (e lo sarà quando il tempo lo permetterà). Un altro problema che ha in questi giorni, forse il più grande ostacolo all'adozione è che quando qualcuno dice "API" la maggior parte dei programmatori non pensa immediatamente ai file di intestazione C da compilare con il proprio codice per accedere alla cosa; ammettiamolo, al giorno d'oggi la maggior parte delle persone sta pensando a qualcosa di RESTful o almeno facciamolo interagire con i dati in un formato JSON. GPGME è tanto lontano quanto quello ' s possibile ottenere. Si noti che mentre dovrebbe essere possibile farlo funzionare bene con JSON, non può mai essere RESTful perché le chiavi di modifica non possono esserlo. Inoltre, la gestione delle chiavi via Web richiede solo problemi.

Ci sono anche molte caratteristiche e aspetti non documentati della cosa in modo tale che anche le persone che lavorano con il software sin dal suo inizio possono ancora essere sorprese da alcune cose. Come, diciamo, il formato XML per i dati del keyring che avevano tutto tranne uno schema formale (fino a quando non è stato generato un paio di mesi fa).

D'altra parte, per tutte le cose buone che Mutt fa, fa anche alcune cose piuttosto scioccanti. Ad esempio, indipendentemente dal fatto che GPGME sia utilizzato o meno, non dovrebbe esserci alcun motivo per cui Mutt memorizzi nella cache le passphrase; in entrambi gli scenari dovrebbe essere consegnato a GPG (con o senza agente gpg). Allo stesso modo, dovrebbe onorare i parametri di configurazione nel ~/.gnupg/gpg.conffile (e altri in quella directory). Certo, impostando un ID chiave alternativo per account diversi per cambiare il modo in cui vengono chiamati i comandi o anche essere in grado di specificare file di configurazione alternativi o intere directory (ad es.gpg --homedir ~/.gnupg-work/gpg.conf). Allo stato attuale, tuttavia, Mutt perde tempo nel tentativo di risolvere i problemi già risolti dal programma con cui interagisce, come la passphrase o la gestione delle chiavi, ma non consente l'accesso alle normali funzionalità di GPG, molte delle quali sono fantastiche per l'email come usare le righe di gruppo per più destinatari o per sovrascrivere la selezione delle chiavi per determinati destinatari (perché c'è sempre quel tipo che continua a perdere la sua chiave segreta o dimentica la passphrase e ora hai 15 chiavi pubbliche con lo stesso indirizzo dell'UID e il comportamento predefinito è scegliere la prima corrispondenza che molto probabilmente non è corretta). Emacs è un po 'meglio lì, ma anche non riesce a raccogliere il gpg.conffile che di solito risponde automaticamente alle cose che vuole richiedere.

Ora, per qualcosa di un po 'più utile e tangenzialmente correlato, GPGME viene fornito con un'altra piccola cosa priva di documenti chiamata gpgme-tool. È un'interfaccia rudimentale per GPGME che verrà eseguita su un socket UNIX (e ovviamente potresti usare ncat o qualcosa del genere per farlo sedere su una porta di rete se lo desideri). Sebbene non sia documentato, è abbastanza autoesplicativo se lo esegui e interagisci con esso per un po 'di tempo e inizia con il comando di aiuto. In alternativa, funziona abbastanza bene:

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

Farà felicemente tutte le basi (crittografare, decrittografare, firmare, verificare, cambiare passphrase, generare chiavi, elencare chiavi, elencare chiavi segrete, cercare chiavi specifiche o selezionarle, ecc.). Se vuoi vedere il formato XML "nascosto" prova questo:

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

Ciò non esporterà le chiavi segrete, basta elencarle e dati su di esse. Inoltre, verrà esportato con alcuni cruft in formato di output che dovranno essere filtrati prima che qualcosa lo riconosca davvero come XML (elimina la riga superiore, i primi due caratteri di ogni riga successiva e% 0A dalla fine di ogni riga ). Comunque, gpgme-tool può dare un'idea migliore di ciò che GPGME può davvero fare. I binding PyME Python per GPGME, ad esempio, tentano di abbinare automaticamente le funzioni GPGME (e di solito lo ottengono senza problemi); l'attuale elenco di funzionalità in pyme.core.pygpgme arriva a 534. Confronta quello con la riga di comando e GPG 1.4.20 ha 322 opzioni, mentre 2.1.11 ha 347 (ho saltato 2.0 quindi non posso controllare, ma dovrebbe essere da qualche parte tra quei due).

Per quanto riguarda la risposta precedente riferita alla corrispondenza dei comandi chiave, questo dovrebbe essere guidato esclusivamente dalle opzioni di configurazione e se Mutt "permetta o meno" pieno accesso a GPG o meno. Attualmente sto usando Mutt con GPGME e le due funzioni menzionate (chiave di posta e chiavi di estrazione) vanno bene, anche se Mutt ha difficoltà a riconoscere il contenuto PGP / in-line se ha assegnato o prelevato il tipo di testo / contenuto normale da da qualche parte. Quando ciò accade, sì, di solito è necessario passare a Emacs o qualcosa del genere. Tuttavia, questo sembra essere un problema con il modo in cui Mutt controlla se il contenuto è davvero solo testo o come controlla il contenuto in formato OpenPGP. Anche se non mi piacerebbe niente di meglio che dire semplicemente che dovremmo invece usare PGP / MIME (e dovremmo essere),

Fondamentalmente sembra che Mutt faccia affidamento esclusivamente sul fatto che il messaggio è MIME multiparte con una o più di quelle parti che contengono la chiave, le firme e / o il contenuto crittografato per fare qualcosa. Non si limiterà a cercare qualsiasi e-mail semplice alla ricerca di contenuti corrispondenti, ma non è né colpa di GPG né GPGME. La soluzione è quella di aggiungere quelle funzionalità a Mutt o aprire il messaggio in qualcosa con quella capacità (es. Emacs con EPA / EasyPG, che dovrebbe essere abilitato di default in questi giorni) o reindirizzare il messaggio a un comando diretto (o gpgme-tool se lo desideri, ma quando esegui il piping è generalmente più semplice passare direttamente a un comando regolare).

Per quanto riguarda GPGME, non tutti lo hanno disponibile perché deve sempre essere compilato dalla stessa versione sorgente installata sul sistema. Se aggiorni GPG e non ricompili GPGME affinché corrisponda, probabilmente ci saranno problemi. D'altra parte, l'installazione di GPG dal sorgente è di solito consigliata ove possibile, quindi se si procede sulla rotta GPGME diventa buona pratica semplicemente eseguire quella ricompilazione durante l'aggiornamento di GPG e dovrebbe andare tutto bene.

Considerando che le persone che fanno affidamento esclusivamente sui pacchetti forniti dalla loro distribuzione prescelta saranno anche soggette a qualsiasi tipo di manutenzione che i manutentori di tali pacchetti possono essere disturbati e possono o meno comprendere sempre i requisiti di GPG e GPGME che lavorano insieme. Ad esempio, il pacchetto MacPorts per GPGME dipende da GPG 2.0.x, che a sua volta è in conflitto con GPG 2.1.x, quindi la maggior parte delle persone che installano 2.1 non possono installare GPGME, anche se chiaramente funzionano insieme. Per far funzionare GPGME in quello scenario è necessario fare cose che MacPorts sconsiglia (compilare cose al di fuori del sistema di gestione delle porte, ma all'interno /opt/local). Alcune distribuzioni Linux potrebbero avere problemi simili.

Quindi, se utilizzerai solo PGP / MIME, non dovresti avere problemi con l'integrazione GPGME e ciò significa che non dovrai mai configurare comandi specifici nel tuo .muttrcfile. Se hai a che fare con PGP / in-line, allora incontrerai dei problemi, ma non possono essere evitati in entrambi i casi con Mutt, quindi ti consiglio di usare GPGME se puoi comunque.

DISCLAIMER: sono coinvolto nel lavoro di sviluppo per creare un'API per l'API affinché tutti gli sviluppatori non C siano in grado di utilizzare la cosa dopo la revisione. Ho anche portato PyME 0.9 da Python 2 a Python 3 (è attualmente in un ramo di GPGME e solo la versione di Python 2 è disponibile tramite PyPI e pip).

AGGIORNAMENTO: quella porta da PyME a Python 3 è ora nel ramo master di GPGME ed è disponibile su PyPI come pyme3.


3

Perché alcune funzioni non funzionano direttamente con l' gpgmeinterfaccia.

Ad esempio, le seguenti funzioni non funzionano nel mio ambiente:

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

quando funzionano tutte le funzioni chiave di base gpgme.


0

i criptovalute sono paranoici e comprendono la riga di comando. la biblioteca è nuova e non testata ma offre vantaggi teorici. provalo, puoi essere il nostro manichino di prova.


1
Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti a un autore, lascia un commento sotto il suo post.
Anthon,

la domanda era perché non come. ora, certamente, perché c'è di più nel regno della psicologia ...
hildred

1
La biblioteca non è quasi nuova, ha commesso fino al 2000, probabilmente prima.
Ben
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.