简介
GnuPG
是 RFC4880 定义的 OpenPGP 标准(也称为 PGP)的完整且免费的实现。GnuPG 允许您加密和签署您的数据和通信;它具有多功能的密钥管理系统,以及用于各种公钥目录的访问模块。GnuPG,也称为 GPG,是一种命令行工具,具有易于与其他应用程序集成的功能。提供了丰富的前端应用程序和库。GnuPG 还提供对 S/MIME 和安全外壳 (ssh) 的支持。
自 1997 年推出以来,GnuPG 是自由软件(这意味着它尊重您的自由)。它可以根据 GNU 通用公共许可证的条款自由使用、修改和分发。
GnuPG 是一个没有任何图形用户界面的命令行工具。它是一个通用的加密引擎,可以直接从命令行提示符、shell 脚本或其他程序使用。因此,GnuPG经常被用作其他应用程序的实际加密后端。
即使在命令行上使用,它也能提供所需的所有功能 - 这包括交互式菜单系统。此工具的命令集将始终是任何前端提供的命令的超集。
GPG(GNU Privacy Guard)
是一种用于数据加密和签名的自由软件工具,遵循OpenPGP标准。它是由GNU项目开发的,主要用于保护电子邮件和文件的安全。
功能
-
数据加密:GPG可以对文件和电子邮件进行加密,确保只有授权的接收者能够读取内容。它使用对称和非对称加密算法,常用的算法包括
AES、RSA
等。- 对称加密:使用单一密钥对数据进行加密和解密,适合对称密钥分发的场景。
- 非对称加密:使用一对公钥和私钥进行加密和解密。公钥用于加密数据,私钥用于解密数据。
-
数字签名:GPG允许用户对文件和电子邮件进行数字签名,确保数据未被篡改,并验证发送者的身份。签名可以防止内容在传输过程中被修改。
- 签名数据:数字签名确保数据来源的真实性和数据的完整性。签名可以应用于文件、电子邮件等各种数据。
- 验证签名:接收者可以使用发送者的公钥来验证数据的签名,确认数据未被篡改。
-
密钥管理:GPG提供全面的密钥管理功能,包括生成、分发、撤销和存储密钥。用户可以生成公钥和私钥对,其中公钥用于加密和验证签名,私钥用于解密和创建签名。
- 生成密钥对:用户可以生成自己的公钥和私钥对。
- 导入和导出密钥:支持从文件或剪贴板导入和导出公钥和私钥。
- 密钥服务器:GPG允许将公钥上传到密钥服务器,方便其他人获取。
-
跨平台支持:
- GPG与多种操作系统兼容,包括Linux、Windows和macOS。
- 支持与其他OpenPGP兼容的软件进行互操作。
-
命令行工具:GPG主要通过命令行界面使用,但也有许多图形化界面和插件可供选择,使其更易于使用。
用途
- 电子邮件加密:保护电子邮件内容的隐私,防止被未授权人员读取。
- 软件签名:验证软件包和源代码的真实性,确保软件没有被恶意篡改。
- 文件保护:对重要文件进行加密,防止敏感信息泄露。
例子:
- Git:Git 是一个流行的分布式版本控制系统,它可以使用 GPG 签名来验证提交者的身份。使用 GPG 签名可以确保代码提交的完整性和作者的身份。
# 配置 Git 使用 GPG 签名
git config --global user.signingkey <your-key-id>
git config --global commit.gpgsign true# 签署提交
git commit -S -m "Your commit message"
- Docker:GPG 在 Docker 中的应用包括签名镜像和验证签名镜像。通过对镜像进行签名,开发者可以保证镜像在发布后未被篡改,用户在拉取镜像时可以验证其来源和完整性。
# 签名镜像
export DOCKER_CONTENT_TRUST=1
docker push your-repo/your-image:tag
# 拉取并验证镜像
export DOCKER_CONTENT_TRUST=1
docker pull your-repo/your-image:tag
Ubuntu使用例子
sudo apt-get install gnupg# 生成密钥对,按照提示输入你的信息,如姓名、电子邮件和密码。
gpg --gen-key
# 以获得一个全功能的密钥生成对话框。
gpg --full-generate-key# 列出公钥pub
gpg --list-keys
# 列出私钥sub
gpg --list-secret-keys# 使用接收者的公钥加密文件
gpg --encrypt --recipient recipient@example.com file.txt# 使用私钥解密文件
gpg --decrypt file.txt.gpg# 对文件进行数字签名
gpg --sign file.txt# 验证签名
gpg --verify file.txt.gpg
Ubuntu中主要路径和文件
不做密钥配置安装以后,默认会有公钥环文件,密钥指纹缓存文件
- 公钥环文件:
路径:~/.gnupg/pubring.kbx
说明:存储用户的公钥。
- 私钥环文件:
路径:~/.gnupg/private-keys-v1.d/
说明:存储用户的私钥。每个私钥都是一个单独的文件,文件名是以其KeyID命名的。
- 配置文件:
路径:~/.gnupg/gpg.conf
说明:GPG的配置文件,可以在此文件中设置GPG的默认行为。
- 密钥指纹缓存文件:
路径:~/.gnupg/trustdb.gpg
说明:存储用户信任的密钥的信任度信息。
- 随机数种子文件:
路径:~/.gnupg/random_seed
说明:用于生成加密操作所需的随机数。
参考:
GPG官网
Ubuntu使用GPG