安全與隱私

我們能保證什麼,不能保證什麼

準確地說:Gather 的訊息內容端對端加密,伺服端不持有內容明文。以下列出具體做法,也列出目前還沒做到的地方。

把話說給對的人,把鑰匙留在自己手裡。

加密方式

  • 單聊:X3DH 金鑰協商 + 雙棘輪(Double Ratchet),與 Signal 協定同類。
  • 群聊:每個傳送者一條獨立的金鑰鏈,訊息帶傳送者的 Ed25519 簽章。
  • 底層演算法:Ed25519、X25519、AES-GCM、HKDF-SHA256。
  • 加密失敗時訊息不會送出,不會改以明文傳送。

身分與帳號

  • 不需要手機號碼、電子郵件或實名,身分是本機產生的金鑰對。
  • 私鑰與助記詞只保存在你的裝置上,節點和我們都拿不到。
  • 因此助記詞一旦遺失,沒有人能幫你找回帳號。

節點能看到什麼

訊息要送達,網路必須知道一部分資訊。我們不隱瞞這一點。

資訊節點
訊息內文,以及圖片、語音、檔案的內容和檔名看不到
你的暱稱、頭像等個人資料看不到
群組名稱、群公告看不到
群成員名單(不存放在節點上)看不到
你的 IP 位址與連線身分你連線的入口節點能看到
你在什麼時間傳送訊息、傳送得多頻繁你連線的入口節點能看到
你送出的訊息是傳給誰的你連線的入口節點能看到

節點之間轉送時會隱藏寄件人;離線暫存的訊息只關聯一個每天更換的信箱標識。但你自己連線的入口節點仍然知道你在和誰通訊。

離線訊息怎麼存

對方不在線時,訊息以密文存放在多個節點上。儲存節點只看到一個每天更換的信箱標識與密文,看不到收件人與寄件人;只有收件人能證明自己有權取走。暫存最長 30 天。

已經做的中繼資料保護

  • 節點之間轉送訊息時隱藏寄件人。
  • 在線狀態使用每天輪換的標識。
  • 推播通知只用來喚醒裝置,不攜帶任何身分或內容。
  • 節點日誌中的地址已去識別化。

節點網路

  • 節點之間對等連線,基於 libp2p 與 Kademlia DHT,沒有中心資料庫或帳號伺服器。
  • 節點需要持有經認可的營運方簽發的憑證才能加入網路(許可制),每個節點在本地自行驗證。
  • 應用內建多個入口並驗證簽章,目前節點無法使用時自動切換。

發布與建置

  • 節點的版本發布清單需要 3 把發布金鑰中的任意 2 把共同簽署才有效,具備防回滾與到期時間;節點程式不會自行下載更新。
  • 節點程式採用可重現建置流程,並附帶軟體物料清單(SBOM)。

目前還沒做到的

安全說明只有把限制也說清楚才有意義。

  • 你連線的入口節點仍然知道你的訊息傳給了誰;對這一層中繼資料的進一步保護還在設計中。
  • Gather 目前只經過團隊內部的安全審查,尚未經過獨立第三方稽核。
  • 節點目前由我們營運,還沒有獨立的第三方營運方。
  • 手機上的聊天紀錄依賴手機系統本身的加密與螢幕鎖定保護,請為手機設定螢幕鎖定密碼。
  • 語音與視訊通話在部分網路環境下可能無法接通。