GPG实用指南–第1部分生成密钥对

本教程系列将教您如何在Linux终端中使用GPG。 我不会告诉您很多理论使您不知所措。 相反,我向您展示了一些简单又肮脏的示例,以帮助您入门,并逐步解释了基本理论。

这是本系列的第1部分。 在这篇文章的结尾,您应该能够 生成自己的公共/私有密钥对 和一个 吊销证明。 当您的私钥遭到破坏或您忘记了私钥的密码短语时,此证书将用于吊销您的公钥/私钥对。

GPG可用于 加密 和为 签署。 该软件已预装在大多数Linux发行版中。 当前稳定版本是GPG 2.0。 我在Arch Linux上使用的是现代版本GPG 2.2。

检查您的GPG版本

首先,让我们检查一下系统上GPG的版本和一些有趣的花絮。 运行以下命令。

gpg --version


如您所见,我正在使用最新版本的GPG 2.2.8。 我们也知道配置目录是 〜/ .gnupg,它将保存我们的公共/私有密钥文件。 默认选项文件是 〜/ .gnupg / gpg.conf〜/ .gnupg / dirmngr.conf。 它还告诉我们支持哪些算法。

如果仔细观察,您会发现不安全的哈希算法SHA1在版本2.2.8中仍受支持,SHA1已过时,并且您不想使用它来生成签名。

创建您的公共/私人密钥对和吊销证书

使用 gpg --full-gen-key 命令生成密钥对。

gpg --full-gen-key

gpg生成密钥

它询问您想要哪种钥匙。 注意有四个选项。 默认设置是创建RSA公钥/私钥对以及RSA签名密钥。 让我们按Enter选择默认值。

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)

接下来,它询问您密钥长度。 默认值为2048位长。 1024 RSA密钥已过时。 较长的4096 RSA密钥不会提供比2048 RSA密钥更高的安全性。 因此,按Enter键选择默认值。

Requested keysize is 2048 bits
Please specify how long the key should be valid.
 0 = key does not expire
 <n> = key expires in n days
 <n>w = key expires in n weeks
 <n>m = key expires in n months
 <n>y = key expires in n years
Key is valid for? (0)2y 

之后,它会询问您密钥有效期为2年。 您以后可以随时更新到期时间。

Key expires at Sun 21 Jun 2020 12:29:24 AM UTC
Is this correct? (y/N)y

现在,它会询问您是否正确。 请注意,默认值为“否”。因此请按 y 然后输入以确认它是正确的。

GnuPG needs to construct a user ID to identify your key.
 Real name: Xiao Guoan
 Email address: [email protected]
 Comment:

现在,我们需要为密钥提供一些用户标识信息。 这很重要,因为此信息将包含在我们的密钥中。 这是指示谁是此密钥的所有者的一种方法。 电子邮件地址是一个人的唯一标识符。 您可以将“评论”留空。

You selected this USER-ID:
 "Xiao Guoan <[email protected]>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O

选择确定。

现在,它要求您输入密码来保护您的私钥。 输入一个好的长密码短语并记住它。 因为如果忘记了该密码,将无法解锁私钥。

gpg密钥密码

输入并确认密码后。 GPG将生成您的密钥。

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

GPG可能需要一段时间才能生成您的密钥。 因此,您现在可以做其他事情。

我的系统花费了大约4分钟的时间来生成我的密钥对。

gpg: key 4F0BDACC marked as ultimately trusted
gpg: directory '/home/matrix/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/matrix/.gnupg/openpgp-revocs.d/F0461D8F7F64F70A5BBED42E02C87F194F0BDACC.rev'
public and secret key created and signed.

gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: PGP
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2018-01-31
pub rsa2048/4F0BDACC 2016-02-01 [S] [expires: 2018-01-31]
Key fingerprint = F046 1D8F 7F64 F70A 5BBE D42E 02C8 7F19 4F0B DACC
uid     [ultimate] Xiao Guoan <[email protected]>
sub rsa2048/E02A4EED 2016-02-01 [] [expires: 2018-01-31]

第一行告诉我们GPG为公钥创建了唯一的标识符。 该唯一标识符为十六进制格式。 当某人想要下载您的公共密钥时,他们可以通过您的电子邮件地址或此十六进制值引用您的公共密钥。

第三行告诉我们,GPG创建了一个 吊销证明 及其目录。 您绝对不应与任何人共享您的私钥。 如果您的私钥遭到破坏,则可以使用撤消证书撤消您的密钥。 这意味着您告诉世界其他地区,不再使用旧的公共密钥。 我建议您使用文本编辑器打开此吊销证书,以查看其中的内容。

让我们看一下最后三行。 他们告诉我们使用RSA算法的公钥为2048位。 公钥ID 4F0BDACC与密钥指纹的后8位匹配。 密钥指纹是您的公共密钥的哈希。

它还列出了我们的用户ID信息:您的姓名和电子邮件地址。 并且还使用RSA算法指示该2048位的子密钥和该子密钥的唯一标识符。

现在您可以发现在下面创建了两个文件 〜/ .gnupg / private-keys-v1.d / 目录。 这两个文件是带有 。键 延期。

导出您的公钥

其他人则需要您的公钥才能将加密的消息发送给您,只有您的私钥才能对其解密。 使用以下命令导出您的公钥。 --armor option表示输出为ASCII铠装。 默认是创建二进制OpenPGP格式。 user-id 是您的电子邮件地址。

gpg --armor --export user-id > pubkey.asc

导出的公钥将写入 pubkey.asc 文件。

导出您的私钥

发出以下命令以导出您的私钥。

gpg --export-secret-keys --armor user-id > privkey.asc

导出的密钥被写入 privkey.asc 文件。

保护您的私钥和吊销证书

您的私钥应保存在安全的地方,例如加密的闪存驱动器。 像对待房门钥匙一样对待它。 只有您可以拥有它,而不会失去它。 并且您必须记住密码,否则您将无法解锁私钥。

您还应该保护您的吊销证书。 如果其他人拥有您的吊销证书,他们可以立即吊销您的公用/专用密钥对并生成伪造的公用/专用密钥对。

在第2部分中,我们将研究如何使用公共密钥加密消息以及如何使用私有密钥解密消息。 照顾自己!

Sidebar