以前虽然听说过PGP,但是一直没有上手操作过,最近略微“深入”的接触了一下,稍微记录一下,供有兴趣的朋友参考。

GPG和PGP有一些不同,GPG(GNU Privacy Guard)和PGP(Pretty Good Privacy)都是加密技术,用于数据加密和数字签名,以确保信息安全和身份验证。主要区别在于,GPG是PGP的一个自由和开源替代品,遵循OpenPGP标准,而PGP最初是专有的,现在由Symantec公司维护。

一、主要用途

1.给文本或者文件签名,比如

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

给这段话签名,是为了证明该文本是由JDZHAO在5月4日发布的。
-----BEGIN PGP SIGNATURE-----

iHUEAREIAB0WIQTLEr80LL/GAfzwNHsGlwnp1It2awUCZjUMzwAKCRAGlwnp1It2
a6QeAQCJ1sLAeb8XjvGU18cGHiRY8MqdHytJQrACw4uyA4ex/AD+IKgQmHqTdNaG
vOq5eGk3UPSqxKyqCAfPexXGm7xIKL8=
=TGfV
-----END PGP SIGNATURE-----

此时,如果你如果保存了我的公钥,那么直接右键全选这段文本,选择Verify signature,就可以弹出“可信签名”信息,对文件的操作也是一个意思。
GPG签名

2.加密文本或文件

如图,如果需要对文本进行加密,直接在任意文本编辑器中,输入要加密的文本,然后选择encrypt selection即可。

GPG加密解密

要注意的是,你的签名,必须有一个“收件人”,比如,你下载了博主的公钥,然后收件人选择博主,并用你的私钥加密,那么博主用自己的私钥就可以解密该信息并看到。所以,这个操作无法在这里给大家展示,如果想尝试的朋友,可以下载博主的GPG公钥,然后加密给博主,并将加密文本回复在评论区,博主就能回复你获得的加密信息。

二、用什么软件

博主使用的GPG SUITE,下载地址可以去 https://gpgtools.org 即可。其他的请大家自己尝试。

三、要注意的点

有一些需要注意的点,如果弄错了就很麻烦。

1.使用GPG SUITE创建私钥时,会自己创建一个子钥用来加密解密,所以不要在已经使用的情况下“不小心”删除自己的子钥,会导致之前的信息无法获取。

2.推荐创建两条子钥,一条子钥用来签名,DSA加密,这样签名的长度比较友好,适合网页发布。一条子钥用来加密解密。原因见下:

选择RSA还是DSA取决于你的具体需求和环境。下面是一些考虑因素:

  1. 密钥长度和性能:RSA密钥长度通常比DSA密钥长,这可能会导致RSA在加密和解密时更消耗计算资源。如果你需要更高性能的加密操作,可以考虑使用DSA。但是请注意,密钥长度与安全性直接相关,密钥越长,破解难度越大。
  2. 支持性:RSA是更广泛支持的加密算法,许多加密库和软件都提供了对RSA的支持。DSA的支持相对较少。如果你需要与不同系统或软件进行交互,RSA可能是更好的选择。
  3. 安全性:RSA和DSA在安全性上都是被广泛接受的算法,但在某些特定情况下可能存在一些差异。一般来说,RSA在密钥长度相同时可能比DSA更易受到某些攻击,因此在选择算法时需要考虑你所处的安全环境和对安全性的要求。
  4. 签名性能:DSA在生成和验证签名时通常比RSA更快。如果你的应用程序需要频繁地进行签名操作,可能会更倾向于使用DSA。

如果你更关注性能和密钥长度较短的情况下,DSA可能更合适。但是,如果你需要更广泛的支持、更高的安全性或者在密钥长度方面有更大的选择余地,那么RSA可能是更好的选择。

3. 公钥需要进行发布,让需要和你交流的下载才能使用。所以,最好在配置好自己的GPG私钥后再导出公钥进行发布,GPG SUITE也提供了https://keys.openpgp.org 进行公钥的发布,主ID是邮箱,并要经过你的邮箱邮件验证后才进行发布,比较靠谱,但是我没有使用。可以尝试把自己的公钥公布在自己的网站或者github上,也比较方便。我选择公布在 https://key.jdzhao.comhttps://github.com/zhaojundong/me

4.还有Yubico等一些导入硬件KEY的玩法,博主尝试了yubico 5 ,但是感觉不方便,而且博主买的2个都不是type-c口,现在的笔记本有没有A口,算了,就不增加麻烦系数了。

5.如果你想用来给GITHUB签名,需要你的公钥的邮箱和github一致,GPG可以添加多个USERID(也就是多个邮箱),GITHUB也要验证多个邮箱,所以不要添加太多。

GITHUB签名

6.签名或者加密信息对格式要求很严格,如果要发布在网页中,请注意排版,比如我使用了“代码”模式,或者<pre>标签。

Comments (5)

  1. 回复

    博主的笔记本应该是轻薄本吧,近几年轻薄本都有不断缩减a口的趋势。
    其实用硬件密钥给我带来的便利更多的是在签名和认证中,加密我倒是用的很少,例如在其他电脑上进行ssh登录,git commit签名,fido免密登录或者2fa。因为我的密码基本上都是保存在keepass密码库内并且长度均为16+以上,要是手动输入简直就是一场灾难

    • 回复

      我用的是enpass,原来打折的时候买的,就一直用下来了
      加密我只是弄着把玩一下,因为突然觉得非常有趣
      哈哈~

      • 回复

        我主要是觉得keepass方便,就一个文件,不用部署任何服务,迁移方便,同步也只需要一个webdav即可,扔在onedrive上都行

        • 回复
          -----BEGIN PGP SIGNED MESSAGE-----
          Hash: SHA256
          
          enpass也是差不多的
          我以前也用过一段时间Keepass,因为跨平台很方便
          然后换成lastpass,后来觉得联网不安全
          就又换成enpass了,同步也在onedrive
          偶尔导一个到icloud备份一个
          -----BEGIN PGP SIGNATURE-----
          
          iHUEAREIAB0WIQTLEr80LL/GAfzwNHsGlwnp1It2awUCZjZSOgAKCRAGlwnp1It2
          a8KuAP9N0tT6TZzxuvWQA9iXK/tlXC/POU2i8x7g9iFpUNJHdQD/aatWGFsCO7pU
          EbuEIrCWquM/GW6AdOKqJyhdJDxpoT4=
          =Vz59
          -----END PGP SIGNATURE-----
          
        • 回复
          -----BEGIN PGP SIGNED MESSAGE-----
          Hash: SHA256
          
          不加Pre标签不行呢
          刚刚没加pre标签,用签名回复你,格式肉眼不可见的变化一点
          就verify不了签名了
          -----BEGIN PGP SIGNATURE-----
          
          iHUEAREIAB0WIQTLEr80LL/GAfzwNHsGlwnp1It2awUCZjZS1QAKCRAGlwnp1It2
          axLjAQCR9aC614vffbgwUFQyqcZShQCSlL8ywNe+KvaY2K6S7AD/YS3PTRa+TPa7
          YhDctSVnvkDVY5Z2F8ZZ0hppEitWIG0=
          =pGBw
          -----END PGP SIGNATURE-----
          

Leave a comment

您的电子邮箱地址不会被公开。 必填项已用*标注

zh_CNZH_CN