加密方式
- 單聊:X3DH 金鑰協商 + 雙棘輪(Double Ratchet),與 Signal 協定同類。
- 群聊:每個傳送者一條獨立的金鑰鏈,訊息帶傳送者的 Ed25519 簽章。
- 底層演算法:Ed25519、X25519、AES-GCM、HKDF-SHA256。
- 加密失敗時訊息不會送出,不會改以明文傳送。
準確地說:Gather 的訊息內容端對端加密,伺服端不持有內容明文。以下列出具體做法,也列出目前還沒做到的地方。
把話說給對的人,把鑰匙留在自己手裡。
訊息要送達,網路必須知道一部分資訊。我們不隱瞞這一點。
| 資訊 | 節點 |
|---|---|
| 訊息內文,以及圖片、語音、檔案的內容和檔名 | 看不到 |
| 你的暱稱、頭像等個人資料 | 看不到 |
| 群組名稱、群公告 | 看不到 |
| 群成員名單(不存放在節點上) | 看不到 |
| 你的 IP 位址與連線身分 | 你連線的入口節點能看到 |
| 你在什麼時間傳送訊息、傳送得多頻繁 | 你連線的入口節點能看到 |
| 你送出的訊息是傳給誰的 | 你連線的入口節點能看到 |
節點之間轉送時會隱藏寄件人;離線暫存的訊息只關聯一個每天更換的信箱標識。但你自己連線的入口節點仍然知道你在和誰通訊。
對方不在線時,訊息以密文存放在多個節點上。儲存節點只看到一個每天更換的信箱標識與密文,看不到收件人與寄件人;只有收件人能證明自己有權取走。暫存最長 30 天。
安全說明只有把限制也說清楚才有意義。