Hacker News 中文摘要

RSS订阅

谁拥有你的ATProto身份? -- Who owns your ATProto identity?

文章摘要

这篇文章指出,在ATProto协议中,个人数据服务器(PDS)持有用户的签名密钥和轮换密钥,因此PDS运营商可以完全冒充用户发布内容、点赞、关注等,且从协议层面无法区分真伪,这比传统平台的数据泄露风险更严重。

文章总结

你的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。而在这里,一个运营商的决策就能将你锁在整个生态系统之外。你的数据可能仍存在于备份或数据流中,但你的身份已经死亡,再也无法使用。

问题不在数据,而在密钥

仓库数据本身不是问题。所有数据都是公开的,通过火管(ATProto的实时数据流)广播,任何人都可以抓取。攻破一个中继(聚合和重新广播网络数据的服务)只能获得你本就能访问的公开数据副本。攻破一个PDS,你就能以该PDS上所有用户身份行事。

攻击者、持有搜查令的国家行为者或恶意员工不仅能获得读取权限,还能获得签名密钥来创建新活动,以及轮换密钥来将用户锁在自己的身份之外。一个签名密钥,适用于所有应用。 而每一个新ATProto应用的推出,都增加了被攻破密钥可能造成损害的攻击面。

这个系统用便利换取了主权。我理解原因:密钥管理很困难,大多数用户永远不想处理它。但后果是整个系统的安全依赖于对PDS运营商的信任,这使其变得脆弱。一个被攻破或恶意的运营商,就能让该PDS上的所有账户在所有应用中暴露无遗。

应该改变什么

你可以注册一个优先级高于PDS密钥的自我控制轮换密钥。如果这样做,你的PDS仍然可以以你的身份签名,但至少它无法将你锁在自己的身份之外。你可以轮换签名密钥,将你的DID指向新的PDS,然后继续使用。但这并非默认设置,因此绝大多数用户永远不会这样做。

这种情况应该改变。备份轮换密钥的注册应该成为默认账户创建流程的一部分,应该内置于客户端而非仅限API。用户应该有一种清晰的方式来审计他们的PDS代表他们签署了什么。ATProto文档应该明确说明PDS持有你的密钥实际上意味着什么,因为目前大多数用户对此一无所知。

ATProto要求你将更多数字生活置于单一身份之下,将该身份的密钥交给他人,并信任他们会善待你。该协议的去中心化承诺在架构层面是真实的。但在密钥管理层面,这种信任程度甚至会让中心化平台都感到汗颜。

评论总结

根据评论内容,总结主要观点如下:

1. 对AT Protocol技术设计的批评 - 核心问题:PDS(个人数据服务器)持有用户签名密钥,存在信任风险。评论14指出:“PDS would require our signing key that just seems very sloppy”(PDS需要我们的签名密钥,这看起来很草率)。 - 评论9强调:“if you link multiple apps to an identity server... and your identity server is compromised, attacker will be able to impersonate you”(如果多个应用链接到同一身份服务器,服务器被攻破后攻击者可冒充你)。

2. 对去中心化方案的比较 - 支持区块链方案:评论2认为“non-financial use of blockchain could really shine... for decentralized identity management”(区块链在去中心化身份管理方面有潜力)。 - 批评现有方案:评论10指出“Both nostr and atp sucks at key management”(Nostr和ATP的密钥管理都很差),并推荐Farcaster的链上信任模型。 - 支持Fediverse:评论4强调“Centralization is always a trap... No idea why people have such a hard time joining and supporting the Fediverse”(中心化总是陷阱,不理解为何人们不加入Fediverse)。

3. 对用户实际影响的评估 - 多数用户无需担忧:评论5认为“Most people don’t worry about it for the same reason they don’t worry about GitHub abusing their GitHub account”(多数人不会担心,就像不担心GitHub滥用账户)。 - 可自托管解决:评论6指出“Self-hosting your own PDS can be done with Raspberry Pi or $5/mo VM”(可用树莓派或5美元/月的虚拟机自托管PDS)。 - 评论13补充:“the people who do need to worry... can self host a PDS and be a lot safer”(需要担心的人可以自托管PDS获得更高安全性)。

4. 对协议未来发展的建议 - 隐私应为核心:评论1强调“The next iteration should make privacy the default and core to protocol”(下一版本应将隐私设为默认和核心)。 - 关注领导力问题:评论1指出“be very mindful of how the leadership/social dynamics played out”(需警惕领导力和社会动态的影响)。 - 评论8质疑用户增长:“Unless China GFW magically collapsed, there seems no reason ATProto user base will continue to grow”(除非中国防火墙崩溃,否则ATProto用户群难以增长)。

5. 对域名所有权的质疑 - 评论7提出:“Who owns your domain name? Hint: it’s probably not you”(谁拥有你的域名?提示:可能不是你),指出托管商可控制域名。

6. 对密钥管理的技术建议 - 评论12简单提问:“Why aren't the keys stored encrypted?”(为什么密钥不加密存储?) - 评论14建议使用DID标准中的层级关系:“a child DID be created from our master signing identity”(从主签名身份创建子DID)。