谁拥有你的ATProto身份?提示:可能不是你
在撰写关于Bluesky中心化风险的文章后,我深入了解了PDS(个人数据服务器)是如何工作的。我观察的越多,情况就越糟。我原本担心Bluesky会失控,删除账户或锁定用户。实际上,这是你的PDS运营商能对你做的最不恐怖的事情。他们可以是你!你的PDS保存你的签名密钥。它签名你存储库中的每一次提交。每一条帖子、每一个点赞、每一个关注,所有一切。PDS还保存你的轮换密钥,它控制着你的身份。它可以更改你的签名密钥,更改你的账户指向哪个PDS,基本上完全掌握你的DID(你在ATProto上的永久去中心化标识符)。你的PDS运营商可以代你发布内容、代你点赞、代你关注别人,这在加密上与真实活动不可区分。签名是有效的。提交是正确格式的。在协议看来,所有这一切都是你做的。 在传统平台上,影响范围是有限的。如果Twitter的数据库管理员想要以你的名义发布内容,他们可能会干扰你的推文。这是糟糕的,但影响是可以控制的。而在ATProto上,你的PDS不仅仅存储你的Bluesky帖子。它保存了一切。你在Tangled(一个基于ATProto的git协作平台)上的git活动,你在Grain上的社交互动,你在Leaflet上的写作,任何正在进行的事情。每一个新的ATProto应用程序都写入同一个存储库,由同一个密钥签名,受同一个运营商控制。因此,运行你的PDS的人可以在生态系统中的每一个应用程序中冒充你。 想象一下,一个受欢迎的第三方PDS主机注册了几千个开发者。运营商现在持有每一个账户的签名密钥。他们可以代表知名开发者账户发布煽动性的观点。授予自己在Tangled上对存储库的推送访问权限,从而打开供应链攻击的门。发布Leaflet上的博客文章。所有内容都是签名过的,都是有效的,与真实的内容没有区别。在每一个ATProto应用上,而不仅仅是一个。反过来也一样。如果你做了一些PDS运营商不喜欢的事情,他们可以终止你的身份。不仅仅是你的Bluesky账户。你在每个ATProto应用程序上发布、提交、发表或互动的能力。在传统平台上,被Twitter禁止并不会影响你的GitHub。但是在这里,一个运营商的决定可以让你被锁定在整个生态系统之外。你的数据可能仍然存在于备份中或火hose上,但你的身份死了。你再也无法使用它了。问题不在于数据,而在于密钥。 存储库数据本身并不是问题。反正它都是公开的,广播在火hose(ATProto的实时数据流)上,任何人都可以爬取。妥协一个中继(聚合和重广播网络数据的服务),你得到一份公共数据的副本,而你本来就可以访问这些数据。妥协一个PDS,你就获得了代表所有在其上托管的用户进行活动的能力。攻击者、持有逮捕令的国家行为者或不法员工,不仅仅获得读取权限。他们获得了创建新活动的签名密钥和锁定用户自己身份的轮换密钥。一个签名密钥,所有应用。每一个新启动的ATProto应用程序都会增加一个表面,妥协的密钥可以造成损害。这个系统用便利交换主权。我理解原因。密钥管理是困难的,大多数用户永远不会想要处理它。但其后果是整个系统的安全性依赖于对PDS运营商的信任,这使得它变得脆弱。一个被妥协或恶意的运营商,所有在该PDS上的账户都暴露,遍布每一个应用。 应该改变的事情是,你可以注册一个自我控制的轮换密钥,其优先级高于你的PDS的密钥。如果你这么做,你的PDS仍然可以以你的名义签署内容,但至少它不能锁定你自己身份。你可以轮换签名密钥,将你的DID指向新的PDS,然后继续。但是这不是默认的,所以绝大多数用户永远不会这样做。这应该改变。备份轮换密钥注册应该成为默认账户创建流程的一部分。它应该内置到客户端中,而不仅仅是API中。用户应该有清晰的方式审计他们的PDS代表他们签署了什么。而ATProto文档应该清楚地说明你的PDS持有你密钥的实际意义,因为现在大多数用户都不知道。ATProto要求你将更多的数字生活置于单一身份之下,把这个身份的密钥交给其他人,并信任他们会做好。该协议在建筑层面的去中心化承诺是切实的。但在密钥管理层面,这是一种信任水平,甚至让集中化平台都感到羞愧。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡