GPG 全称 GNU Privacy Guard,也常被称为 GnuPG。它是一款开源免费的密码学软件,主要用于:

  • 加解密通信内容或文件;
  • 数字签名和验证。

由于近期部署了密码管理器 Vaultwarden,需要对其数据进行加密备份,所以选择了 GPG。

安装 GPG

基于Debian系统。

1
apt install gnupg

创建/备份 GPG 公钥私钥

  1. 创建公钥私钥,按照提示进行操作,并 记住后面要求输入的秘密
1
gpg --full-generate-key
  1. 导出公钥:
1
gpg -a --export > some1-public-key.asc
  1. 导出私钥:
1
gpg -a --export-secret-keys > some1-private-key.asc
  1. 导出信任库
1
gpg --export-ownertrust > some1-owner-trust.txt

步骤 2~4 可一键操作:gpg --output some1-backup-keys.pgp --armor --export-secret-keys --export-options export-backup some1@your.mail

示例邮箱记得替换为自己使用的邮箱。

还原备份

  1. 导入公钥私钥:
1
gpg --import [公钥私钥文件路径]
  1. 导入后验证公钥指纹,确保未被篡改防止中间人攻击:
1
gpg --fingerprint <key_id_or_email>
  1. 设置公钥的信任级别(Owner Trust)。导入公钥后,GPG 默认对它的信任级别为“未知”,需要手动设置对该公钥所有者的信任级别,以便 GPG 能够正确地在信任网络中评估其签名的有效性:
1
2
gpg --edit-key <key_id_or_email>

接着在交互式界面中输入:trust,并选择信任级别。

额外操作

  • 将公钥文件内的内容编码为 base64,这是在备份 Vaultwarden 数据时所需要的公钥格式:
1
base64 ./some1-public-key.asc > some1-public-key-base64.txt

使用 GPG 加解密

  • 使用公钥 ID 或者邮箱加密文件,如plain.txt
1
gpg --output encrypt.gpg --encrypt --recipient some1@your.mail  plain.txt
  • 使用公钥文件方式加密文件:
1
gpg --batch --no-options --no-tty --yes --recipient-file ./some1-public-key.asc -o encrypted.txt.gpg --encrypt plain.txt
  • 解密,并按照提示输入密钥秘密:
1
gpg -o decrypt.md --decrypt encrypted.md.gpg

解压 .tar.xz 文件:tar -xJf some.tar.xz