GPG-命令基本使用
介绍
GPG, GNU Privacy Guard, 是一个用于数据加密和数字签名的工具, 它实现了 OpenPGP 标准 (包括公钥加密, 对称加密, 数字签名, 压缩, 密钥管理等).
安装
在 Archlinux 上为:
1 |
|
其同时也会安装 pinentry
, 用于为各种环境提供密码输入的界面.
基本使用
创建 GPG 密钥对
1 |
|
之后会先要求输入 user ID:
然后是 Email address:
之后会进行确认:
(确认的话输 O
即可)
注意, 如果没有安装 pinentry
的话, 到这里程序会中断:
1 |
|
此时安装后重新生成密钥对.
之后会要求输入一个密码以保护生成的 gpg 密钥对 (对称加密):
注意若隔了一段时间没输入, 则会 timeout 然后退出:
1 |
|
输入密码后, 则会生成密钥对.
1 |
|
这里的:
trustdb.gpg
文件, 用来存储密钥信任度信息的数据库文件. 信任数据库包含了你对各个公钥所有者身份的信任程度, 以及你对他们签名准确性的信任程度. 这个数据库用于决定哪些密钥是可以信任的, 哪些是不可信的revocation certificate
(撤销证书), 指一个特殊类型的证书, 用于在你的私钥丢失或被盗的情况下, 使你的公钥失效. 撤销证书应当被安全地存储在一个只有你可以访问的地方. 当你需要使你的公钥失效时 (例如, 你的私钥被盗或丢失), 你可以发布你的撤销证书. 一旦发布, 任何看到这个撤销证书的人都会知道你的公钥不再可用openpgp-revocs.d
目录, 用于存储撤销证书. 每当你创建一个新的 GPG 密钥对时, GnuPG 会自动为你生成一个撤销证书, 并将其存储在这个目录中
加密/解密一个文件
默认是 AES (Advanced Encryption Standard) 对称加密 (用什么加密就用什么解开) 如:
1 |
|
命令运行后, 会随机生成一个会话密钥, 用于实际加密文件内容, 然后会调用 pinentry
来获取密码输入, 用这个密码加密会话密钥, 连同加密的文件内容存储在 .gpg
文件中.
而 .gpg
文件的结构大致如:
- 文件头部, 包含 GPG 版本信息和加密算法等元数据
- 用输入的密码加密的会话密钥。
- 用会话密钥加密的文件内容
解密如:
1 |
|
这会将解密文件内容输出到终端.
非对称加密
如:
1 |
|
-e
, 指--encrypt
.-r
, 指--recipient
, 用于指定接收者的公钥 ID 或者与其关联的电子邮件地址.
当你创建一个 GPG 密钥对时, 你需要提供一个用户 ID, 这通常是你的姓名和电子邮件地址. 例如, 可能会创建一个这样的用户 ID: "Alice <alice@example.com>"
. 在这个例子中, Alice
是姓名, alice@example.com
是电子邮件地址.
而在指定公钥时, 则可以用用户 ID 来指定, 如: gpg -e -r "Alice <alice@example.com>" myfile.txt
.
除了用户 ID, 每个 GPG 密钥也有一个唯一的密钥 ID. 例如, 一个密钥 ID 可能是 0x12345678
. 你也可以使用这个密钥 ID 来指定一个公钥. 例如, 你可以使用 gpg -e -r 0x12345678 myfile.txt
.
解密用:
1 |
|
-d
, 指--decrypt
.
此时 GPG 会在 ~/.gnupg/
目录下查找并使用相应的私钥解密.