如何使用GPG在Ubuntu 12.04 VPS上加密和签名消息

GPG是一种加密系统,旨在为您提供加密消息和验证接收到的消息的身份的能力。在本指南中,我们将讨论如何创建GPG密钥并使用它们来加密消息。

介绍


GPG或GNU Privacy Guard是一种公共密钥加密实现。 这允许在各方之间的信息的安全传输,并且可以用于验证消息的来源是真实的。

在本指南中,我们将讨论GPG如何工作以及如何实现它。 我们将使用Ubuntu 12.04 VPS进行此演示,但这些工具可在任何现代Linux发行版上使用。

公钥加密的工作原理


许多用户面临的问题是如何安全地通信并验证他们正在谈话的方的身份。 试图回答这个问题的许多方案至少在某些时候需要通过不安全的介质传送密码或其他识别凭证。

确保只有目标方可以阅读


为了解决这个问题,GPG依赖于称为公钥加密的安全概念。 这个想法是,您可以将传输的加密和解密阶段分成两个独立的部分。 这样,您可以自由分发加密部分,只要您保护解密部分。

这将允许任何人创建和加密的单向消息传输,但是只能由指定的用户(具有专用解密密钥的用户)解密。 如果双方创建公钥/私钥对并且彼此给予他们的公共加密密钥,则它们都可以彼此加密消息。

因此在这种情况下,每一方都有自己的私钥和另一用户的公钥。

验证发件人的身份


这个系统的另一个好处是消息的发送者可以用他们的私钥“签名”消息。 接收器具有的公钥可用于验证签名实际上是由指示用户发送的。

这可以防止第三方“欺骗”某人的身份。 它还有助于确保消息完全传输,没有损坏或文件损坏。

设置GPG密钥


默认情况下,应在Ubuntu 12.04上安装GPG。 如果不是,您可以安装:

sudo apt-get install gnupg

要开始使用GPG加密通信,您需要创建密钥对。 您可以通过发出以下命令来执行此操作:

gpg --gen-key

这将带你通过几个问题,将配置你的钥匙。

  • 请选择您想要什么样的关键:(1)RSA和RSA(默认)

  • 你想要什么密钥大小?4096

  • 关键是有效的?0

  • 这是正确的?ÿ

  • 真名: 在这里您的真实姓名

  • 电子邮件地址: your_email@address.com

  • 评论: 可选的注释,将在您的签名可见

  • 变化(N)AME,(C)omment,(E)或电子邮件(O)凯/(Q)UIT 2 O

  • 输入密码: 在这里输入一个安全密码(上下限的情况下,数字,符号)

在这一点上,它将需要使用熵生成密钥。 这基本上是描述系统中存在的不可预测性的量的术语。 GPG使用这个熵来生成随机密钥集。

最好打开一个新的终端和ssh到VPS,而这运行。 安装一些软件,做一些工作,只是使用机器尽可能让它生成所需的熵。

此过程可能需要很长时间,这取决于您可以如何激活您的系统。 这里有关于物品如何与haveged产生附加熵 ,这可能是使用的。

创建撤销证书


您需要有一种方法使密钥对无效,以防万一有安全漏洞,或者您丢失了您的密钥。 有一个简单的方法这样做与GPG软件。

这应该做,一旦你制作的密钥对,而不是当你需要它。 此撤销密钥必须提前生成,并保存在安全,单独的位置,以防您的计算机受损或无法操作。 类型:

gpg --gen-revoke your_email@address.com

系统会询问您被撤销的原因。 您可以选择任何可用的选项,但由于这是提前完成,您将没有具体细节。

然后,您将被提供一个评论,最后,确认选择。

之后,将在屏幕上生成撤销证书。 将其复制并粘贴到安全位置,或打印以供以后使用:

Revocation certificate created.

Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable.  But have some caution:  The print system of
your machine might store the data and make it available to others!
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: A revocation certificate should follow

iQIfBCABAgAJBQJSTxNSAh0AAAoJEIKHahUxGx+E15EP/1BL2pCTqSG9IYbz4CMN
bCW9HgeNpb24BK9u6fAuyH8aieLVD7It80LnSg/+PgG9t4KlzUky5sOoo54Qc3rD
H+JClu4oaRpq25vWd7+Vb2oOwwd/27Y1KRt6TODwK61z20XkGPU2NJ/ATPn9yIR9
4B10QxqqQSpQeB7rr2+Ahsyl5jefswwXmduDziZlZqf+g4lv8lZlJ8C3+GKv06fB
FJwE6XO4Y69LNAeL+tzSE9y5lARKVMfqor/wS7lNBdFzo3BE0w68HN6iD+nDbo8r
xCdQ9E2ui9os/5yf9Y3Uzky1GTLmBhTqPnl8AOyHHLTqqOT47arpwRXXDeNd4B7C
DiE0p1yevG6uZGfhVAkisNfi4VrprTx73NGwyahCc3gO/5e2GnKokCde/NhOknci
Wl4oSL/7a3Wx8h/XKeNvkiurInuZugFnZVKbW5kvIbHDWJOanEQnLJp3Q2tvebrr
BBHyiVeQiEwOpFRvBuZW3znifoGrIc7KMmuEUPvA243xFcRTO3G1D1X9B3TTSlc/
o8jOlv6y2pcdBfp4aUkFtunE4GfXmIfCF5Vn3TkCyBV/Y2aW/fpA3Y+nUy5hPhSt
tprTYmxyjzSvaIw5tjsgylMZ48+qp/Awe34UWL9AWk3DvmydAerAxLdiK/80KJp0
88qdrRRgEuw3qfBJbNZ7oM/o
=isbs
-----END PGP PUBLIC KEY BLOCK-----

如何导入其他用户的公钥


如果你不能接受你想与之沟通的人的其他公共密钥,GPG将是相当无用的。

您可以通过多种方式导入某人的公钥。 如果您从文本文件中的某人处获取了公钥,则GPG可以使用以下命令将其导入:

gpg --import name_of_pub_key_file

也有可能是您希望与之通信的人将其密钥上传到公钥服务器。 这些密钥服务器用于容纳来自世界各地的人们的公共密钥。

将其信息与各种其他服务器同步的流行密钥服务器是MIT公钥服务器。 您可以通过他们的名字或电子邮件地址在您的网络浏览器中搜索人:

http://pgp.mit.edu/

您还可以通过键入以下内容在GPG中搜索密钥服务器:

gpg --keyserver pgp.mit.edu  --search-keys search_parameters

如何验证和签名密钥


虽然您可以自由分发您生成的公钥文件,并且人们可以使用它以加密方式与您联系,但仍然存在对初始公钥传输的信任的问题。

验证其他人的身份


你怎么知道给你公钥的人是他们说他们是谁? 在某些情况下,这可能很简单。 你可能坐在旁边的人,你的笔记本电脑都打开和交换钥匙。 这应该是一个非常安全的方式,以确定您收到正确的,合法的密钥。

但有许多其他情况下,这种个人接触是不可能的。 你可能不会亲自了解对方,或者你可能会被身体距离分开。 如果你不想通过不安全的渠道进行通信,验证公钥可能会有问题。

幸运的是,不是验证双方的整个公钥,而是可以简单地比较从这些键派生的“指纹”。 这将给你一个合理的保证,你们都使用相同的公钥信息。

您可以通过键入以下内容获取公钥的指纹:

gpg --fingerprint your_email@address.com
pub   4096R/311B1F84 2013-10-04
      Key fingerprint = CB9E C70F 2421 AF06 7D72  F980 8287 6A15 311B 1F84
uid                  Test User <test.user@address.com>
sub   4096R/8822A56A 2013-10-04

这将产生一个更易于管理的数字字符串进行比较。 您可以将此字符串与此人本身或可访问此人的其他人进行比较。

签署他们的钥匙


签署密钥会告知软件您信任所提供的密钥,并且您已验证该密钥与相关人员相关联。

要签名您导入的密钥,只需键入:

gpg --sign-key email@example.com

在您签署密钥后,这意味着您验证您信任该人是他/她声称是谁。 这可以帮助其他人决定是否也相信这个人。 如果有人相信你,并且他们看到你已经签署了这个人的密钥,他们可能更有可能相信他们的身份。

您应该允许其签署密钥的人员通过发送签名密钥返回您的信任关系的优势。 您可以输入以下命令:

gpg --export --armor email@example.com

您必须再次输入您的密码。 然后,他们的公钥,由你签名,将被吐出在屏幕上。 向他们发送这些,以便他们在与他人互动时获得您的“批准邮票”。

当他们收到这个新的签名密钥时,他们可以导入它,将您生成的签名信息添加到他们的GPG数据库中。 他们可以通过键入:

gpg --import file_name

如何使您的公钥高度可用


没有真正的任何恶意,可能发生,如果未知的人有你的公钥。

因此,使您的公钥容易获得可能是有益的。 人们可以轻松找到您的信息,向您发送安全的消息,从第一次沟通。

您可以通过从GPG系统请求向任何人发送您的公钥:

gpg --armor --export your_email@address.com
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)

mQINBFJPCuABEACiog/sInjg0O2SqgmG1T8n9FroSTdN74uGsRMHHAOuAmGLsTse
9oxeLQpN+r75Ko39RVE88dRcW710fPY0+fjSXBKhpN+raRMUKJp4AX9BJd00YA/4
EpD+8cDK4DuLlLdn1x0q41VUsznXrnMpQedRmAL9f9bL6pbLTJhaKeorTokTvdn6
5VT3pb2o+jr6NETaUxd99ZG/osPar9tNThVLIIzG1nDabcTFbMB+w7wOJuhXyTLQ
JBU9xmavTM71PfV6Pkh4j1pfWImXc1D8dS+jcvKeXInBfm2XZsfOCesk12YnK3Nc
u1Xe1lxzSt7Cegum4S/YuxmYoh462oGZ7FA4Cr2lvAPVpO9zmgQ8JITXiqYg2wB3
. . .

然后,您可以复制和粘贴或在适当的介质中发送。

如果要将密钥发布到密钥服务器,可以通过大多数服务器站点上可用的表单手动执行。

另一个选择是通过GPG接口来实现。

键入以下内容查找您的密钥ID:

gpg --list-keys your_email@address.com

突出显示的部分是您的密钥ID。 这是一个简短的方法来引用内部软件的密钥。

pub   4096R/311B1F84 2013-10-04
uid                  Test User <test.user@address.com>
sub   4096R/8822A56A 2013-10-04

要将密钥上传到某个密钥服务器,您可以使用以下语法:

gpg --send-keys --keyserver pgp.mit.edu key_id

使用GPG加密和解密邮件


在您与另一方配置密钥后,您可以轻松地加密和解密邮件。

加密邮件


您可以使用GPG的“--encrypt”标志加密邮件。 基本语法是:

gpg --encrypt --sign --armor -r person@email.com name_of_file

参数基本上加密电子邮件,使用您的私钥对其进行签名,以确保其来自您,并生成文本格式的消息,而不是原始字节。

如果您想要能够阅读邮件,您还应该包含第二个“-r”收件人和您自己的电子邮件地址。 这是因为消息将用每个人的公钥加密,并且将只能够用相关联的私钥解密。

因此,如果它只是用对方的公钥加密,您将无法再次查看该邮件,除非您以某种方式获取了他们的私钥。 将自己添加为第二个收件人会对邮件分两次加密,每个收件人一次。

解密邮件


当您收到邮件时,只需在邮件文件上调用GPG:

gpg file_name

软件将根据需要提示您。

如果你有消息作为原始文本流,您可以复制,你只要键入后粘贴gpg不带任何参数。 您可以按“CTRL-D”表示邮件的结尾,GPG将为您解密。

关键维护


有一些过程,您可能需要定期使用来管理您的密钥数据库。

要列出您从其他人处可用的GPG密钥,您可以发出以下命令:

gpg --list-keys

如果您依赖从公钥服务器提取的信息,您的密钥信息可能会过时。 你不想依赖撤销的密钥,因为这意味着你信任可能被破解的密钥。

您可以通过发出以下命令来更新密钥信息:

gpg --refresh-keys

这将从密钥服务器获取新信息。

您可以使用以下方式从特定密钥服务器中提取信息:

gpg --keyserver key_server --refresh-keys

结论


正确使用GPG可以帮助您确保与不同人员的通信。 这是非常有帮助的,特别是当处理敏感信息,而且在处理常规,每天的消息传递。

由于某些加密通信可以通过监视程序标记的方式,建议对所有内容使用加密,而不仅仅是“秘密”数据。 这将使人们更难以知道您何时发送重要数据或只是发送友好的问候。

GPG加密仅在双方使用良好的安全措施并对其他安全措施保持警惕时才有用。 教育那些你定期沟通的人,了解这些做法的重要性,如果你想有加密安全通信的可能性。

作者:Justin Ellingwood