Facebook 允许用户
将 OpenPGP 公钥添加到他们的个人资料中;这些密钥可用于“端到端”加密从 Facebook 发送到您首选电子邮件帐户的通知电子邮件。–保护来自 Facebook 的电子邮件通信
Facebook 在https://www.facebook.com/facebook/publickey/download/提供了一个公钥 (0x2F3898CEDEE958CF)
关于我的帐户的“加密通知”已通过 Facebook (noreply@facebookmail.com) 的电子邮件反复发送给我。这些电子邮件使用我上传到 Facebook 的公钥加密。这些电子邮件的签名密钥 (0x3028CF59770E7A01) 不是 Facebook 提供的密钥 (0x2F3898CEDEE958CF)。当我尝试使用 Enigmail 导入密钥 0x3028CF59770E7A01 时,会显示以下通知:
ID 为 0x3028CF59770E7A01 的密钥在密钥服务器上不可用。最有可能的是,密钥的所有者没有将他们的密钥上传到密钥服务器。
请要求消息的发件人通过电子邮件向您发送他们的密钥。
我的主要问题:如何验证来自 Facebook 的电子邮件签名?
顺便说一句:为什么 Facebook 会使用产生无法验证的签名的密钥?
更新
在密钥服务器上查找密钥 0x2F3898CEDEE958CF(参见例如keyserver.ubuntu.com)将显示最近包含的子密钥 0x3028CF59770E7A01:
sub rsa4096/3028cf59770e7a01 2019-07-08T16:09:07Z
sig sbind 2f3898cedee958cf 2019-07-08T16:09:07Z ____________________ 2020-01-04T20:00:00Z []
Run Code Online (Sandbox Code Playgroud)
这与 Facebook 在其帖子保护来自 Facebook 的电子邮件通信中提供的信息一致
Facebook 的 OpenPGP 密钥包含一个长期主密钥和短期子密钥;这使我们能够经常轮换我们的操作密钥,同时随着时间的推移保持信任网络和一致的身份。
然而,这个子密钥显然不是公开的,并且尝试从密钥服务器接收这个丢失的密钥失败。
gpg: Signature made Di 06 …Run Code Online (Sandbox Code Playgroud)