web-dev-qa-db-ja.com

gpgコマンドラインを使用して、クリアテキストのメールに添付されたGPG署名を確認するにはどうすればよいですか?

Signature.ascが添付されたメールを平文で受け取りました。メールの元のソースを見ると、Apple Mail + GPGMailで送信されました。Thunderbird+ Enigmailでメッセージを読むと、開くときにEnigmailの詳細にGOOD signatureとして正常に表示されますメッセージ。テキストはASCII装甲ではありません。

ただし、gpgを使用してメッセージを確認しようとすると、BAD signatureになります。添付された(切り離された)署名ファイルを使用して、次の入力ファイルを試したが失敗した。

  • すべてのヘッダーを含む完全な未加工の電子メール(もちろん、送信者がメッセージの作成と署名を完了した後にメールサーバーがヘッダーを追加するため、これは機能しません)
  • 電子メールヘッダーのない生の電子メールファイル(電子メールはFrom:ヘッダーで始まります)
  • munpacked mimeパーツを個別に(メッセージ入力としてのasciiパーツとhtmlパーツ)
8
yincrash

これに出くわした email はすべてを明確にしました(そして RFC3156 をちらりと見ただけでなく)。

電子メールのタイプはmultipart/signedで、

Multipart/signed bodyは、正確に2つの部分で構成する必要があります。最初の部分には、MIME正規形式の署名付きデータが含まれています。これには、データを説明する適切なコンテンツヘッダーのセットが含まれます。

2番目の本文には、OpenPGPデジタル署名を含める必要があります。 「application/pgp-signature」のコンテンツタイプでラベル付けする必要があります。

署名は最初の部分に署名します。最初の部分は、実際にはテキスト部分とHTML部分のマルチパートでした。私が調べたすべての電子メールクライアントは、この階層を明確にして3つの部分(テキスト、html、署名)にフラット化しませんでした。

最初のマルチパートの未加工のMIMEテキストを使用して署名を検証することに成功しました。

6
yincrash