关于 PGP 加密与签名相关整理
PGP(英语:Pretty Good Privacy,直译:优良保密协议)是一套用于消息加密、验证的应用程序。PGP的主要开发者是 Phil Zimmermann 于 1991 年将 PGP 在互联网上免费发布。PGP 本身是商业应用程序;开源并具有同类功能的工具名为 GnuPG(GNU Privacy Guard)或 GPG 是一个密码学软件,用于加密、签名通信内容及管理非对称密码学的密钥。GnuPG 是自由软件,遵循 IETF 订定的 OpenPGP 技术标准设计,并与 PGP 保持兼容。GnuPG 是自由软件基金会的 GNU 计划的一部分,曾受德国政府资助。PGP 及其同类产品均遵守 OpenPGP 数据加解密标准(RFC 4880)。
# 查看版本 (base) ➜ ~ gpg --version gpg (GnuPG/MacGPG2) 2.2.20 libgcrypt 1.8.5 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Home: /Users/Irving/.gnupg 支持的算法: 公钥: RSA, ELG, DSA, ECDH, ECDSA, EDDSA 密文: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 散列: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 压缩: 不压缩, ZIP, ZLIB, BZIP2 # 生成秘钥 (base) ➜ ~ gpg --gen-key gpg (GnuPG/MacGPG2) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. 注意:使用 “gpg --full-generate-key” 以获得一个功能完整的密钥产生对话框。 GnuPG 需要构建用户标识以辨认您的密钥。 真实姓名: irving 电子邮件地址: irving@gmail.com 您选定了此用户标识: “irving <irving@gmail.com>” 更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? o 我们需要生成大量的随机字节。在质数生成期间做些其他操作(敲打键盘 、移动鼠标、读写硬盘之类的)将会是一个不错的主意;这会让随机数 发生器有更好的机会获得足够的熵。 我们需要生成大量的随机字节。在质数生成期间做些其他操作(敲打键盘 、移动鼠标、读写硬盘之类的)将会是一个不错的主意;这会让随机数 发生器有更好的机会获得足够的熵。 gpg: 密钥 5D7B4370264FC353 被标记为绝对信任 gpg: 目录‘/Users/Irving/.gnupg/openpgp-revocs.d’已创建 gpg: 吊销证书已被存储为‘/Users/Irving/.gnupg/openpgp-revocs.d/892E99993AFF7612B367F2B65D7B4370264FC353.rev’ 公钥和私钥已经生成并被签名。 pub rsa2048 2020-07-25 [SC] [有效至:2022-07-25] 892E99993AFF7612B367F2B65D7B4370264FC353 uid irving <irving@gmail.com> sub rsa2048 2020-07-25 [E] [有效至:2022-07-25] # 制作一张吊销证书,用于密钥作废,请求外部公钥服务器撤销你的公钥 (base) ➜ ~ gpg --gen-revoke 5D7B4370264FC353 sec rsa2048/5D7B4370264FC353 2020-07-25 irving <irving@gmail.com> 要为这个密钥创建一个吊销证书吗?(y/N) y 请选择吊销的原因: 0 = 未指定原因 1 = 密钥已泄漏 2 = 密钥被替换 3 = 密钥不再使用 Q = 取消 (也许您会想要在这里选择 1) 您的决定是什么? 2 请输入描述(可选);以空白行结束: > 吊销 吊销原因:密钥被替换 吊销 这样可以吗? (y/N) y 已强行使用 ASCII 字符封装过的输出。 -----BEGIN PGP PUBLIC KEY BLOCK----- Comment: This is a revocation certificate iQE8BCABCAAmFiEEiS6ZmTr/dhKzZ/K2XXtDcCZPw1MFAl8b4mEIHQHlkIrplIAA CgkQXXtDcCZPw1M1YQgA5p15cok9rDsg5Ar8G2Z6U3RI1DfcPshZ9+SiamddwFau qtcSH7RHjIk/jj76WhUJbz8cdAemy6poJNdxIN9RH5/FTvMKqtxqkTP1MYy5MX2S 4orUz0sWAfX8ZJ19/FqG8XbjiEFNahAg5gNJ4x8D+Kd5v7/SSVVb5Gsv27LVB1CM wrKAPKmbrI8LAsn0Pm4sQOvSNUXh/O+0xf5zyyPk+BLwi+NhDLITTqblo7Ffom5i qAWJhzmKcJAqHD2eIfUhRkMqaOvaw8nM6QhWRv+26hF1tV2b/X8sNrklorGdSb/Z e3Egtn5ciJ4BOhhc2eBJNEGZDozZrBBBkEbUxYMCUQ== =BKG3 -----END PGP PUBLIC KEY BLOCK----- 已创建吊销证书。 请把这个文件转移到一个您可以藏起来的介质上;如果坏人获取到了这 份证书的话,那么他就能使用它并让您的密钥无法继续使用。把此证书 打印出来再存放到安全的地方也是很好的方法,以免您的保存媒体变得 不可读。但是千万小心:您机器上的打印系统可能会在打印过程中储存 这些数据,并使得其他人看到! # 上传公钥到公共的公钥服务器 (base) ➜ ~ gpg --keyserver keyserver.ubuntu.com --send-keys "5D7B4370264FC353" gpg: 正在发送密钥 5D7B4370264FC353 到 hkp://keyserver.ubuntu.com # 由于任何人都可以用你的名义上传公钥,我们可以生成公钥指纹,好让他人校验 (base) ➜ ~ gpg --fingerprint 5D7B4370264FC353 pub rsa2048 2020-07-25 [SC] [有效至:2022-07-25] 892E 9999 3AFF 7612 B367 F2B6 5D7B 4370 264F C353 uid [ 绝对 ] irving <irving@gmail.com> sub rsa2048 2020-07-25 [E] [有效至:2022-07-25]
REFER:
https://www.gnupg.org/index.html
https://gpg4win.org/download.html
https://gpgtools.org/ (Mac)
https://www.ruanyifeng.com/blog/2013/07/gpg.html
https://www.jianshu.com/p/0e1e66423055
https://wiki.archlinux.org/index.php/GnuPG_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
https://cerb.ai/guides/mail/gpg-setup-on-mac/