GPG 使用

GPG(GnuPG)是一种加密工具,用于数据加密和数字签名。

  • 加密:确保发出的消息,只能被预期的接收者获取
  • 签名:确保收到的消息,确实由预期的发送者发出

文件操作

gpg -s file             # 签名。生成包含明文和签名的 .gpg 二进制文件
gpg --clear-sign file   # 签名。生成包含人类可读明文和签名的 .asc 文本文件
gpg -er <key-id> file   # 加密。生成包含密文的 .gpg 二进制文件
gpg -ser <key-id> file  # 签名并加密
gpg -b file             # 分离签名。生成包含签名的 .sig 二进制文件

gpg --verify file.gpg   # 验签
gpg -d file.gpg > file  # 解密并验签
gpg file.gpg            # 等价于 gpg -d file.gpg > file
  • -s:sign
  • -u:local user,发信人(可选)
  • -e:encrypt
  • -r:recipient,收信人
  • -b:detach sign
  • -d:decrypt
  • -a:armor,输出 .asc 文本文件

<key-id> 可以是名字、邮箱,也可以是指纹。

密钥操作

gpg --gen-key                                    # 生成密钥对
gpg --gen-revoke                                 # 生成撤销证书

gpg -k                                           # 列出公钥
gpg -K                                           # 列出私钥
gpg --fingerprint <key-id>                       # 列出密钥指纹

gpg --export <key-id> > public.gpg               # 导出公钥
gpg --export-secret-keys <key-id> > private.gpg  # 导出私钥
gpg --import <file>                              # 导入密钥

gpg --sign-key <key-id>                          # 对他人的公钥签名

gpg --send-keys <key-id>                         # 上传公钥
gpg --recv-keys <key-id>                         # 下载公钥
gpg --search-keys <key-id>                       # 搜索公钥

gpg --delete-keys <key-id>                       # 删除公钥
gpg --delete-secret-keys <key-id>                # 删除私钥

gpg --edit-key <key-id>                          # 编辑密钥
gpg --passwd <key-id>                            # 更改密钥密码

可以在 ~/.gnupg/dirmngr.conf 文件中指定 keyserver

keyserver hkps://keyserver.ubuntu.com

修改 keyserver 后,需要重启 dirmngr:

gpgconf --kill dirmngr

输出解读

列出所有公钥

$ gpg -k
[keyboxd]
---------
pub   ed25519 2023-12-28 [SC]
      564B356FA6CEDE922C87DDA6ADA20EA03D7C43B
uid           [ultimate] User Name (Default GPG Key) <email@example.com>
sub   cv25519 2023-12-28 [E]
  • pub: 表示一个公钥(pubkey)的记录开始
  • ed25519: 密钥使用的加密算法
  • 2023-12-28: 密钥的生成日期
  • [SC]: 该密钥具有签名(Signing)和认证(Certification)的功能
  • 564B356FA6CEDE922C87DDA6ADA20EA03D7C43B: 密钥指纹
  • uid: 用户身份(User ID)。包括名称和电子邮件地址
  • [ultimate]: 表示信任级别为 “绝对”(ultimate)
  • sub: 表示子密钥(subkey)
  • cv25519: 子密钥使用的加密算法
  • [E]: 该密钥具有加密(Encryption)的功能

列出所有私钥

$ gpg --list-secret-keys
[keyboxd]
---------
sec   ed25519 2023-12-28 [SC]
      564B356FA6CEDE922C87DDA6ADA20EA03D7C43B
uid           [ultimate] User Name (Default GPG Key) <email@example.com>
ssb   cv25519 2023-12-28 [E]
  • sec:表示一个私钥(secret key)的记录开始
  • ssb:私钥的子密钥(secret subkey)

参考:

posted @ 2024-03-21 23:10  Undefined443  阅读(270)  评论(0)    收藏  举报