使用GPG加密解密文件:对称与非对称加密实战指南

本文详细介绍了如何使用GNU Privacy Guard (GPG) 工具对文件进行加密和解密操作。内容涵盖GPG的基本原理、安装方法,并分别通过具体命令行示例,逐步讲解了对称加密和非对称加密(包括密钥对生成)的实际应用流程,适用于保护静态数据与传输中的通信。

如何使用 GPG 加密和解密文件

GnuPG,通常称为 GPG,是 Pretty Good Privacy 加密标准的开源实现。它为静态和传输中的数据提供对称和非对称加密。

本文介绍如何使用 GPG,演示其在常见操作系统上的安装,并提供使用说明。

GPG 如何保护数据?

加密旨在满足以下三个目标:

  • 真实性。保证消息的来源。
  • 完整性。保证消息不会意外更改。
  • 不可否认性。保证消息的来源。

GPG 通过结合对称和非对称加密来保护存储的文件和数字通信,从而满足所有三个目标。

对称和非对称加密是当今安全和隐私策略的关键组成部分。对称加密使用单个私钥(共享密钥)来加密和解密数据,而非对称加密使用数学上相关的公钥和私钥对。用一个密钥加密的数据只能用另一个密钥解密——例如,使用公钥加密的数据只能使用相关的私钥解密。

GPG 结合了这两种方法,使用户能够确保数据隐私、来源和完整性。因此,GPG 被广泛使用和支持。

常见的 GPG 使用场景

考虑以下使用 GPG 保护数据存储和传输的方法:

  • 用于保密性的加密电子邮件。
  • 用于真实性的数字签名电子邮件。
  • 用于数据保密性的加密文件。
  • 数字签名的软件包、脚本和其他应用程序。
  • 数字签名的 Git 提交。

考虑您自己的工作流程,以确定 GPG 可以保护您的信息的其他方式。

安装 GPG

GPG 是免费的开源软件,有助于确保其安全性和稳定性。它适用于常见平台,包括 Linux、macOS 和 Windows。

大多数 Linux 发行版默认包含 GPG。使用 gpg --version 命令验证您是否拥有当前版本。如果 GPG 不存在,请使用您的发行版的首选包管理器。

对于 Ubuntu、Debian、Linux Mint 和类似的发行版,键入:

1
sudo apt install gnupg

在 Red Hat Enterprise Linux、Fedora、Rocky 和类似发行版上,键入:

1
sudo dnf -y install gnupg

macOS 用户可以通过键入以下命令使用 Homebrew 包管理器安装 GPG:

1
brew install gnupg

macOS 用户还可以使用 GPG Suite 图形应用程序来管理加密。

喜欢 Windows 平台的用户可以通过两种方式访问 GPG:GnuPG 二进制文件是 GnuPG 网站的官方安装程序,而 Gpg4win 是图形/命令行应用程序。

如何使用 GPG 进行对称加密

对称加密提供了最直接的管理过程。但是,您必须能够将密钥安全地传送到需要解密的任何远程连接。此方法最适用于单个系统或安全环境内的数据加密场景。

加密文件最简单的方法是使用此命令:

1
gpg -c private-file.txt

这将生成一个名为 private-file.txt.gpg 的加密文件。 GPG 会提示您输入密码来保护文件。

您可以通过使用以下更复杂的命令来指定更多细节,例如特定的文件名:

1
gpg --output new-private-file.txt.gpg --symmetric private-file.txt

然后,要解密 new-private-file.txt.gpg 文件,请键入:

1
gpg --output private-file.txt --decrypt private-file.txt.gpg

您可以用 -o-d 标志替代,以减少输入。GPG 会自动提示您输入为私钥设置的密码。

使用此过程来保护数据备份文件、共享计算机上的机密信息或您传输到远程存储设备以及从远程存储设备传输的资源。

请注意,GPG 在加密过程中会生成文件的新版本。原始的未加密文件仍保留在驱动器上。考虑使用诸如 shred 之类的命令安全地删除它。

如何为非对称加密生成密钥对

通过生成公钥-私钥对来开始使用 GPG。这些密钥在数学上是相关的。使用非对称加密,如果您用一个密钥加密数据,则必须用另一个密钥解密。以下是两种选项的示例:

  • 保密性。使用公钥加密,使用私钥解密。
  • 数字签名、完整性。使用私钥加密,使用公钥解密。

在 Linux 系统上,键入以下命令以生成密钥对:

1
gpg --full-generate-key

您有多种选项可以自定义密钥长度、类型和其他设置。GPG 会提示您输入姓名和电子邮件地址作为密钥身份的一部分。您还可以设置一个强密码来保护您的私钥。

您可能需要与其他用户共享您的公钥,以便他们能够解密使用您的私钥加密的数据。使用以下命令导出所需的公钥信息:

1
gpg --armor --export your-email@example.com > pubkey.asc

如果您收到另一个用户的公钥,或需要向您的公钥接收者提供说明,请使用此命令将其导入您的系统:

1
gpg --import pubkey.asc

通过键入 gpg --list-public-keys 来验证密钥是否存在。用户的公钥使您能够解密使用相关私钥加密的数据。

如何使用 GPG 进行非对称加密

要使用另一个用户的公钥加密文件——从而确保只有该用户能够基于他们拥有相关私钥来解密数据——请键入以下命令:

1
gpg --output secret-file.txt.gpg --encrypt --recipient recipient-email@example.com secret-file.txt

此命令指定加密文件的名称——secret-file.txt.gpg——以及收件人的电子邮件地址——recipient-email@example.com。在此示例中,您正在加密 secret-file.txt 文件。

在数据传输的另一端,用户输入以下命令开始解密过程:

1
gpg --output secret-file.txt --decrypt secret-file.txt.gpg

该用户输入保护其私钥的密码以完成该过程。

将 GPG 加密集成到您的日常工作中可以大大增强数据的安全性。您已经在做备份了,对吧?现在,您可以加密那些备份以获得更大的保密性。您还使用电子邮件处理重要业务。学习如何使用 GPG 对消息进行数字签名,可以为通信增加一个实质性的保护层。

Damon Garn 拥有 Cogspinner Coaction 并提供自由 IT 写作和编辑服务。他编写了多本 CompTIA 学习指南,包括 Linux+、Cloud Essentials+ 和 Server+ 指南,并为 Informa TechTarget、The New Stack 和 CompTIA 博客做出了广泛贡献。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计