PGP、OpenPGP、GnuPG

907 阅读3分钟

PGP

1991年美国的菲利普·齐默曼(Philip R. Zimmermann) 为了在网络中保护个人隐私,开发了一套用于讯息加密、验证的程序,并取名为 PGP(Pretty Good Privacy) ,中文译名 优良保密协议

1991年6月,菲利普·齐默曼(Philip R. Zimmermann)将 PGP 程序及源码发布在互联网上,并且规定非商业用途不需要授权,也无须任何费用。很快 PGP 在互联网上传播开来,并在发行后不久,走出了美国

1993年2月, 菲利普·齐默曼(Philip R. Zimmermann) 因涉嫌违反《武器出口管制法》遭到美国海关总署的刑事调查。当时美国出口管理法案中的规定,加密系统使用大于40位的密钥将被认为是军需品。而 PGP 使用的密钥大于128位。调查持续了三年,但调查期间美国提高了合法出口允许的最大限制,于是在1996年政府于因无须起诉而撤销了此案。

1996年,政府撤诉后,菲利普·齐默曼(Philip R. Zimmermann) 成立了**PGP Inc.**公司,并发布了 PGP 的更新版本和一些其他相关产品。

1997年7月PGP Inc.菲利普·齐默曼(Philip R. Zimmermann) 同意国际互联网工程任务组(The Internet Engineering Task Force,IETF) 制定一项公开的互联网标准,名为 OpenPGP,任何支持这一标准的程序也被允许称作 OpenPGP

1997年12月, PGP Inc. 公司及其知识产权被 Network Associates Inc(NAI) 收购,NAI 继续拥有和开发用于商业和免费软件的 PGP 产品

OpenPGP

OpenPGP 是一项用于讯息加密的互联网标准,最初是Network Associates Inc(NAI) 的 PGP 加密协议的开放标准版本。由国际互联网工程任务组(The Internet Engineering Task Force,IETF) 管理。

OpenPGP 的主要目的是端到端加密电子邮件通信,但它也用于加密消息传递和文件等。

1996 年的 RFC1991 中对 PGP 的消息格式进行了定义。

2007 年的 RFC4880 中新增了对 RSA 和 DSA 的支持。

2012 年的 RFC6637 新增了对椭圆曲线密码(ECC)的支持,并且还支持基于 Curve P-256、P-384 和 P-521 三种椭圆曲线的椭圆曲线 DSA 和椭圆曲线 DH 密钥交换。

GnuPG

GnuPG(GNU Privacy Guard) 是 GNU(自由软件)社区,对 OpenPGP 的RFC4880标准的完整实现。

大多数人喜欢称 GnuPG 为 GPG,而我更喜欢称 GnuPG,因为 GNU 代表着一种自由的精神。

GnuPG 允许您对数据和通信进行加密和签名,它具有通用的密钥管理系统以及用于各种公钥目录的访问模块,。GnuPG 还提供对 S/MIME 和 ssh(Secure Shell) 的支持。

自1997年推出以来,GnuPG 就是自由软件(意味着它尊重您的自由),你可以根据 GNU 通用公共许可证的条款自由使用,修改和分发。

由于自由软件的特性,GnuPG 在网络中被广泛的使用,一个常见的使用场景是各类it相关的软件在下载时,都会提供一个 GPG 软件签名,以防止发布的软件被篡改

例如 Maven 的下载界面,就提供了软件对应的 GnuPG 签名

以下是 apache-maven-3.6.3-bin.zip 签名的内容

-----BEGIN PGP SIGNATURE-----

iHUEABEKAB0WIQSwITfYddgz2bIzkuyuWn+2CKAiHAUCXdRESQAKCRCuWn+2CKAi
HD8UAQCgvWcZmgWf/afuZHleaG0O4g6ZeR3F6nMrYiZS1BAmzgEAp4E963ruFFxh
pcXUZkEE6T1bHtRlHnJ8cETZLprtuug=
=Oxpf
-----END PGP SIGNATURE-----

当你下载完成后,可以使用 GnuPG 对 maven软件包和对应的签名进行校验,查看软件是否被篡改

参考

PGP中文wiki
菲利普·齐默曼(Philip R. Zimmermann) wiki
我为什么写PGP
OpenPGP官网
RFC 6637 GnuPG 官网
GNU 官网