OpenPGP 包括密钥管理
从RFC 4880 的介绍开始,OpenPGP(突出显示是我):
OpenPGP 软件结合使用强公钥和对称加密技术,为电子通信和数据存储提供安全服务。 这些服务包括机密性、密钥管理、身份验证和数字签名。
换句话说,OpenPGP 不仅仅是发送加密消息,而是围绕密钥管理提供了更大的功能集。密钥管理意味着可以在密钥服务器上查找您的密钥(但它们没有在那里经过身份验证!),而且 OpenPGP 的用户也可以在他们的 OpenPGP 密钥之间颁发证书以确保真实性(例如,阅读密钥签名方)。所有这些都需要键附有名称。
“匿名”OpenPGP 密钥
为什么要求我提供姓名或电子邮件?
您不必这样做(尽管 OpenPGP 的某些实现会这样做):OpenPGP 密钥可能存在没有用户 ID,并且可以任意设置所有日期(尽管必须提供密钥创建时间戳,但您可以只提供一个时间戳 0 等于 1970-01-01)。
考虑密钥不会附加任何用户信息:您必须手动交换由数千个随机字节组成的整个密钥,如果您想使用它,必须以某种方式将其连接到一个身份。
另一个可疑的事情是密钥应该在什么时间过期。密钥中是否包含有关到期日期的信息(我认为不是)?那么密钥是存储在某处的服务器上还是什么?它是如何工作的?
不需要到期日期,您可以让它们永远有效。实际上,到期日并没有真正增加安全性,尽管如此,它可能是合理的。
您必须区分实际的公钥/私钥对(例如,用于 RSA 的素数)和 OpenPGP 密钥。OpenPGP 密钥由加密作品的数字组成,还包括用户 ID、证书和到期日期等设置等附加信息。您可以通过运行轻松查看 OpenPGP 密钥中的所有信息
gpg --export [key-id] | gpg --list-packets
(可能需要阅读上面链接的 RFC 4880 中的一些内容才能合理理解输出)。
OpenPGP 是分布式的
我问的原因是整个 PGP 事情似乎比我想象的更集中。
OpenPGP 环境中没有中心实例。密钥通过分散的密钥服务器网络进行交换,信任通过 OpenPGP 信任网络验证,而不是像 X.509 中已知的分层 PKI 系统(用于 S/MIME、TLS 等)。
OpenPGP 社区中有一些相当中央的权威机构:CAcert、德国 Heise Verlag 和 Governikus 等为新的德国数字身份证持有人颁发证书的证书权威机构存在,但您不需要使用(或信任)它们。密钥服务器网络( SKS 池)中有一些相当集中的协调,但您也可以选择任意服务器,根本不使用密钥服务器,甚至托管自己的服务器!
OpenPGP 是一个开放标准
为什么 PGP 软件不能只有一个“生成新密钥”按钮来生成公钥和私钥供我复制和使用(当然还有加密/解密文本的选项)?
OpenPGP 是一个开放标准。如果有人希望软件能够做到这一点(正如我已经提到的,OpenPGP 标准允许相当“普通”的密钥而没有大量元信息),欢迎您这样做。此类软件不存在(或未广为人知)的原因是人们看不到编写或拥有此类软件的充分理由。
如果您只想使用没有任何密钥管理和高级 OpenPGP 功能的 RSA 和 AES,那么您最好只使用更原始的标准。