金钱(警告)
** 状态:** 被贬值
如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议升级或迁移到支持的 Ubuntu 版本:
** 原因:** Ubuntu 12.04 已于 2017 年 4 月 28 日到期(EOL)并且不再收到安全补丁或更新。
** 相反,请参阅:** 此指南可能仍然有用作为参考,但可能不会在其他Ubuntu版本上工作. 如果可用,我们强烈建议使用为您正在使用的Ubuntu版本撰写的指南。
介绍
GPG,或GNU隐私保护程序,是一个公共密钥加密的实现,它允许安全的信息传输,可以用来验证消息的来源是真实的。
在本指南中,我们将讨论GPG是如何工作的,以及如何实现它,我们将使用Ubuntu 12.04 VPS进行此演示,但这些工具可以在任何现代的Linux发行版上使用。
公钥加密如何运作
许多用户面临的问题是如何安全地通信并验证他们正在谈话的方的身份. 许多试图回答这个问题的方案需要,至少在某个时刻,通过不安全的媒体传输密码或其他识别凭证。
确保只有意图的参与者才能阅读
为了绕过这个问题,GPG依赖于一个被称为公钥加密的安全概念。 这个想法是,你可以将传输的加密和解密阶段分为两个单独的部分。
这将允许一个单向的消息传输,任何人都可以创建和加密,但只有指定用户(具有私钥的用户)才能解密。
因此,在这种情况下,每个方都有自己的私钥和另一个用户的公共密钥。
验证发送者的身份
该系统的另一个好处是,消息的发送者可以用其私钥签名
消息,接收者拥有的公共密钥可以用来验证签名实际上是由指定的用户发送的。
这可以防止第三方伪造
某人的身份,它还可以帮助确保消息被传输完整,而不会损坏或损坏文件。
设置 GPG 密钥
GPG 应该默认安装在 Ubuntu 12.04 上,如果没有,您可以使用:
1sudo apt-get install gnupg
要开始使用 GPG 来加密您的通信,您需要创建一个密钥对。
1gpg --gen-key
这将带你通过几个问题,将配置你的密钥。
- 请选择您想要的密钥类型: (1) RSA 和 RSA (默认)
- 您想要的密钥大小是什么? 4096
- 密钥是否有效? 0
- 这是正确的吗? y
- 真实姓名: 您的真实姓名在这里
- 电子邮件地址: [email protected]
- 评论: ** 可选评论将显示在您的签名中**
- 更改(名称,(C)评论,(电子邮件)或(O)/kay(Quit) ** 或 输入安全passphrase
在这一点上,它将需要使用来生成密钥,这基本上是一个用来描述系统中存在的不可预测量的术语。
最好在运行时打开新终端并将 ssh 插入 VPS. 安装一些软件,做一些工作,并尽可能多地使用机器,让它产生所需的。
这个过程可能需要很长时间,这取决于你能让你的系统多么活跃. 这里有一篇关于 如何用 haveged 产生额外的力的文章),这可能有用。
创建撤销证书
你需要有一种方法来取消你的密钥对,如果有一个安全漏洞,或者如果你失去了你的秘密密钥。
该撤销密钥必须提前生成并保存在一个安全、独立的位置,如果您的计算机受到损害或无法操作。
gpg --gen-revoke [email protected]
您可以选择任何可用的选项,但由于这正在提前完成,您将没有详细信息。
您将被邀请提供评论,并最终确认选项。
之后,将生成一个撤销证书,复制并粘贴到安全位置,或打印以供以后使用:
1Revocation certificate created.
2
3Please move it to a medium which you can hide away; if Mallory gets
4access to this certificate he can use it to make your key unusable.
5It is smart to print this certificate and store it away, just in case
6your media become unreadable. But have some caution: The print system of
7your machine might store the data and make it available to others!
8-----BEGIN PGP PUBLIC KEY BLOCK-----
9Version: GnuPG v1.4.11 (GNU/Linux)
10Comment: A revocation certificate should follow
11
12iQIfBCABAgAJBQJSTxNSAh0AAAoJEIKHahUxGx+E15EP/1BL2pCTqSG9IYbz4CMN
13bCW9HgeNpb24BK9u6fAuyH8aieLVD7It80LnSg/+PgG9t4KlzUky5sOoo54Qc3rD
14H+JClu4oaRpq25vWd7+Vb2oOwwd/27Y1KRt6TODwK61z20XkGPU2NJ/ATPn9yIR9
154B10QxqqQSpQeB7rr2+Ahsyl5jefswwXmduDziZlZqf+g4lv8lZlJ8C3+GKv06fB
16FJwE6XO4Y69LNAeL+tzSE9y5lARKVMfqor/wS7lNBdFzo3BE0w68HN6iD+nDbo8r
17xCdQ9E2ui9os/5yf9Y3Uzky1GTLmBhTqPnl8AOyHHLTqqOT47arpwRXXDeNd4B7C
18DiE0p1yevG6uZGfhVAkisNfi4VrprTx73NGwyahCc3gO/5e2GnKokCde/NhOknci
19Wl4oSL/7a3Wx8h/XKeNvkiurInuZugFnZVKbW5kvIbHDWJOanEQnLJp3Q2tvebrr
20BBHyiVeQiEwOpFRvBuZW3znifoGrIc7KMmuEUPvA243xFcRTO3G1D1X9B3TTSlc/
21o8jOlv6y2pcdBfp4aUkFtunE4GfXmIfCF5Vn3TkCyBV/Y2aW/fpA3Y+nUy5hPhSt
22tprTYmxyjzSvaIw5tjsgylMZ48+qp/Awe34UWL9AWk3DvmydAerAxLdiK/80KJp0
2388qdrRRgEuw3qfBJbNZ7oM/o
24=isbs
25-----END PGP PUBLIC KEY BLOCK-----
如何导入其他用户的公共密钥
如果你不能接受你想要沟通的人的其他公共密钥,GPG将是相当无用的。
您可以以多种方式导入某人的公共密钥. 如果您在文本文件中从某人获取了公共密钥,GPG 可以使用以下命令导入它:
gpg --import name_of_pub_key_file
也有可能,你想要沟通的人已将他们的密钥上传到公共密钥服务器,这些密钥服务器被用来存储来自世界各地的人的公共密钥。
同步其信息与各种其他服务器的流行的密钥服务器是MIT公共密钥服务器. 您可以通过在您的网页浏览器中在这里搜索用户的名称或电子邮件地址:
1http://pgp.mit.edu/
您也可以通过键入以下方式从 GPG 内部搜索关键服务器:
gpg --keyserver pgp.mit.edu --search-keys search_parameters
如何验证和签署密钥
虽然您可以自由地分发生成的公共密钥文件,人们可以使用这种方式以加密的方式与您联系,但在最初的公共密钥传输中仍然存在信任问题。
验证对方的身份
你怎么知道给你的公钥的人是谁?在某些情况下,这可能是简单的。你可能会坐在你笔记本电脑打开和交换密钥的人旁边。
但是还有许多其他情况,这种个人接触是不可能的. 您可能不会亲自认识对方,或者您可能因物理距离而分离。
幸运的是,而不是验证双方的所有公共密钥,您可以简单地比较这些密钥所产生的指纹
,这将为您提供合理的保证,即您都使用相同的公共密钥信息。
您可以通过键入公共密钥的指纹:
gpg --fingerprint [email protected]
pub 4096R/311B1F84 2013-10-04 Key fingerprint = CB9E C70F 2421 AF06 7D72 F980 8287 6A15 311B 1F84 uid Test User <[email protected]> sub 4096R/8822A56A 2013-10-04
这将产生一个更易于管理的数字字符串来比较,您可以将这个字符串与该人本身或其他人进行比较,并且可以访问该人。
标记他们的钥匙
签署密钥告诉您的软件,您信任已提供给您的密钥,并且您已验证它与该人相关联。
要签署您已导入的密钥,只需输入:
gpg --sign-key [email protected]
一旦你签署了密钥,这意味着你确认你信任这个人是他或她声称的人,这可以帮助其他人决定是否信任这个人,如果有人信任你,并且他们看到你签署了这个人的密钥,他们可能会更有可能信任他们的身份。
您应该允许您正在签名的密钥的人通过将签名的密钥发送回信任关系的优点。
gpg --export --armor [email protected]
您将不得不再次输入您的密码。之后,由您签名的他们的公共密钥将被冲出屏幕上。 发送给他们,以便他们在与他人交互时能够从获得您的批准印记
中受益。
当他们收到这个新的,签名的密钥时,他们可以导入它,将您生成的签名信息添加到他们的GPG数据库中。
gpg --import file_name
如何让您的公共密钥高度可用
实际上没有什么恶意的事情会发生,如果未知的人有你的公共密钥。
因此,让您的公共密钥易于使用可能有益,然后人们可以轻松找到您的信息,从第一次通信开始向您发送安全消息。
你可以向任何人发送你的公共密钥,请求它从GPG系统:
gpg --armor --export [email protected]
-----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 [email protected]
突出部分是您的密钥ID,这是将密钥引用到内部软件的简短方式。
pub 4096R/311B1F84 2013-10-04 uid Test User <[email protected]> sub 4096R/8822A56A 2013-10-04
若要将密钥上传到特定密钥服务器,您可以使用以下语法:
gpg --send-keys --keyserver pgp.mit.edu key_id
使用 GPG 加密和解密消息
您可以轻松地加密和解密消息,一旦您与对方配置了密钥。
加密消息
您可以使用GPG的--encrypt
旗帜来加密消息,基本语法是:
gpg --encrypt --sign --armor -r [email protected] name_of_file
参数基本上加密电子邮件,用您的私钥签署它,以确保它来自您,并以文本格式生成消息,而不是原始字节。
如果您希望能够读取邮件,您还应该将另一个-r
接收者包含在自己的电子邮件地址中,因为邮件将被加密使用每个人的公共密钥,并且只能使用相关的私钥来解密。
因此,如果它只用对方的公共密钥加密,您将无法再次查看消息,除非您以某种方式获得了他们的私钥。
解密信息
当您收到消息时,只需在消息文件上拨打GPG:
gpg file_name
软件将根据需要向您转发。
如果你有消息作为一个原始文本流,你可以复制并粘贴它后,你只是输入gpg
没有任何论点. 你可以按CTRL-D
来表示消息的结束,GPG将为你解密它。
关键维护
您可能需要定期使用的一些程序来管理您的关键数据库。
要列出您从其他人那里获得的可用 GPG 密钥,您可以发出以下命令:
1gpg --list-keys
如果您依靠从公共密钥服务器中提取的信息,您的关键信息可能会变得过时,您不希望依靠被撤销的密钥,因为这意味着您信任可能受到威胁的密钥。
您可以通过发布以下信息来更新关键信息:
1gpg --refresh-keys
这将从关键服务器中获取新的信息。
您可以从特定密钥服务器中提取信息,使用:
gpg --keyserver key_server --refresh-keys
结论
正确使用GPG可以帮助您确保与不同的人的通信,这非常有帮助,特别是在处理敏感信息时,而且在处理定期的日常消息时。
由于某些加密通信可以被监控程序标记的方式,建议对一切使用加密,而不仅仅是秘密
数据,这将使人们更难知道何时发送重要数据或只是发送友好的问候。
GPG 加密只有当双方都使用良好的安全实践并对其它安全实践保持警惕时才有用。