端到端加密(英語:End-to-end encryption,縮寫:E2EE),是一種只有參與通訊的用戶可以讀取資訊的通訊系統。它可以防止潛在的竊聽者——包括電信供應商、互聯網服務供應商以及該通訊系統的提供者——取得雙方通訊的明文。[1]此類系統被設計為可以防止潛在的監視或篡改企圖。舉例來說,使用端到端加密的通訊提供商,無法解密用戶的訊息,更無法將其客戶的通訊訊息提供給當局[2]

金鑰交換

在一個端到端加密的系統中,用於加解密的金鑰必須被、且僅被參與通訊的各方掌握。為實現這一目的,端到端加密系統可以使用事先預定好的一串字元(稱為「預共用金鑰英語pre-shared key」)來加密數據(如PGP),也可以使用該字串生成一次性密碼來進行加密(如每一次交易流程使用唯一金鑰英語Derived unique key per transaction)。此外,參與通訊的各方還可以通過協商(迪菲-赫爾曼金鑰交換協定)建立金鑰(如OTR)。[3]

現代的用法

直到2016年,典型的基於中心伺服器的通訊系統尚不包括端到端加密功能。此類系統只能保證客戶端伺服器端之間的通訊受到保護。這意味着通訊雙方必須信任伺服器端的運營者,因為他可以閱讀通訊的全部明文內容。例如微信,用戶到微信的伺服器的連接使用 MMTLS 加密,但僅僅加密於用戶和伺服器之間,訊息在伺服器上載遞時伺服器會解密訊息到原始文字[4]

相比之下,端到端加密被認為是更安全的。金鑰是為終端使用者分發的,比如如果在微信實現端到端加密,通訊中的任意一方首先以另一終端使用者的公鑰加密文字,然後再以 MMTLS 的公鑰加密,有兩次加密,微信的伺服器僅能解密第一重,只可以看到密文,而明文僅僅出現於通訊兩端用戶的裝置上[4][5]

對於使用普通即時通訊(IM)產品的用戶,通常可以選擇使用第三方客戶端或加解密外掛程式,以便在非E2EE協定的通訊中實現端到端加密。[6]

一些非E2EE的通訊系統,例如拉維畢特和 Hushmail 宣稱提供了端到端加密,但實際上並沒有。[7] 而另一些系統,例如Telegram谷歌Allo,由於沒有預設啟用端到端加密而受到了批評。[8][9]

挑戰

中間人攻擊

端到端加密能確保數據安全保密地傳輸於通訊的兩端之間。但對於不懷好意的竊聽者而言,與其嘗試破解加密,不如冒充的訊息接受方(例如,在金鑰交換期間冒名頂替,或是設法將收件人公佈的公共金鑰替換成自己的)來得方便,因為此後,發信人發出的資訊將以一個竊聽者掌握的金鑰進行加密。在取得解密的資訊後,監聽者還可以冒充發信人,與實際的接收者進行金鑰交換、傳送訊息,以避免通訊雙方察覺異常。由於攻擊者處在通訊雙方之間,因此這種攻擊方式被稱為中間人攻擊[10]

身份驗證

大多數端到端加密協定都設計了某種形式的終端認證機制,專門用來防禦中間人攻擊,例如依靠數碼證書認證機構信任網絡進行驗證。[11]其他的技術包括的針對用戶公鑰或預共用金鑰生成密碼雜湊(裝置指紋)。通訊各方可以通過外部(out-of-band)通訊渠道來校驗這一指紋,便可確認通訊的完整性和真實性(但不能保證機密性),之後再展開真實對話。如果指紋匹配的話,理論上可以確認不存在中間人攻擊。

為了方便人工檢查,指紋通常會顯示為十六進制字串。這些字串通常會編排成特定格式並編組,以提高可讀性。例如,128位元MD5指紋會顯示如下:

43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8

在一些協定中,指紋會被顯示成自然語言[12]這是通過在指紋塊與文字之間建立一對一的對映來實現的,因此不會有損失。有些協定還能匹配地顯示為用戶的母語(如參照裝置的語言設定)。 但是,在跨語言的環境下這種技術會帶來一些問題。 為了提高本地化程度,一些協定選擇將指紋顯示為十進制字串,而不是十六進制或自然語言串。[13] 現代化的通訊應用也可以把指紋顯示為二維條碼,供用戶使用其他裝置掃描讀取。[14]

終端安全

端到端加密並不能避免終端本身的安全風險。每個用戶的電腦等裝置上仍然存在金鑰被盜(以進行中間人攻擊),或是是被解密的資訊被讀取的可能性。即使是最完美的加密通訊,他的安全性仍然受制於兩端「信箱」的安全性。提升端點安全性的手段主要有:將金鑰的產生、儲存和加解密操作獨立到一個小的智能卡上,例如Google Project Vault[15] 然而,由於明文輸入和輸出仍然對於用戶裝置來說依舊是可見的,因此惡意軟件仍然可以即時竊聽用戶的對話。一個更強大的方式是將所有敏感數據隔離到一台由網閘完全限制的電腦上。[16]一些專家已經建議將PGP用於此目的:

如果我真的要把自己的性命託付給一個軟件的話,我不會選那些華而不實的東西——我選GnuPG,而且我大概會把它執行在一個與世隔絕的電腦上,再把電腦鎖進地下室。

然而,正如布魯斯·施奈爾所指出的,美國和以色列開發的「震網」病毒成功地通過離線渠道進入並癱瘓了伊朗在納坦茲建設的核設施。[17] 為了避免惡意軟件導致的金鑰泄漏、一種方法是將可信計算基分散在兩個單向連接的電腦上,以避免惡意軟件感染及其導致的敏感數據泄漏。[18]

後門程式

一些公司還可能還會自覺不自覺地在他們的軟件中引入後門,導緻密鑰協商機制被破壞,或是加密被繞過。在2013年,愛德華·斯諾登披露的資訊顯示,Skype有一個後門允許微軟將其用戶的資訊泄漏給美國國家安全域,儘管在公開渠道Skype宣稱其使用了端到端加密。[19][20]

參見

參考文獻

延伸閱讀

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.