ATProto 身分所有權與 PDS 金鑰管理風險

ATProto 身分所有權與 PDS 金鑰管理風險

PDS 營運商掌握使用者身分的完全控制權

在目前的 AT Protocol (ATProto) 架構中,個人資料伺服器 (PDS) 營運商同時擁有他們所託管的每個使用者的簽署金鑰 (signing key) 與輪換金鑰 (rotation key)。由於 PDS 會簽署使用者儲存庫 (repository) 的每一次提交 (commit)—包括貼文、按讚與追蹤—營運商可以模擬使用者進行操作,且在密碼學上與合法活動無法區分。

這種控制權不僅限於單一應用程式。由於 ATProto 被設計為多個應用程式(如 Bluesky、Tangled、Grain 與 Leaflet)的基礎,單一受損的 PDS 營運商可以跨越生態系統中的每一個應用程式來冒充使用者。這造成了重大的安全漏洞,惡意的營運商或持有搜索票證的國家行為者可能發布煽動性內容、擅自存取儲存庫,或發布詐欺性部落格文章,且所有這些行為都帶有有效的密碼學簽章。

身分抹除的風險

除了冒充之外,持有輪換金鑰也讓 PDS 營運商能夠將使用者鎖在自己的身分之外。雖然傳統平台的封禁僅影響單一服務(例如,被 X 封禁並不影響 GitHub 帳號),但 PDS 營運商可以有效地「殺死」使用者在整個 ATProto 生態系統中的身分。透過更改輪換金鑰或將去中心化識別碼 (DID) 指向不同的 PDS,營運商可以永久撤銷使用者與任何基於 ATProto 的應用程式進行互動的能力。

資料可攜性 vs. 金鑰主權

資料可攜性與身分主權之間存在關鍵差異。雖然 ATProto 允許使用者將其儲存庫託管提供者 (PDS) 遷移至不同的伺服器—解決了 ActivityPub 等其他協定中的常見資料可攜性問題—但它預設並不提供金鑰主權。

大多數使用者為了便利性而犧牲了主權,因為金鑰管理非常複雜。然而,目前的預設狀態意味著整個系統的安全依賴於對 PDS 營運商的信任。如果營運商受損,託管在該 PDS 上的每個帳號都將在所有整合的應用程式中暴露。

緩解策略與建議變更

使用者可以透過實施比 PDS 金鑰具有更高優先權的自我控制輪換金鑰來緩解這些風險。這允許使用者在目前的營運商變得惡意時,輪換簽署金鑰並將其 DID 遷移至新的 PDS。然而,這並非預設配置,且尚未整合到標準的用戶端客戶端引導流程中。

為了提升 ATProto 的安全態勢,建議進行以下變更:

  • 預設輪換金鑰註冊: 備份輪換金鑰的註冊應成為帳號建立過程中的標準部分。
  • Client-Side 整合: 金鑰管理工具應直接內建於用戶端中,而非僅作為 API 層級的功能。
  • 可審計性: 使用者應有清晰、透明的方式來審計 PDS 在其名義下簽署了什麼。
  • 文件說明: 協定文件應明確說明 PDS 持有使用者金鑰所帶來的影響。

社群觀點與反論點

關於這些風險的技術討論揭示了追求絕對主權與將這些風險視為可用性與安全性之間的權衡(trade-offs)之間的分歧。

支持現行模式的論點

一些貢獻者認為,這種信任模型與目前網際網路的運作方式一致。他們指出,使用者已經信任 GitHub 或 Google 等中心化實體來管理身分,且 PDS 營運商惡意行為的風險低於第三方帳號被盜用的風險。此外,他們認為,若強迫使用者管理自己的「超級金鑰」(uber-keys),在金鑰遺失或未備份時,可能導致永久性的帳號遺失。

支持自我託管的論點

幾位社群成員強調,對於高風險使用者(如記者、政治人物與開源維護者)而言,透過自我託管可以解決此風險。由於 PDS 可以運行在低成本硬體(如 Raspberry Pi 或使用 Docker 與 SQLite 的小型 VM)上,需要更高安全性的使用者可以簡單地管理自己的金鑰。

其他身分模型

一些批評者建議 ATProto 對 DID 規範的處理方式並不優雅,並建議在主簽署身分與子 DID(具有有限的 CRUD 權限)之間建立層級關係,會是更安全的架構。其他人則指出,與 ATProto 目前的金鑰輪換系統相比,Farcaster 使用 Ethereum 區塊鏈上的智慧合約是更強大的身分恢復與管理方法。

Sources