如何在Linux上使用GPG对文件进行加密和解密

使用Linux gpg命令保护您的隐私。使用世界一流的加密来保护您的机密。我们将向您展示如何使用gpg处理密钥、加密文件和解密文件。

GnuPrivacy Guard(GPG)允许您安全地加密文件,以便只有目标收件人可以解密它们。具体地说,GPG符合最新的OpenPGP标准。它是以一个名为Pretty Good Privacy(PGP)的程序为模型的。PGP是由菲尔·齐默尔曼于1991年撰写的。

GPG依赖于每人两个加密密钥的想法。每个人都有一个私钥和一个公钥。公钥可以解密使用私钥加密的内容。

要安全地发送文件,您需要使用您的私钥和收件人的公钥对其进行加密。要解密文件,他们需要他们的私钥和您的公钥。

您将从中看到,公钥必须是共享的。您需要拥有接收方的公钥才能加密文件,而接收方需要您的公钥对其进行解密。将您的公钥公开是没有危险的。事实上,正如我们将看到的,有公钥服务器就是为了这个目的。私钥必须保密。如果您的公钥在公有域中,则您的私钥必须保密和安全。

与使用GPG相比,设置GPG涉及的步骤更多。谢天谢地,您通常只需要设置一次。

生成您的密钥

gpg命令安装在检查过的所有Linux发行版上,包括Ubuntu、Fedora和Manjaro。

您不必在电子邮件中使用GPG。您可以加密文件并使其可供下载,或将其物理传递给收件人。但是,您确实需要将电子邮件地址与您生成的密钥相关联,因此请选择要使用的电子邮件地址。

以下是生成密钥的命令。Full-Generate-Key选项在终端窗口内的交互式会话中生成密钥。系统还会提示您输入密码。一定要记住密码是什么。三四个简单的单词加上标点符号是密码和口令的良好而健壮的模型。

gpg --full-generate-key

系统将要求您从菜单中选择加密类型。除非您有充分的理由不这样做,否则请键入1并按Enter键。

您必须选择加密密钥的位长。按Enter键接受默认值。

您需要指定密钥应该持续多长时间。如果您正在测试系统,请输入一个较短的持续时间,如5天,表示5天。如果您要保留此密钥,请输入一个较长的期限,如1年。密钥将持续12个月,因此需要在一年后更新。用Y确认您的选择。

您必须输入您的姓名和电子邮件地址。如果愿意,您可以添加评论。

系统将提示您输入密码。无论何时使用密钥,您都将需要密码,因此请确保您知道它是什么。

输入密码后,单击确定按钮。您将在使用gpg时看到此窗口,因此请务必记住您的密码短语。

将生成密钥,并且您将返回到命令提示符。

生成吊销证书

如果您的私钥为其他人所知,您将需要取消旧密钥与您的身份的关联,以便您可以生成新密钥。为此,您需要一个吊销证书。我们现在就这么做,然后把它存放在安全的地方。

--output选项后面必须跟您要创建的证书的文件名。gen-revoke选项使gpg生成吊销证书。您必须提供生成密钥时使用的电子邮件地址。

gpg --output ~/revocation.crt --gen-revoke dave-geek@protonmail.com

系统将要求您确认是否要生成证书。按Y并按Enter。系统将询问您生成证书的原因。因为我们提前做了这件事,所以我们不能确定。按1作为似是而非的猜测,然后按Enter键。

如果愿意,您可以输入描述。按两次Enter键结束描述。

系统将要求您确认设置,然后按Y并按Enter。

将生成证书。您将看到一条消息,强调保护此证书安全的必要性。

上面提到一个叫马洛里的人。长期以来,密码学讨论一直使用鲍勃和爱丽丝作为交流的两个人,还有其他的配角。伊芙是个窃听者,马洛里是个恶意攻击者。我们需要知道的就是我们必须保证证书的安全。

至少,让我们从证书中删除除我们之外的所有权限。

chmod 600 ~/revocation.crt

让我们检查一下ls,看看现在的权限是什么:

ls -l

太好了。除了文件所有者我们之外,任何人都不能对证书执行任何操作。

导入其他人的公钥

要加密另一个人可以解密的消息,我们必须拥有他们的公钥。

如果在文件中向您提供了它们的密钥,您可以使用以下命令将其导入。在本例中,密钥文件名为“Mary-geek.key”。

gpg --import mary-geek.key

将导入密钥,并向您显示与该密钥相关联的名称和电子邮件地址。很明显,这应该和你收到的人相符。

您需要密钥的人也有可能已将其密钥上载到公钥服务器。这些服务器存储来自世界各地的人们的公钥。密钥服务器定期彼此同步,以便密钥普遍可用。

麻省理工学院公钥服务器是一种流行的密钥服务器,并且定期同步,因此在那里的搜索应该是成功的。如果有人最近才上传密钥,可能需要几天时间才会出现。

--keyserver选项后面必须跟您要搜索的密钥服务器的名称。--search-key选项后面必须跟您要搜索的人员的姓名或他们的电子邮件地址。*我们将使用电子邮件地址:

gpg --keyserver pgp.mit.edu --search-keys mary-geek@protonmail.com

系统会为您列出匹配项并进行编号。要导入一个,请键入号码,然后按Enter键。在本例中,只有一个匹配项,因此我们键入1并按Enter键。

将导入密钥,并向我们显示与该密钥相关联的名称和电子邮件地址。

验证和签名密钥

如果您的公钥文件是由您认识的人递给您的,您可以放心地说它属于该人。如果您是从公钥服务器下载的,您可能会觉得需要验证密钥是否属于预期的人。

指纹选项使gpg创建一个由10组四个十六进制字符组成的短序列。你可以让那个人把他们钥匙的指纹发给你。

然后,您可以使用--指纹选项生成相同的十六进制字符指纹序列,并对它们进行比较。如果他们匹配,你就知道钥匙属于那个人。

gpg --fingerprint mary-geek@protonmail.com

生成指纹。

当您确信密钥是真实的并且归应该与其关联的人所有时,您可以为他们的密钥签名。

如果您不这样做,您仍然可以使用它来加密和解密来自或发送给此人的消息。但GPG每次都会询问您是否希望继续,因为密钥未签名。我们将使用名称恰当的--sign-key选项并提供此人的电子邮件地址,以便gpg知道要签署哪个密钥。

gpg --sign-key mary-geek@protonmail.com

您将看到有关密钥和人员的信息,并将被要求验证您是否真的想要签署密钥。按Y键并按Enter键以签署密钥。

如何共享您的公钥

要将您的密钥作为文件共享,我们需要将其从gpg本地密钥存储导出。为此,我们将使用--export选项,后面必须跟您用来生成密钥的电子邮件地址。--output选项后面必须跟您希望将密钥导出到的文件的名称。armor选项告诉gpg生成ASCII ARM输出,而不是二进制文件。

gpg --output ~/dave-geek.key --armor --export dave-geek@protonmail.com

我们可以用较少的资源查看密钥文件内部。

less dave-geek.key

钥匙在它所有的荣耀中展现出来:

您还可以在公钥服务器上共享您的公钥。send-key选项将密钥发送到keyserver。--keyserver选项后面必须跟有公钥服务器的网址。要标识要发送的密钥,必须在命令行上提供密钥的指纹。注意四个字符的集合之间没有空格。

(您可以使用--指纹选项查看密钥的指纹。)

gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4

您将得到密钥已发送的确认信息。

正在加密文件

我们终于准备好加密文件并将其发送给Mary。该文件名为Raven.txt。

ENCRYPT选项告诉gpg加密文件,--sign选项告诉gpg使用您的详细信息对文件签名。armor选项告诉gpg创建一个ASCII文件。r(收件人)选项后面必须跟您要向其发送文件的人的电子邮件地址。

gpg --encrypt --sign --armor -r mary-geek@protonmail.com

创建的文件与原始文件同名,但在文件名后附加了“.asc”。“让我们来看看它的内部。

less Raven.txt.asc

该文件完全无法辨认,只有拥有您的公钥和Mary的私钥的人才能解密。唯一同时拥有这两项的人应该是玛丽。

我们现在可以将文件发送给Mary,确信没有其他人可以解密它。

正在解密文件

玛丽已经回信了。它位于一个名为coded.asc的加密文件中。我们可以很容易地使用--deccrypt选项对其进行解密。我们将把输出重定向到另一个名为Pla.txt的文件中。

请注意,我们不必告诉gpg该文件来自谁。它可以从文件的加密内容中找出这一点。

gpg --decrypt coded.asc > plain.txt

我们来看一下Pla.txt文件:

less plain.txt

该文件已为我们成功解密。

刷新密钥

您可以定期要求gpg对照公钥服务器检查它拥有的密钥,并刷新任何已更改的密钥。您可以每隔几个月执行一次此操作,或者在收到新联系人的密钥时执行此操作。

REFRESH-KEYS选项使gpg执行检查。--keyserver选项后面必须跟您选择的密钥服务器。一旦在公钥服务器之间同步了密钥,您选择哪一个就无关紧要了。

gpg --keyserver pgp.mit.edu --refresh-keys

GPG的响应是列出它检查的密钥,并让您知道是否有更改和更新的密钥。

隐私是一个热门话题

这些天来,隐私从来都不会远离新闻。无论您出于什么原因想要保护您的信息安全和隐私,gpg都提供了一种简单的方法来对您的文件和通信进行难以置信的高度加密。

还有其他使用gpg的方法。你可以得到一个叫Enigmail的雷鸟插件。它直接连接到您的GPG配置中,允许您加密来自Thunderbird内部的电子邮件消息。

相关文章