当前位置: 首页 > 科技观察

手把手指导:在 Linux 上使用 GPG 加解密文件

时间:2023-03-18 17:17:52 科技观察

分步指南:在Linux标准上使用GPG加密和解密文件。学习使用GPG很容易,您可以在几分钟内学会使用它。在本教程中,我将向您展示如何使用GPG加密和解密文件。这是一个简单的教程,您可以在您的Linux系统上尝试所有练习。这将帮助您练习GPG命令并在它对您来说是全新的时候理解它。在开始自己动手之前,请阅读整个教程。GPG是如何加密的?GPG加密要使用GPG,您首先需要有一个GPG密钥。GPG密钥是您将在本教程后面用于加密(或解密)文件的密钥。它还用于识别您的身份,您的姓名和电子邮件也与密钥相关联。GPG密钥通过使用两个文件,一个私钥和一个公钥来工作。这两个密钥相互关联,是GPG的所有功能所必需的,尤其是加密和解密文件。当您使用GPG加密文件时,它使用私钥。这个新的加密文件只能用配对的公钥解密。私钥,顾名思义,就是以私密的方式存储起来,任何人都看不到的密钥。另一方面,公钥用于提供给其他人,或任何您希望能够解密您的文件的人。这就是GPG的加密方法发挥作用的地方。它允许您在本地加密文件,这样其他人就可以确定他们收到的文件实际上是由您发送的。因为他们能够解密文件的唯一方法是使用您的公钥,并且只有在文件首先使用您的私钥加密时才有效。相反,其他人可以使用您的公钥加密文件,而解密它的唯一方法是使用您的私钥。因此,允许其他人公开发布文件,而不必担心除您以外的其他人能够阅读这些文件。(LCTT译注:另一种常见的用例是,你使用你的私钥对一个公开发布的文件进行签名,其他人使用你的公钥来验证你的签名,以确保该文件是你发布的并且没有被篡改过。但是本文不涉及此用例。)换句话说,如果一个文件是用私钥加密的,那么它只能用对应的公钥解密。而如果一个文件是用公钥加密的,就只能用对应的私钥解密。您已经在不知不觉中使用GPG使用GPG的最常见示例之一是在Linux包管理器中,尤其是外部存储库。您将开发人员的公钥添加到系统的可信密钥中。开发人员使用他/她的私钥对包进行签名(生成签名)。由于你的Linux系统有公钥文件,它可以理解这个包实际上来自一个可信的开发者。许多加密服务在您没有意识到的情况下使用某种GPG实现。但现在最好不要深入研究这些细节。现在您已经对这个概念有些熟悉了,让我们看看如何使用GPG来加密文件,然后使用它来解密文件。使用GPG加密和解密文件这是一个非常简单的场景。我假设您只有一个系统,并且想看看GPG是如何工作的。您没有将文件发送到其他系统。您加密文件,然后在同一系统上对其进行解密。当然,这不是实际用例,但这也不是本教程的主题。我的目的是让您熟悉GPG命令和功能。之后,您可以在现实世界中使用这些知识(如果需要)。为此,我将向您展示如何与他人共享您的公钥。第1步:安装GPGGPG可以在大多数开箱即用的发行版的软件存储库中找到。在基于Debian和Ubuntu的系统上,安装gpg软件包:sudoaptinstallgpg如果您使用的是基于Arch的发行版,请使用pacman命令安装gnupg软件包:sudopacman-Sgnupg第2步:在您的Generatinga您系统上的GPG密钥只需要一个简单的命令。只需运行下面的命令,您的密钥就会生成(对于大多数问题,您可以使用默认值,如下面带下划线的部分所示)。gpg--full-generate-key生成一个GPG密钥检查GPG密钥然后你可以看到私钥和公钥通过使用--list-secret-keys和--list-public-keys参数分别与下图所示的ID相互绑定。列出GPG密钥第3步:使用GPG加密文件现在您已经设置了GPG密钥,您可以开始加密我们的文件了。使用以下命令加密文件:gpg--encrypt--outputfile.gpg--recipientuser@example.comfile让我们快速看一下这个命令的作用:首先,指定--encrypt选项。这告诉GPG我们要加密一个文件。接下来,您指定了--outputfile.gpg。这可以是任何内容,但惯例是将.gpg扩展名添加到要加密的文件的名称中(因此message.txt变为message.txt.gpg)。接下来,您输入--recipientuser@example.com。这为相应的GPG密钥指定了一封电子邮件,该密钥实际上并不存在于该系统中。使困惑?它的工作原理是您在此处指定的电子邮件必须与本地系统上的公钥相关联。通常,这将是您要用来加密文件的其他人的GPG公钥。之后,该文件将只能使用该用户的私钥解密。在此示例中,我将使用我之前与user@example.com关联的GPG密钥。所以逻辑是,我用user@example.com的公钥加密文件,然后只能用user@example.com的私钥解密。如果您正在为其他人加密文件,您只有公钥,但由于您是为自己加密文件,所以您的系统上有两个密钥。最后,您只需指定要加密的文件。对于此示例,让我们使用一个名为message.txt的文件,其中包含以下内容:We'reencryptingwithGPG!示例文本文件同样,如果电子邮件是user@example.com,新的GPG命令将如下所示GPG文件如果您尝试读取该文件,您会发现它看起来像乱码。这是预期的,因为文件现在已加密。读取加密文件产生乱码现在让我们删除未加密的message.txt文件,这样您就可以看到message.txt.gpg文件实际上在没有原始文件的情况下也能正常解密。第四步:用GPG解密加密文件最后,我们来实际解密加密信息。您可以使用以下命令执行此操作。gpg--decrypt--outputfilefile.gpg通过这里的参数,我们首先指定--decrypt,它告诉GPG你要解密一个文件。接下来,您输入--output文件,它只是告诉GPG在解密后您要将文件的解密形式保存到哪个文件。最后,输入file.gpg,这是加密文件的路径。在这个例子之后,我使用的命令是这个。gpg--decrypt--outputmessage.txtmessage.txt.gpg使用GPG解密文件,你就完成了!当您想使用GPG加密和解密文件时,这就是它的全部内容。您可能想知道的就是如何与其他人共享您的公钥,以便他们可以在将文件发送给您之前对其进行加密。发送和接收GPG密钥要向某人发送GPG密钥,您首先需要从您的钥匙串中导出它,其中包含您所有的公钥和私钥。要导出密钥,只需在您的钥匙串中找到密钥的ID,然后运行以下命令,将id替换为密钥的ID,并将key.gpg替换为您要将其保存到的文件名。gpg--outputkey.gpg--exportid导出GPG公钥要导入密钥,只需将输出文件(来自上一个命令)提供给其他用户并让他们运行下面的命令。gpg--importkey.gpg但是要正确使用密钥,您需要验证密钥以便GPG正确信任它。这可以通过在其他用户的系统上使用--edit-key参数然后签署密钥来完成。首先运行gpg--edit-keyid:GPGedit-key接下来,使用--fpr参数,这将显示密钥的指纹。这个命令的输出应该用你自己机器上的输出来验证,这可以通过在你的系统上运行相同的--edit-key参数来找到。GPG密钥的指纹,如果一切都匹配,只需使用--sign参数就可以了。签署GPG密钥就可以了!其他用户现在可以开始使用您的公钥加密文件,就像您之前所做的那样,这确保只有您使用您的私钥解密它们才能被您读取。这就是使用GPG的所有基础知识!总结现在您已经了解了开始使用GPG所需了解的一切,包括为您自己和他人加密文件。正如我前面提到的,这只是为了了解GPG的加密和解密过程是如何工作的。将您刚刚获得的基本GPG知识应用于现实场景时,可以将其提升到一个新的水平。