帮助 - 有人偷了我的 OpenPGP 密钥 ID,我该怎么办?

信息安全 公钥基础设施 密钥管理 pgp 信任网络
2021-09-02 08:38:58

我收到了一份关键的过渡声明,因为有人发现自己处于与此处描述的完全相同的情况。这个问题将来会针对越来越多的 OpenPGP 用户,甚至可能是所有用户。与其只在私信中回复,不如将其作为问答发布似乎更合理。

有人想攻击我,并劫持了我的 OpenPGP 密钥 ID。当我在0xDEADBEEF密钥服务器上搜索我的短密钥 ID 时,除了我自己的密钥之外,还找到了多个其他密钥。

这怎么发生的?我能做些什么呢?我必须撤销我的密钥吗?

1个回答

OpenPGP 短密钥 ID 很弱

这怎么发生的?

OpenPGP 短密钥 ID 太小,无法提供合理的安全性来抵御冲突攻击。2^32不同的短密钥 ID少之又少,不到 50 亿个。

生成如此大量的密钥将需要大量时间。但是,密钥 ID 是根据 OpenPGP 公钥(例如,RSA 公钥)和密钥生成时间(作为 unix 时间戳,即自 1970-01-01 以来的秒数)计算得出的。这允许将要生成的密钥数量减少几个数量级

使用相当简单的计算机程序,可以轻松生成密钥对,然后迭代所有合理的密钥创建时间值。让我们假设过去五年的合理时期,这意味着 1.5 亿个不同的密钥 ID。可能有点低估(将可能的短密钥 ID 的数量除以每个生成的密钥的密钥 ID 数量),它没有考虑到我们在生成的集合中也会有重复的密钥 ID,假设您只需要生成更少超过 30 个“真实”键,这只是几秒钟或几分钟的事情。

Micah Lee的OHM 2013 演讲Trolling the Web of Trust介绍了这个缺陷以及如何利用它的一些示例实现。Richard Klafter 和 Eric Swanson 使用这种技术复制了完整的强集(最大的一组完全相互连接的密钥,换句话说,大多数活跃的 OpenPGP 用户与其他人进行了相互密钥签名),包括认证并发布了它在(非同步)密钥服务器上

有人将“伪造的”信任网络复制到“真正的密钥服务器”,或者只是生成他自己的“副本”,这只是时间问题。

我在什么是 OpenPGP 密钥 ID 冲突?,特别是讨论不同的 OpenPGP 密钥 ID 类型以及它们之间的关系。

不要使用快捷键 ID

我能做些什么呢?

这种攻击不仅击中了您的钥匙,而且可能击中了每一个钥匙。产生碰撞不需要(太多)特殊知识或特定硬件,每个“高级用户”在短时间阅读后都能够在商品机器上产生碰撞。

解决此问题的唯一方法是停止使用短密钥 ID,尤其是在没有执行后续指纹验证的情况下。因此:

  • 每当提到您的 OpenPGP 密钥时——比如在名片或邮件签名上——请指明您的长密钥 ID(64 位或 16 位十六进制数字),甚至更好的是完整的指纹。
  • 永远不要信任短密钥 ID。如果您使用一个来获取某人的密钥,请对照长密钥或指纹进行验证(如果您厌倦了输入长密钥 ID,但它只有八位数字!)。
  • 说说问题。拒绝仅包含短密钥 ID 的片段/名片/文档。让人们知道!总的来说,这是在信任网络上进行教育的一个很好的时间点,根据我的经验,许多 OpenPGP 用户并没有完全掌握验证密钥有效性的基础知识。

我必须撤销我的密钥吗?

撤销您的 OpenPGP 密钥对您没有帮助,攻击者将能够在几秒钟或几分钟内重新创建一个新的冲突 OpenPGP 密钥。而是将您的声誉(认证)保留在信任网络中,并确保扩展它!