在數位通訊領域,「隱私與安全性」始終是使用者最關注的核心焦點。傳統通訊架構採用 傳輸層加密(In-Transit Encryption / TLS):

  • 訊息在客戶端到伺服器之間是加密的;
  • 但伺服器本身持有明文解密權限! 運營商、黑客入侵或政府調令隨時可能調取所有聊天歷史。

為了解決信任問題,端到端加密(End-to-End Encryption, E2EE) 應運而生:只有通訊雙方的終端設備持有解密密鑰,中間的轉發伺服器只能看到隨機的加密雜訊!

在 E2EE 領域,全球有兩大代表性架構:被密碼學界奉為黃金標準的 Signal Protocol(被 WhatsApp、Signal、Google Messages 採用),以及主打極致速度與自研密碼學的 Telegram MTProto。

本文將深入兩者的底層數學原理與架構權衡。


1. 什麼是真 E2EE?前向保密與後向安全

一個完備的 E2EE 協議必須滿足兩大密碼學性質:

前向保密性(PFS)與後向安全性(PCS)時序定義圖 展示設備私鑰洩漏時,PFS 保證過去歷史訊息依然安全,PCS 透過密鑰自癒保證未來訊息重新安全。歷史過去訊息 (Past)PFS: 密鑰已銷毀,歷史密文不可破!⚠️ 設備私鑰洩漏 / 短暫被攻破攻擊者獲取某時刻暫態密鑰 (Snapshot)未來通訊訊息 (Future)PCS: 協議自動注入新熵,自癒加密!通訊時間軸 (Timeline) ➔🛡️ 真 E2EE 的密碼學黃金標準:過去密文不可破(PFS) + 未來通訊自動自癒(PCS)
PAST: PFS 保證

1. 歷史過去訊息(前向保密 Perfect Forward Secrecy)

每條訊息的暫態密鑰在加解密完成後立即從記憶體徹底抹除。即使攻擊者今日拿到設備的長期私鑰,也完全無法回溯解密過去攔截的歷史密文!

EVENT: 私鑰遭竊

2. 設備遭惡意滲透 / 短暫淪陷

攻擊者獲取用戶當前暫態密鑰快照。若無安全機制,攻擊者將持續偷聽所有後續對話。

FUTURE: PCS 自癒

3. 未來通訊訊息(後向安全 Post-Compromise Security)

用戶只要持續發送新訊息,雙棘輪協議會觸發新的 DH 非對稱密鑰交換,注入全新隨機熵,協議在數輪對話內自動自癒並將攻擊者徹底踢出!

圖一:端到端加密核心安全性質:前向保密性(PFS)與後向安全性(PCS)時序定義
安全性質英文名稱定義
前向保密Perfect Forward Secrecy (PFS)即使攻擊者在當前竊取了用戶設備的長期私鑰,過去已經傳輸的歷史密文依然無法被解密。
後向安全Post-Compromise Security (PCS)即使攻擊者在某個時間點短暫控制了密鑰,只要用戶繼續通訊,協議能自動刷新密鑰並自癒,未來的訊息自動對攻擊者重新加密。

2. Signal Protocol 核心支柱:X3DH 與雙棘輪演算法

Signal Protocol 之配置成為業界公認的安全天花板,核心在於兩大演算法:

2.1 X3DH(Extended Triple Diffie-Hellman):離線密鑰協商

當 Alice 想要給處於離線狀態的 Bob 發送第一條訊息時,雙方如何安全協商出初始主密鑰?

  • Bob 預先生成一組公鑰上傳至 Signal 伺服器:長期身份公鑰(IK)、中程簽名預共享公鑰(SPK)與一次性預共享公鑰池(OPK)。
  • Alice 從伺服器下載 Bob 的公鑰,並在本地生成臨時私鑰(EK)。
  • Alice 執行 4 次 Diffie-Hellman 運算(DH1 到 DH4),將結果餵入 KDF(密鑰派生函數)生成初始共享密鑰。
  • 優勢:即使 Bob 離線,雙方依然能無縫完成具備抗中間人攻擊能力的密鑰協商。

2.2 雙棘輪演算法(Double Ratchet Algorithm)

雙棘輪演算法就像一隻單向旋轉的齒輪,每發送或接收一條訊息,密鑰就向前滾動一次,且永遠無法逆向推導!

Signal 雙棘輪演算法(Root Ratchet + KDF Chains)架構圖 展示根棘輪隨 DH 交換旋轉,派生發送鏈與接收鏈,每條訊息生成獨立 Message Key 並在用完後立即銷毀。根棘輪 (Root KDF Ratchet)隨雙方角色輪換與非對稱 DH 交換持續注入新熵派生發送鏈金鑰派生接收鏈金鑰發送鏈對稱棘輪 (Sending Chain)KDF 單向步進 ➔ 保證前向保密 (PFS)🔑 Message Key #1[用畢即抹除 🔥]🔑 Message Key #2[用畢即抹除 🔥]每發出一條訊息,齒輪滾動一步,舊密鑰絕不可逆接收鏈對稱棘輪 (Receiving Chain)非對稱 DH 交換 ➔ 提供後向自癒 (PCS)🔓 解密 Key #1[解密後銷毀 🔥]🔓 解密 Key #2[解密後銷毀 🔥]收到對方回覆時觸發 DH Ratchet 步進,刷新共享密鑰
ROOT RATCHET

1. 根棘輪 (Root KDF Ratchet)

隨雙方通訊角色輪換(Alice 發言換 Bob 發言)進行非對稱 Diffie-Hellman 交換,持續注入不可預測的新隨機熵。

▼ 派生兩側單向對稱鏈
SENDING CHAIN

2. 發送鏈棘輪(每訊息一密鑰)

每發送一條訊息,KDF 單向步進產出獨一無二的 Message Key。訊息加密發出後,密鑰立即在記憶體徹底銷毀(實現 PFS 前向保密)。

RECEIVING CHAIN

3. 接收鏈棘輪(解密即銷毀)

接收端對齊序號計算出對應解密密鑰,解密完成立即抹除。當收到對方新公鑰時推動 DH 棘輪,自動修復遭受短暫監聽的會話(實現 PCS 後向安全)。

圖二:Signal 雙棘輪演算法(Root Ratchet + KDF Chains)架構運作原理
  1. 對稱 KDF 棘輪:每發出一條訊息,發送鏈的 KDF 向前滾動一次,生成全新的 Message Key,使用完後立即在記憶體中抹除(提供前向保密)。
  2. 非對稱 DH 棘輪:每當通訊角色發生切換(Alice 發言完後換 Bob 發言),雙方觸發一次新的 Diffie-Hellman 密鑰交換,向根棘輪注入全新的隨機熵(提供後向安全性 PCS)。

3. Telegram MTProto 架構剖析與爭議

Telegram 採用了自研的 MTProto 協議,其架構與 Signal 存在顯著差異:

3.1 雲端聊天(Cloud Chats)vs. 秘密聊天(Secret Chats)

  • 默認模式(Cloud Chats):並非端到端加密!訊息在 Telegram 雲端伺服器進行集中式加密儲存。這使得 Telegram 能實現極致的多設備即時同步與 TB 級歷史漫遊,但代價是 Telegram 伺服器掌握了資料的明文解密能力。
  • 秘密聊天(Secret Chats):採用 MTProto 的端到端加密模式,僅限於同一台手機設備,不支援多端漫遊。

3.2 密碼學界的爭議焦點

  • 自研加密 vs. 開源標準:密碼學界普遍推崇「Don’t roll your own crypto」。MTProto 在早期版本中使用了非常規的 MAC-then-Encrypt 與奇異的校驗和組合,曾被學術界指出存在理論上的密文填充攻擊風險(MTProto 2.0 已進行了大幅修復)。

4. Signal vs. Telegram 全維度架構對比

評估維度Signal Protocol (Signal / WhatsApp)Telegram MTProto
默認加密模式預設 100% 全量 E2EE預設為雲端加密(僅 Secret Chat 為 E2EE)
密碼學核心X3DH + Double Ratchet(行業標準)自研 MTProto 2.0(基於 SHA-256 + AES-IGE)
後向安全性 (PCS)支援(雙棘輪即時自癒)弱(僅定期更換密鑰,粒度較粗)
多設備漫遊體驗較複雜(需設備間點對點同步歷史)極致流暢(雲端多端即時同步)
元數據(Metadata)保護極致(Sealed Sender 隱藏寄件人)一般(伺服器記錄通訊元數據與社交圖譜)

5. 總結

  • 安全與體驗的權衡:Signal 將密碼學安全與隱私推向了理論極致(零伺服器信任);Telegram 則在使用者體驗(雲端跨設備多端同步、群組無上限擴展)與安全性之間做出了務實的折衷。
  • 現代系統設計啟示:在設計涉及敏感資料(如私鑰、醫療隱私、金融支付)的通訊模組時,採用經過全行業檢驗的 Signal Protocol(雙棘輪架構) 始終是無可爭議的第一首選。