这些天我对端到端加密的工作原理、信任的运作方式以及信任在确保加密真实性和避免中间人攻击中的重要性有了更深入的了解。为了确保与我的联系人之间的通信安全,从今天起,我在 Jabber 上的进一步端到端加密通信中应用了加强的 OMEMO 信任政策。

TL;DR

请使用我的 OpenPGP 公钥验证本文末尾的 OpenPGP 消息,如果签名有效,则在您的 Jabber 客户端中信任以下 8 个指纹:

146614A4 A28D568E 2491DBF4 432AF3AD 23B5FB40 7040D732 55031B56 0096B36A
2BCBC6B0 F28E8015 9FFA69CC CFE90042 90285C0A 96605915 4DB56134 6804E451
E551B50A 91A332B2 A967C861 08F70299 C466C798 709997DF 3742BA35 8A5D3036
5D49448C 4C9282DE BABE51C4 CD7C80EB C3D4A231 3F51A98A 8F011C46 0E72685D
853B4672 DF3AA335 2D6819E0 AA7E341B D64BE04D 31620525 FDD3F443 D0FC2929
EBE2B559 46D07ECA 9BF8F18C 5C897CE8 66FD1C18 8B842EB0 6D17A04E BDDD3D42
A95CBAEB 810112B2 FE8F5992 A7DFC5B4 742B376B 15A8F58B B135195E 88E9BB60
A398B7A0 7014A253 7CCE9FEB 007EA82A 1D8CA17A 79C07435 462F78E9 47115B0E

然后,非常重要的是,请在与我对话时禁用盲目信任(如果您的客户端支持此功能),并拒绝所有其他 OMEMO 指纹,因为它们要么不再使用,要么被攻击者使用。

OMEMO 是如何工作的?

OMEMO 是对可扩展消息和存在协议(XMPP)的扩展,用于多客户端端到端加密,由 Andreas Straub 开发。根据 Straub 的说法,OMEMO 使用双重转轮算法“提供多端到多端的加密,允许消息在多个客户端之间安全同步,即使其中一些客户端处于离线状态”。“OMEMO”这个名字是“OMEMO 多端消息和对象加密”的递归首字母缩略词。它是基于双重转轮算法和个人事件协议(PEP,XEP-0163)的开放标准。OMEMO 提供未来和前向保密性以及消息同步和离线交付的否认性。

OMEMO 结合了非对称和对称加密技术,以提供安全的端到端加密消息传递。然而,它仍然无法解决中间人(MITM)攻击问题。

什么是 MITM 攻击?为什么 MITM 攻击会破坏端到端加密?

中间人(MITM)攻击,或称路径攻击,是一种网络攻击,攻击者秘密地转发并可能更改两个认为彼此直接通信的方之间的通信,而实际上攻击者已插入自己在两个用户方之间。

端到端加密旨在确保只有通信用户可以读取消息。然而,MITM 攻击可以在初始密钥交换阶段破坏 E2EE。如果攻击者拦截并替换双方交换的公钥,他们可以在不被发现的情况下解密、读取和重新加密消息。

我的新信任政策适用于未来的 Jabber 通信

从今天(2025 年 4 月 12 日)起,我将仔细管理我的 Jabber 账户的 OMEMO 密钥,并与我的 Jabber 联系人建立信任。对于那些在 OpenPGP 上已经与我建立信任的人(已验证并认证彼此的 OpenPGP 密钥身份),我将通过 OpenPGP 上的信任直接在 Jabber 上建立信任。至于其他人,如果可能,我将通过其他可靠的方式(例如面对面)验证他们的 OMEMO 指纹,并请他们也验证我的指纹。

请注意:

  1. 这 7 个指纹是我验证过的,并确认是可信的:
146614A4 A28D568E 2491DBF4 432AF3AD 23B5FB40 7040D732 55031B56 0096B36A
2BCBC6B0 F28E8015 9FFA69CC CFE90042 90285C0A 96605915 4DB56134 6804E451
E551B50A 91A332B2 A967C861 08F70299 C466C798 709997DF 3742BA35 8A5D3036
5D49448C 4C9282DE BABE51C4 CD7C80EB C3D4A231 3F51A98A 8F011C46 0E72685D
853B4672 DF3AA335 2D6819E0 AA7E341B D64BE04D 31620525 FDD3F443 D0FC2929
EBE2B559 46D07ECA 9BF8F18C 5C897CE8 66FD1C18 8B842EB0 6D17A04E BDDD3D42
A398B7A0 7014A253 7CCE9FEB 007EA82A 1D8CA17A 79C07435 462F78E9 47115B0E
  1. 这个指纹是我 Pixel 6 的,操作系统是 GrapheneOS,启动加载程序是锁定的。因此,您可以比其他 7 个指纹给予它更多的信任,因为在我丢失手机后,它不容易被妥协:
A95CBAEB 810112B2 FE8F5992 A7DFC5B4 742B376B 15A8F58B B135195E 88E9BB60

如果您信任我的 OpenPGP 公钥,请使用我的 OpenPGP 公钥验证本文末尾的 OpenPGP 消息。

对于那些我无法建立信任的人,我仍将为他们保持 BTBV(盲目信任在验证之前)设置,但我将不再信任他们的身份,以避免 MITM 攻击。

其他重要事项

您需要了解其他事项:

  1. 目前我没有其他 OMEMO 指纹,除了上述 8 个。然而,如果您收到的消息来源于其他 8 个以外的 OMEMO 密钥,或者在我的个人资料密钥列表中出现其他 8 个以外的 OMEMO 密钥(如果您信任我的 OpenPGP 公钥),请编写一段文本,发送给我,并要求我用我的 OpenPGP 签名并通过带有该 OMEMO 密钥的设备发送给您。如果我因任何原因无法做到这一点,请不要信任该 OMEMO 密钥,并拒绝它。
  2. Jabber 账户 czl92783719@vern.cc 也是我的,但我很少使用它,甚至没有在我网站的主页上列出它,并且我对该账户没有信任管理。请不要信任该账户。请仅信任我的主要 Jabber 账户 czl92783719@autistici.org 及其 8 个(目前)OMEMO 指纹。

关于 Matrix?

Matrix 与 Jabber 略有不同 - Matrix 账户的所有设备相互验证,并共享一个身份和一个密钥用于加密、解密消息和验证。因此,在 Matrix 上建立信任比在 Jabber 上简单得多 - 您验证的是“联系人”,而不是“设备”。

OpenPGP Message to Verify

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

I acknowledge that these OMEMO fingerprints of my XMPP account are verified by me, and are confirmed to be trusted:
146614A4 A28D568E 2491DBF4 432AF3AD 23B5FB40 7040D732 55031B56 0096B36A
2BCBC6B0 F28E8015 9FFA69CC CFE90042 90285C0A 96605915 4DB56134 6804E451
E551B50A 91A332B2 A967C861 08F70299 C466C798 709997DF 3742BA35 8A5D3036
5D49448C 4C9282DE BABE51C4 CD7C80EB C3D4A231 3F51A98A 8F011C46 0E72685D
853B4672 DF3AA335 2D6819E0 AA7E341B D64BE04D 31620525 FDD3F443 D0FC2929
EBE2B559 46D07ECA 9BF8F18C 5C897CE8 66FD1C18 8B842EB0 6D17A04E BDDD3D42
A95CBAEB 810112B2 FE8F5992 A7DFC5B4 742B376B 15A8F58B B135195E 88E9BB60
A398B7A0 7014A253 7CCE9FEB 007EA82A 1D8CA17A 79C07435 462F78E9 47115B0E
-----BEGIN PGP SIGNATURE-----

iQJGBAEBCAAwKRxDYXJ0ZXIgWmhhbmcgPGN6bDkyNzgzNzE5QGF1dGlzdGljaS5v
cmc+BQJn+kc7AAoJEAb0MMC3f8K50BkP/0vfwV1GXvLn3AcvSaM53ZWJ6cYSmi7b
SmPoIAQrYj0lGqANOp/+2UWgT1SXFfKmkeUlq2sOdTwCWibM2HUr7vuvD9kER+oe
e+49OrFfijUv+spDNhQ5tyM59cNMcF+0u0JX9lr+ZpgES4aWMMcnYDQ+vySyaDLM
8vIy+3W+i/794KdL5DbKId0AMmYo+Gz9OVtY8/BKOT4WPQGG5fl2O6346oIedKH/
O2FfMp6d6YnMLcp3CvKXbPVi6XgmoYTGiFfTnCG2+rCGuxQH1nCvVdPmvrJfxnRm
3nW86Y+iGLGEWRZP3kP6chEgE7RT+YIzC7cICSC2qImM+GlTIK4TtFH2pvGjD8A5
X1JowdwICuLZ7l/MLowoBs5KpTldHJuyetpdhA7RPA13vqgJtFhxbYASjwFxxjNq
qRZJgWWxpsgNwvcyxIZWD49rie6o5QLu09o4hwSGm9AT7DRWE2Ht9tTBaKMotS2v
+Ydzko4ZEN5JQ6n0ySrp9l02hrkYQtu0h4PNsWmHtYRKgx4/ZHgdpDSdtN8vf4x6
RqjiTlvZS3DnhIJ7hpiQJeJFbGaa+pUZsM6s4K3AWH0Sp7QmrnWI1WJlYrvdda7s
lqvo0p6HueS/RWxvE0eImXzizAd/Di7NC7Hl3eRdibiSDs/1mDDyMylE4Oe3JtX/
YXGPMCs6EU08
=Bi1t
-----END PGP SIGNATURE-----