ActivityPub 和联邦化是否能解决独裁的问题
做 ActivityPub 支持的契机是来源之前上片的时候看到的这则留言。
虽然不是第一次见到这种留言,这倒是让我的神经不是很敏感了。不过我倒是很好奇说他说的 mastodon 和 misskey 这种联邦化社交网络怎么就能解决独裁的问题。
虽然 Solar Network 没有独裁的问题,我甚至迄今为止没做过任何的 moderation。不过就算我现在跑的是一个 mastodon 这样的联邦网络的 instance,就能防止小羊成为袁世凯吗?
How ActivityPub works?
ActivityPub 基本上就是服务器的 inbox 和 outbox POST 来 POST 去。告诉对方服务器每一个自己服务器上的更动。当然这不能 100% 每一个数据更动都同步,首先没必要,其次这样每个 mastodon(用其举例子,misskey 等其他 activitypub-based service 都是这样的)服务器上的数据库不都一样的吗,浪费空间不说,还没有意义。
所以这就引入了一个 following list 的概念,简单来说就是关注。服务器只会给关注列表中的用户 / 服务器发这个用户的更动信息。所以说其实 mastodon 的主要活动还是集中在自己的服务器上和实例的本地用户。除非你主动去用 handle (full handle, something like [at]username[at]domain) 去发现并且 subscribe 用户,不然你的 mastodon instance 也会空荡荡的。
发现用户
这个虽然不是 activitypub 的范畴,但是联邦网络的大家都会使用一个叫做 webfinger 的协议来发现别的服务器的帐号。其原理就是暴露一个 /.well-known/webfinger 的 endpoint 然后别的服务器可以来查询。没什么好说的。
信任
服务器之间通过签名过的请求通信来确保这个帖子不能被别人伪造身份来发表。却确实没什么问题。每个 actor(activitypub 中类似用户的概念)都会在自己的服务器上有一个独立的密钥对。每个请求都会用对应 actor 的密钥来签名以保证真的是 这个 actor 干的。
这个签名还是把我整的很头痛了一阵子。
真的信任吗?
上述的内容你可能意识到了一些问题,用户是访问不到密钥对的。同时也没有权力去重置这个密钥对(至少没看到有服务这么实现)。公钥,私钥都在服务器上,要是服务器自己可以信任还好说,如果服务器所有者本身就是内鬼的话呢?他完全就可以以你的身份随便发帖子。并且 200% 可以随意删除你的帖子,篡改内容之类的。联邦化并未阻止这个事情发生,服务器仍然可以随便利用 activitypub 协议发布 Undo, Update, Post 这类的事件。并且正确地签名。
这跟中心化的社交网络没有任何区别。有权利的人还是可以为所欲为,甚至危害更大。因为引入了很多不确定因素。
我一直觉得联邦化网络上的内容删除就是个很假的东西。有种讲出去的话就想泼出去的水,收不回来的感觉。虽然中心化社交网络的别的用户仍然可以截屏之类的来保留你的帖子。但是联邦化就放大了这个问题。因为我可以假装成一个正常的服务器,然后 follow 一堆人,然后他们的 instance 就会怪怪的把他们帐号的更新放到我的 inbox 里来。不过当他们要更新、删除的时候,虽然我表面上的 inbox 回复他们 200 OK,但是实际上并没有干任何事情。这不就是一个很大的安全隐患?
总结
联邦化虽然解决了内容发现的问题,仍然不能解决信任和权力滥用问题,只是你知道你把权利交给了谁。但是你认为一个网络上随便的 self-hosted instance 或是名义上的 non-profit org 可信?还是一个 data leak 等类似恶性事件会影响商誉、股价甚至收入的现代公司?
如果你要和我诡辩你可以自己 self-host instance 加入联邦网络,这样不就 100% 可行。but what's the point? 这和你去微博、X/Twitter 上注册一个帐号有什么区别?
纯粹看个人选择和取舍,这两者并没有任何技术上的优势。
Things related to Solar Network
如果事情进展顺利的话,元旦前后就能让 ActivityPub 支持正式启用。SN 的 ActivityPub actor 代表的是发布者,你可以手动决定让发布者暴露在联邦网络上。不过在你的发布者暴露在联邦网络上之前,你不能借助 SN 参与任何联邦网络的事务。