mutt:gpgmeまたは従来のgpgを使用しますか?


13

GnuPG統合およびその他の多くの場所(Debianのデフォルトなど)に関するMuttのwikiは、 muttをgnupgに接続する古典的な方法を使用しています。つまり、gpg直接呼び出す一連のコマンドを構成します。一方、と呼ばれるライブラリがありgpgme、それを正確に標準化しようとします。「mutt gpgme」でウェブを検索しても、本当に役立つ結果は得られませんでした。

使用しての長所と短所は何ですかset crypt_use_gpgme=yesでは.muttrc?なぜそれほど使用されないのですか?

回答:


8

多くの人々は実際にはGPGMEを理解しておらず、おそらく存在するドキュメントが基本的に当時書かれたコードの解説であることを助けないでしょう。ただし、GNU Privacy Guardスイート全体への完全またはほぼ完全なプログラムによるアクセスを許可し、libassuan、gpg-agent、およびその他のさまざまなコンポーネントへのアクセスも可能にすることになっています。これが、デフォルトでS / MIME実装も含む理由です。これは、90年代後半に大声で叫んだいくつかの企業以外ではほとんど誰も使用していません。

現在、GPGMEには500個以上の個別の関数などが含まれており、コマンドラインでGPGを使用して行うことはほぼすべて網羅しています。ただし、これには、正しい方向ではないと判断された以前の設計選択のいくつかの遺物も含まれています。たとえば、これはGTK 2の大きなチャンクを含むAPIです。明らかに、これを実行する必要があります(時間が許す場合は実行します)。最近のもう一つの問題は、おそらく採用の最大のハードルは、誰かが「API」と言ったとき、ほとんどのコーダーは、物にアクセスするために自分のコードでコンパイルするCヘッダーファイルをすぐに考えないことです。それに直面してみましょう、最近ではほとんどの人がRESTfulな何かを考えているか、少なくともJSON形式のデータとやり取りできるようになっています。GPGMEはそれとほぼ同じくらいです 取得可能。JSONでうまく再生できるようにする必要がありますが、キーを編集することはできないため、RESTfulになることはありません。さらに、Web経由でキーを管理することは、単にトラブルを求めているだけです。

また、文書化されていない機能や側面も多くあり、ソフトウェアの開発当初から作業をしている人でさえ、いくつかのことに驚かされることがあります。たとえば、正式なスキーマ以外のすべてを備えたキーリングデータのXML形式(数か月前に生成されるまで)。

一方、Muttが行うすべての優れた機能については、かなり衝撃的な機能も実行します。たとえば、GPGMEを使用するかどうかにかかわらず、Muttがパスフレーズをキャッシュする理由はまったくありません。いずれのシナリオでも、GPG(gpg-agentの有無にかかわらず)に引き渡される必要があります。同様に、~/.gnupg/gpg.confファイル(およびそのディレクトリ内のその他)の構成パラメータを尊重する必要があります。確かに、異なるアカウントに代替キーIDを設定して、コマンドの呼び出し方法を変更したり、代替構成ファイルやディレクトリ全体を指定することもできます(例:gpg --homedir ~/.gnupg-work/gpg.conf)。しかし、現状では、Muttはパスフレーズやキー管理など、対話するプログラムによって既に解決されている問題を解決しようとして時間を無駄にしますが、GPGの通常の機能へのアクセスは許可しません。複数の受信者にグループ行を使用したり、特定の受信者のキー選択をオーバーライドしたりする(シークレットキーを失い続けるか、パスフレーズを忘れる人が常にいるため、UIDと同じアドレスの15の公開キーがあり、デフォルトの動作では、最初の一致が選択されますが、これはおそらく正しくありません。ここではEmacsの方が少し優れていますが、gpg.confファイルを取得できず、通常はプロンプトを表示したい内容に自動的に応答します。

さて、もう少し便利で接線的に関連するもののために、GPGMEにはgpgme-toolと呼ばれる気の利いた小さな文書化されていないものが付属しています。これは、UNIXソケット上で実行されるGPGMEへの初歩的なインターフェイスです(もちろん、必要に応じてncatなどを使用してネットワークポートに配置することもできます)。文書化されていませんが、それを実行して少しの間対話し、helpコマンドから始めると、かなり自明です。あるいは、これはかなりうまく機能します:

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

すべての基本(暗号化、復号化、署名、検証、パスフレーズの変更、キーの生成、キーのリスト、シークレットキーのリスト、特定のキーの検索または選択など)を喜んで行います。「隠された」XML形式を表示する場合は、これを試してください。

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

それは秘密鍵をエクスポートせず、それらとそれらに関するデータをリストするだけです。また、何かが実際にXMLとして認識される前にフィルタリングする必要がある出力形式の残骸とともにエクスポートします(最上行、各後続行の最初の2文字、および各行の終わりから%0Aを削除します)。とにかく、gpgme-toolを使用すると、GPGMEで実際に何ができるかをより正確に把握できます。たとえば、GPGMEのPyME Pythonバインディングは、GPGME関数を自動的に一致させようとします(通常、問題なくそれを実現します)。pyme.core.pygpgmeの機能の現在のリストは534です。コマンドラインと比較すると、GPG 1.4.20には322のオプションがあり、2.1.11には347があります(2.0をスキップしたので確認できませんが、チェックする必要があります)これらの2つの間のどこかにあります)。

キーコマンドの一致に関する以前の回答については、構成オプションと、MuttがGPGへのフルアクセスを「許可」するかどうかによってのみ決定される必要があります。現在、MuttをGPGMEで使用しており、前述の2つの機能(メールキーと抽出キー)は問題ありませんが、Muttがtext / plainコンテンツタイプを割り当てまたは選択した場合、PGP /インラインコンテンツの認識に問題がありますどこかに。そうなったら、はい、通常Emacsなどに切り替える必要があります。それでも、Muttがコンテンツが実際に単なるテキストであるかどうか、またはOpenPGP形式のコンテンツをチェックする方法に関する問題のようです。私たちは皆、代わりにPGP / MIMEを使用するべきだと言う(そしてそうするべきである)と言うよりも、何よりも良いことを望みませんが、

基本的に、Muttは、マルチパートMIMEであるメッセージのみに依存しており、1つ以上の部分にキー、署名、および/または暗号化されたコンテンツが含まれ、何らかの処理を行うように見えます。一致するコンテンツを探すために単純なメールを検索するだけではありませんが、それはGPGにもGPGMEのせいでもありません。解決策は、これらの機能をMuttに追加するか、その機能を備えたメッセージ(最近ではデフォルトで有効になっているEPA / EasyPGを使用したEmacsなど)を開くか、直接コマンド(またはgpgme-tool必要に応じて、ただし、パイプを使用する場合は、通常、通常のコマンドに直接進む方が簡単です。

GPGMEに関しては、システムにインストールされているのと同じソースバージョンから常にコンパイルする必要があるため、誰もが利用できるわけではありません。GPGをアップグレードし、GPGMEを再コンパイルしないと一致しない場合、問題が発生する可能性があります。一方、可能な場合は通常、ソースからGPGをインストールすることをお勧めします。GPGMEルートを使用する場合は、GPGを更新するときにその再コンパイルを実行することをお勧めします。

一方、選択したディストリビューションによって提供されるパッケージのみに依存する人々は、それらのパッケージのメンテナーがメンテナンスを煩わされる可能性があり、GPGとGPGMEが一緒に動作する要件を常に理解している場合とそうでない場合があります。たとえば、GPGMEのMacPortsパッケージはGPG 2.0.xに依存するように設定されており、GPG 2.0.xはGPG 2.1.xと競合するように設定されているため、2.1をインストールするほとんどの人は、明らかに連携してもGPGMEをインストールできません。GPGMEをそのシナリオで機能させるには、MacPortsが推奨することを行う必要があります(ポート管理システムの外部ではなく、内部でコンパイルする/opt/local)。一部のLinuxディストリビューションには、同様の問題がある場合があります。

したがって、PGP / MIMEのみを使用する場合は、GPGME統合を使用しても問題はありません。つまり、.muttrcファイルに特定のコマンドを設定する必要はありません。PGP /インラインを扱う場合は問題が発生しますが、Muttで回避することはできないため、とにかくGPGMEを使用することをお勧めします。

免責事項:私は、すべての非C開発者がオーバーホール後のものを使用できるようにAPIを作成するための開発作業に関与しています。また、PyME 0.9をPython 2からPython 3に移植しました(現在はGPGMEのブランチにあり、PyPIとpipで利用できるのはPython 2バージョンのみです)。

更新:PyMEのPython 3へのポートはGPGMEのmasterブランチにあり、PyPIでpyme3として利用できます。


3

一部の機能はgpgmeインターフェイスで直接動作しないためです。

たとえば、次の機能は私の環境では機能しません。

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

すべての基本的なキー機能が動作しているときgpgme


0

暗号人は妄想的であり、コマンドラインを理解しています。ライブラリは新しく、テストされていませんが、理論上の利点があります。試してみてください、あなたは私たちのテストダミーになることができます。


1
これは質問に対する答えを提供しません。著者に批判や説明を求めるには、投稿の下にコメントを残してください。
アントン

問題は、なぜそうではないのかということでした。確かに、なぜ心理学の領域に
もっといるのか...-

1
ライブラリはどこにも新しいものではなく、おそらく以前の2000年までコミットされています。
ベン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.