zoukankan      html  css  js  c++  java
  • 关于 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/
    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/

  • 相关阅读:
    【LOJ6041】「雅礼集训 2017 Day7」事情的相似度(用LCT维护SAM的parent树)
    【BZOJ1171】大sz的游戏(线段树+单调队列)
    2019年4月训练记录(4.07~4.22)
    【BZOJ4766】文艺计算姬(prufer序列)
    【BZOJ4573】[ZJOI2016] 大森林(LCT)
    2019.03.19 ZJOI2019模拟赛 解题报告
    【牛客挑战赛30D】小A的昆特牌(组合问题抽象到二维平面)
    【洛谷2624】[HNOI2008] 明明的烦恼(Python+利用prufer序列结论求解)
    【洛谷2290】[HNOI2004] 树的计数(Python+利用prufer序列结论求解)
    初识prufer序列
  • 原文地址:https://www.cnblogs.com/Irving/p/13376921.html
Copyright © 2011-2022 走看看