心若海涵 發表於 2024-2-28 00:00:00

手把手教您在 Linux 上使用 GPG 加解密文件

<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/28d426cd98e2f0a8220ce7d151850b2f.jpg" width="auto"></p>
<p>
        GnuPG,俗称 GPG,是一个非常通用的工具,被广泛用作电子邮件、信息、文件或任何你需要安全地发送给别人的东西的加密行业标准。</p>
<p>
        学习使用 GPG 很容易,你可以在几分钟内就学会使用它。</p>
<p>
        在本教程中,我将告诉你如何用 GPG 加密和解密文件。这是一个简单的教程,你可以在你的 Linux 系统上尝试所有的练习。这将帮助你练习 GPG 命令,并在你完全陌生的情况下理解它。</p>
<p>
        请先阅读整个教程,然后开始自己做。</p>
<h3 class="mume-header" id="gpg-%E6%98%AF%E5%A6%82%E4%BD%95%E8%BF%9B%E8%A1%8C%E5%8A%A0%E5%AF%86%E7%9A%84">
        GPG 是如何进行加密的? </h3>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/0c31d0e785a8782f4103988e8d131775.jpg"></p>
<p class="article_img_desc">
        <em>GPG 加密</em></p>
<p>
        要使用 GPG,你首先需要有一个 GPG 密钥。</p>
<p>
        GPG 密钥是你在后面的教程中用来加密(或解密)文件的东西。它也是用来识别你的身份的,你的名字和电子邮件也会与密钥绑定。</p>
<p>
        GPG 密钥的工作原理是使用两个文件,一个私钥和一个公钥。这两个密钥是相互联系的,并且 GPG 的所有功能都需要使用它们,特别是对文件加密和解密。</p>
<p>
        当你用 GPG 加密一个文件时,它使用的是私钥。然后,这个新的加密文件<strong>只能</strong>用配对的公钥进行解密。</p>
<p>
        私钥,顾名思义,是以私下的、不给任何人看的方式来存储的密钥。</p>
<p>
        另一方面,公钥是用来给其他人的,或者你希望能够解密你的文件的任何人。</p>
<p>
        这就是 GPG 的加密方法的主要作用。它允许你对文件进行本地加密,然后允许其他人确保他们收到的文件实际上是由你发送的。因为他们能够解密文件的唯一方法是使用你的公钥,而这只有在文件首先使用你的私钥加密的情况下才有效。</p>
<p>
        <strong>反之</strong>,其他人可以用你的公钥对文件进行加密,而唯一能够解密的方法是用你的私钥。因此,允许其他人公开发布文件,而不用担心除了你以外的人能够阅读它们。(LCTT 译注:另外一个常见的用例是你用你的私钥对公开发布的文件进行签名,别人使用你的公钥通过验证你的签名而确信文件是你发布的、并没有被篡改。但本文没有涉及这个用例。)</p>
<p>
        换句话说,如果一个文件是用私钥加密的,它只能用相应的公钥解密。而如果一个文件是用公钥加密的,它只能用相应的私钥解密。</p>
<h4 class="mume-header" id="%E4%BD%A0%E5%B7%B2%E7%BB%8F%E5%9C%A8%E4%BD%BF%E7%94%A8-gpg-%E8%80%8C%E6%B2%A1%E6%9C%89%E6%84%8F%E8%AF%86%E5%88%B0">
        你已经在使用 GPG 而没有意识到</h4>
<p>
        一个最常见的使用 GPG 的例子是在 Linux 软件包管理器中,特别是 外部仓库。你把开发者的公钥添加到你系统的可信密钥中。开发者用他/她的私钥签署软件包(生成签名)。由于你的 Linux 系统拥有该公钥文件,它就能理解该软件包实际上是来自受信任的开发者。</p>
<p>
        许多加密服务在你没有意识到的情况下使用了某种 GPG 的实现。但现在最好不要去研究这些细节。</p>
<p>
        现在你对这个概念有点熟悉了,让我们看看如何使用 GPG 来加密一个文件,然后用它来解密。</p>
<h3 class="mume-header" id="%E7%94%A8-gpg-%E5%AF%B9%E6%96%87%E4%BB%B6%E8%BF%9B%E8%A1%8C%E5%8A%A0%E5%AF%86%E5%92%8C%E8%A7%A3%E5%AF%86">
        用 GPG 对文件进行加密和解密 </h3>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/33867cdc2a46c3fac4ba01ea3f8c1d7d.jpg"></p>
<p>
        这是一个非常简单的场景。我假定你只有一个系统,你想看看 GPG 是如何工作的。你并没有把文件发送到其他系统。你对文件进行加密,然后在同一个系统上解密。</p>
<p>
        当然,这不是一个实际的用例,但这也不是本教程的目的。我的目的是让你熟悉 GPG 命令和功能。之后,你可以在现实世界中使用这些知识(如果需要的话)。为此,我将告诉你如何与他人分享你的公钥。</p>
<h4 class="mume-header" id="%E7%AC%AC%E4%B8%80%E6%AD%A5%E5%AE%89%E8%A3%85-gpg">
        第一步:安装 GPG</h4>
<p>
        GPG 可以在大多数发行版的软件库中找到,开箱即用。</p>
<p>
        在基于 Debian 和 Ubuntu 的系统中,安装 <code>gpg</code> 包:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="kwd">sudo</span><span class="pln"> apt install gpg</span></code>
</li>
</ol>
<p>
        如果你使用 基于 Arch 的发行版,用 pacman 命令 安装 <code>gnupg</code> 软件包:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="kwd">sudo</span><span class="pln"> pacman </span><span class="pun">-</span><span class="pln">S gnupg</span></code>
</li>
</ol>
<h4 class="mume-header" id="%E7%AC%AC%E4%BA%8C%E6%AD%A5%E7%94%9F%E6%88%90%E4%B8%80%E4%B8%AA-gpg-%E5%AF%86%E9%92%A5">
        第二步:生成一个 GPG 密钥</h4>
<p>
        在你的系统上生成一个 GPG 密钥只需要一条简单的命令。</p>
<p>
        只要运行下面的命令,就会生成你的密钥(你可以对大多数问题使用默认值,如下面的下划线部分所示)。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">gpg </span><span class="pun">--</span><span class="pln">full</span><span class="pun">-</span><span class="pln">generate</span><span class="pun">-</span><span class="pln">key</span></code>
</li>
</ol>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/6fa289581ffd32b076f992bf6f2ccd14.jpg"></p>
<p class="article_img_desc">
        <em>生成 GPG 密钥</em></p>
<p>
        <strong>检查 GPG 密钥</strong></p>
<p>
        然后你可以通过使用 <code>--list-secret-keys</code> 和 <code>--list-public-keys</code> 参数,分别看到私钥和公钥都是通过 <code>pub</code> 下显示的那个 ID 相互绑定的。</p>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/ea02da6af0ab6c93201492ed2102a053.jpg"></p>
<p class="article_img_desc">
        <em>列出 GPG 密钥</em></p>
<h4 class="mume-header" id="%E7%AC%AC%E4%B8%89%E6%AD%A5%E7%94%A8-gpg-%E5%8A%A0%E5%AF%86%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6">
        第三步:用 GPG 加密一个文件</h4>
<p>
        现在你已经设置了 GPG 密钥,你可以开始对我们的文件进行加密了。</p>
<p>
        使用下面的命令来加密文件:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">gpg </span><span class="pun">--</span><span class="pln">encrypt </span><span class="pun">--</span><span class="pln">output </span><span class="kwd">file</span><span class="pun">.</span><span class="pln">gpg </span><span class="pun">--</span><span class="pln">recipient user@example</span><span class="pun">.</span><span class="pln">com </span><span class="kwd">file</span></code>
</li>
</ol>
<p>
        让我们快速浏览一下该命令的内容:</p>
<p>
        首先,你指定了 <code>—encrypt</code> 选项。这告诉 GPG,我们将对一个文件进行加密。</p>
<p>
        接下来,你指定了 <code>--output file.gpg</code>。这可以是任何名字,不过惯例是给你要加密的文件的名称加上 <code>.gpg</code> 扩展名(所以 <code>message.txt</code> 会变成 <code>message.txt.gpg</code>)。</p>
<p>
        接下来,你输入 <code>—recipient user@example.com</code>。这指定了一个相应的 GPG 密钥的电子邮件,这个密钥实际上在这个系统上还不存在。</p>
<p>
        有点迷惑?</p>
<p>
        工作原理是,你在这里指定的电子邮件必须与你本地系统中的公钥相联系。</p>
<p>
        通常情况下,这将是来自另外一个人的 GPG 公钥,你要用它来加密你的文件。之后,该文件将只能用该用户的私钥进行解密。</p>
<p>
        在这个例子中,我将使用我以前的与 <code>user@example.com</code> 关联的 GPG 密钥。因此,其逻辑是,我用 <code>user@example.com</code> 的 <em>公钥</em> 对文件进行加密,然后只能用 <code>user@example.com</code> 的 <em>私钥</em> 进行解密。</p>
<p>
        如果你是为别人加密文件,你只有该公钥,但由于你是为自己加密文件,你的系统上有这两个密钥。</p>
<p>
        最后,你只需指定你要加密的文件。在这个例子中,让我们使用一个名为 <code>message.txt</code> 的文件,内容如下:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="typ">We</span><span class="str">'re encrypting with GPG!</span></code>
</li>
</ol>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/4698978a5bd033424f925d378f5929f4.jpg"></p>
<p class="article_img_desc">
        <em>文本文件样本</em></p>
<p>
        同样地,如果电子邮件是 <code>user@example.com</code>,新的 GPG 命令将如下所示:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">gpg </span><span class="pun">--</span><span class="pln">encrypt </span><span class="pun">--</span><span class="pln">output message</span><span class="pun">.</span><span class="pln">txt</span><span class="pun">.</span><span class="pln">gpg </span><span class="pun">--</span><span class="pln">recipient user@example</span><span class="pun">.</span><span class="pln">com message</span><span class="pun">.</span><span class="pln">txt</span></code>
</li>
</ol>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/4bbeb752dfbb0b56ac1628d99e666dca.jpg"></p>
<p class="article_img_desc">
        <em>用 GPG 加密文件</em></p>
<p>
        如果你尝试阅读该文件,你会看到它看起来像乱码。这是预料之中的,因为该文件现在已经被加密了。</p>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/8f8ca01046e71ba514f45c34cb1a0a3c.jpg"></p>
<p class="article_img_desc">
        <em>读取加密文件会产生乱码</em></p>
<p>
        现在让我们删除未加密的 <code>message.txt</code> 文件,这样你就可以看到 <code>message.txt.gpg</code> 文件实际上在没有原始文件的情况下也能正常解密。</p>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/da4ad208b6dbc6df0dbf3a993a1a0f4d.jpg"></p>
<h4 class="mume-header" id="%E7%AC%AC%E5%9B%9B%E6%AD%A5%E7%94%A8-gpg-%E8%A7%A3%E5%AF%86%E5%8A%A0%E5%AF%86%E7%9A%84%E6%96%87%E4%BB%B6">
        第四步:用 GPG 解密加密的文件</h4>
<p>
        最后,让我们来实际解密加密的信息。你可以用下面的命令来做。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">gpg </span><span class="pun">--</span><span class="pln">decrypt </span><span class="pun">--</span><span class="pln">output </span><span class="kwd">file</span><span class="pln"> </span><span class="kwd">file</span><span class="pun">.</span><span class="pln">gpg</span></code>
</li>
</ol>
<p>
        通过这里的参数,我们首先指定 <code>—decrypt</code>,它告诉 GPG 你将会解密一个文件。</p>
<p>
        接下来,你输入 <code>—output</code> 文件,这只是告诉 GPG,在你解密后,你将把我们文件的解密形式保存到哪个文件。</p>
<p>
        最后,你输入 <code>file.gpg</code>,这是你的加密文件的路径。</p>
<p>
        按照这个例子,我使用的命令是这样的。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">gpg </span><span class="pun">--</span><span class="pln">decrypt </span><span class="pun">--</span><span class="pln">output message</span><span class="pun">.</span><span class="pln">txt message</span><span class="pun">.</span><span class="pln">txt</span><span class="pun">.</span><span class="pln">gpg</span></code>
</li>
</ol>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/6391ccb55ee7b18f0c6336e326680137.jpg"></p>
<p class="article_img_desc">
        <em>用GPG解密文件</em></p>
<p>
        然后就完成了!当你想用 GPG 加密和解密文件时,这就是全部内容了。</p>
<p>
        剩下你可能想知道的是如何与他人分享你的公钥,以便他们在将文件发送给你之前对其进行加密。</p>
<h3 class="mume-header" id="%E5%8F%91%E9%80%81%E5%92%8C%E6%8E%A5%E6%94%B6-gpg-%E5%AF%86%E9%92%A5">
        发送和接收 GPG 密钥</h3>
<p>
        要给别人发送一个 GPG 密钥,你首先需要从你的<strong>钥匙链</strong>中导出它,它包含了你所有的公钥和私钥。</p>
<p>
        要导出一个密钥,只需在你的钥匙链中找到密钥的 ID,然后运行以下命令,用密钥的 ID 替换 <code>id</code>,用你想保存的文件名替换 <code>key.gpg</code>。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">gpg </span><span class="pun">--</span><span class="pln">output key</span><span class="pun">.</span><span class="pln">gpg </span><span class="pun">--</span><span class="kwd">export</span><span class="pln"> </span><span class="kwd">id</span></code>
</li>
</ol>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/62814d5abe63ee208b3e6bd4e432a0d7.jpg"></p>
<p class="article_img_desc">
        <em>导出 GPG 公钥</em></p>
<p>
        要导入一个密钥,只需把输出文件(来自前面的命令)给其他用户,然后让他们运行下面的命令。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">gpg </span><span class="pun">--</span><span class="kwd">import</span><span class="pln"> key</span><span class="pun">.</span><span class="pln">gpg</span></code>
</li>
</ol>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/208e67fdbf7e8d515056282c2cc680ca.jpg"></p>
<p>
        但要正常使用该密钥,你需要验证该密钥,以便 GPG 正确地信任它。</p>
<p>
        这可以通过在其他用户的系统上使用 <code>--edit-key</code> 参数来完成,然后对密钥进行签名。</p>
<p>
        首先运行 <code>gpg --edit-key id</code>:</p>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/c051febcbdcc49b59ad74143c90a2c41.jpg"></p>
<p class="article_img_desc">
        <em>GPG 编辑密钥</em></p>
<p>
        接下来,使用 <code>—fpr</code> 参数,它将显示密钥的指纹。这个命令的输出应该与你自己机器上的输出进行验证,这可以通过在你的系统上运行同样的 <code>--edit-key</code> 参数来找到。</p>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/e56a368e029779e288fc1b040b767f00.jpg"></p>
<p class="article_img_desc">
        <em>GPG 密钥的指纹</em></p>
<p>
        如果一切吻合,只需使用 <code>—sign</code> 参数,一切就可以开始了。</p>
<p>
        <img title="手把手教您在 Linux 上使用 GPG 加解密文件" alt="手把手教您在 Linux 上使用 GPG 加解密文件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/785ebc85a7822e364cf49d2f512d5254.jpg"></p>
<p class="article_img_desc">
        <em>签署 GPG 密钥</em></p>
<p>
        就是这样!其他用户现在可以开始用你的公钥加密文件了,就像你之前做的那样,这可以确保它们只有在你用你的私钥解密时才能被你读取。</p>
<p>
        这就是使用 GPG 的所有基础知识!</p>
<h3 class="mume-header" id="%E6%80%BB%E7%BB%93">
        总结 </h3>
<p>
        现在你已经了解了开始使用 GPG 所需要的一切,包括为自己和他人加密文件。正如我前面提到的,这只是为了了解 GPG 的加密和解密过程是如何工作的。你刚刚获得的基本 GPG 知识在应用于真实世界的场景中时可以更上一层楼。</p>
<p>
        原文链接:https://linux.cn/article-14082-1.html</p>
頁: [1]
查看完整版本: 手把手教您在 Linux 上使用 GPG 加解密文件