通过GPG生成钥匙对
1. 简介
GNU Privacy Guard,简称GPG ,是一个免费的开源工具,实现了 OpenPGP 规范。PGP 通常用于电子邮件和文件的加密和签名。
PGP 系统的核心部分是加密密钥。gpg实用程序支持生成此类加密密钥。在本教程中,我们将了解如何使用gpg 快速生成加密密钥。
2. 使用gpg生成密钥
要使用gpg生成一对密钥,我们使用*–gen-key*选项:
$ gpg --gen-key
首先,它会提示您输入姓名和电子邮件。然后,一旦我们提供了必要的输入,它就会开始生成密钥。根据我们计算机的繁忙程度,gpg实用程序可能会输出如下消息:
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy!
要生成强加密密钥,我们需要能够生成真正随机的字节。熵是系统中随机性的度量。因此,要生成强密码密钥,我们需要增加系统的熵。现在让我们看看如何做到这一点。
3. 增加熵
如前所述,生成强加密密钥需要高熵。因此,当系统熵较低时,生成密钥通常需要很长时间。 增加熵有助于快速生成这些密钥。有几种方法可以增加熵。在这里,我们将看到我们拥有的一些选项:
- 广泛的 GUI 操作
- 广泛的磁盘操作
- 使用外部进程
重要的是,我们应该在运行gpg命令生成密钥时执行这些操作。这些操作生成的熵将被gpg命令使用。现在,让我们看一下上面每个选项的示例。
3.1. 广泛的 GUI 操作
首先,让我们看一下基于 GUI 的选项。实现广泛的 GUI 操作的一种方法是快速移动鼠标。当我们快速移动鼠标时,UI 必须以同样快的速度在 UI 中渲染鼠标指针。这会在过程中产生随机性。
但是,这是最不受欢迎的选项,因为它涉及用户的努力。此外,这种方法假定机器具有 GUI,而服务器上可能不是这种情况。
3.2. 广泛的磁盘操作
接下来,让我们看看使用磁盘操作生成熵。当我们对磁盘进行多次随机操作时,系统熵会增加。进行大量磁盘操作的一种简单方法是使用find命令。如前所述,我们应该在生成密钥的gpg命令旁边运行find 命令。这是一个例子:
find / > /dev/null
此命令从根文件系统遍历并递归列出每个文件和文件夹。
但是,我们需要记住,这是一个长时间运行的命令。因此,一旦我们生成了足够的熵,我们就可以使用Ctrl + C 来终止这个命令。
3.3. 外部流程
虽然通过运行 find 命令很容易生成随机性,但有一些实用程序作为后台守护进程运行,效果更好。*haveged *就是一个这样的例子。
它是一个基于HAVEGE算法生成随机性的守护进程。我们可以为我们选择的分发安装haveged ,它始终如一地保持系统的熵,使gpg等实用程序可以轻松利用随机性。安装haveged非常容易。
在 Debian/Ubuntu 上,我们可以使用以下命令来安装haveged:
$ sudo apt update
$ sudo apt install haveged
同样,在 Fedora/RHEL 上,我们可以执行以下操作来安装haveged:
$ dnf update
$ dnf install haveged
一旦我们安装它,haveged会自动在后台作为守护进程运行。不需要额外的步骤。