加密你的狗 (Mutt 和 GPG)
我今年的专栏一直专注于安全和隐私问题,但我意识到你们中的一些人可能期望从我这里看到不同类型的主题(或者可能只是厌倦了所有这些安全话题)。好吧,你们走运了。我将一石二鸟,描述应用于一款软件的安全,这款软件多年来在我的专栏中得到了很多关注:Mutt。你们这些熟悉我的专栏的人知道我作为 Mutt 用户的悠久历史。对于那些不熟悉它的人,Mutt 是一个命令行邮件客户端(有些人会说是邮件用户代理或 MUA),它高度可配置,并使用我们很多人都知道和喜爱的 vi 键绑定。如果您想要 Mutt 的初步入门,请查看我 2010 年 10 月刊的 “带 Mutt 散步” 一文。过去我写了很多关于 Mutt 的文章,但我最近意识到我从未真正讨论过 Mutt 之前的 PGP/GPG 集成。
Mutt PGP/GPG 设置过程的第一步是配置 Mutt 的 PGP/GPG 设置。实际上,第一步可能是您创建一个 GPG 密钥对(如果您还没有的话),但这将是另一篇文章的主题,而且已经在《Linux Journal》中介绍过了。Mutt 有相当多的 PGP 设置,但在我的经验中,您只需要关心其中的几个。因此,将以下几行添加到您的 ~/.muttrc 文件中,我将详细讨论每个选项
set pgp_replyencrypt # now crypt_replyencrypt
set pgp_replysign # now crypt_replysign
set pgp_replysignencrypted # now crypt_replysignencrypted
set pgp_show_unusable=no
首先要注意的是(也是我在写这篇文章时才意识到的),Mutt 的开发版本已经更改了其中一些设置的名称。所有加密设置过去都以 pgp_
开头,但现在其中一些设置已被抽象出来,大概是为了与其他 PGP 以外的东西一起使用,并以 crypt_
开头。根据我的经验,旧的设置名称仍然有效,并且由于它具有最广泛的兼容性,我使用这些名称来引用这些设置。
前三个设置启用了我认为是加密电子邮件的合理默认设置。虽然 Mutt 有一系列设置,可以让您自动签名和加密您发送的每条消息(如果您好奇,它们都以 pgp_auto
或 crypt_auto
开头),但这对于大多数人来说可能不实用。相反,这些 pgp_reply
设置配置了当您回复已签名或加密的消息时如何表现。
pgp_replyencrypt
设置将自动加密对加密消息的回复,pgp_replysign
将自动签名已签名的消息。如果消息已签名和加密,则设置 pgp_replysignencrypted
负责自动加密和签名回复。最后一个设置 pgp_show_unusable=no
将隐藏您的密钥链中任何已过期、已撤销或以其他方式无法使用的 PGP 密钥。
一旦您的 PGP 设置到位,Mutt 应该会自动以常识性的方式签名或加密对加密或签名消息的回复。当然,这对于您想要开始的对话没有帮助,或者如果您想加密或签名对未加密消息的回复。
Mutt 可以轻松更改您发送的任何消息的安全状态。在您撰写并保存消息后,您将进入一个屏幕,该屏幕显示消息的收件人、抄送、发件人和主题。这是您添加任何附件并在其中按 y 键发送消息的同一屏幕。此屏幕上的“安全”字段显示消息的当前 PGP 设置。如果您尚未为消息启用签名或加密,则此字段将设置为“无”。否则,它可能会设置为 Sign
或 Encrypt
或 Sign, Encrypt
。要更改您的安全设置,请按 p,然后从加密(e 键)、签名(s 键)、另存为(a 键)、同时签名和加密(b 键)或清除(c 键)中选择,这将禁用任何安全设置。如果您选择加密消息,当您发送消息时,Mutt 将向您显示收件人加密密钥供您选择。
当然,您可以根据每条消息手动启用 PGP 签名或加密,但您可能有一个朋友或同事,您知道他们使用电子邮件加密,并且您始终希望签名或加密发送给他们的消息。在这种情况下,Mutt 提供了钩子,允许您配置何时自动启用安全设置。
假设我想签名我发送给 linuxjournal.com 的所有消息,但我特别想签名和加密发送给 editor@linuxjournal.com 的消息。我会将以下设置添加到我的 ~/.muttrc
send-hook . 'unset pgp_autosign; unset pgp_autoencrypt'
send-hook '~t @linuxjournal.com' 'set pgp_autosign'
send-hook '~t editor@linuxjournal.com' 'set pgp_autosign;
↪set pgp_autoencrypt'
send-hook
设置允许您配置在您发送消息之前应用的 Mutt 设置。带有 Mutt 钩子的语法是 send-hook
,后跟一个模式,然后后跟一个或多个设置。初始行
send-hook . 'unset pgp_autosign; unset pgp_autoencrypt'
设置为匹配所有消息(. 匹配任何内容)。然后它取消设置任何自动签名或加密。这充当您的默认设置,并且重要的是它出现在任何其他与 PGP 相关的 send-hook 行之前。此默认设置存在是为了如果您触发任何其他 send-hook 并在发送到特定地址时启用自动签名或加密,则此钩子将在您向其他人发送消息之前取消设置它。
下一行将自动签名发送到 linuxjournal.com 的任何消息
send-hook '~t @linuxjournal.com' 'set pgp_autosign'
钩子模式中的 ~t
匹配“收件人”标头,但 Mutt 文档详细说明了您可以使用的许多其他标志,以匹配“发件人”、“密件抄送”、电子邮件正文或消息的其他部分。最后一行将自动为发送到 editor@linuxjournal.com 的消息启用签名和加密
send-hook '~t editor@linuxjournal.com' 'set pgp_autosign;
↪set pgp_autoencrypt'
通过这些设置,您应该能够感到安全,因为您不会犯错并意外地以纯文本回复某人的加密消息。此外,您可以确保始终签名发送给您使用 PGP 的朋友的消息。