一個虛擬專用網絡 (VPN)對在您的計算機和 VPN 服務器之間傳輸的所有數據進行加密。在本完整 VPN 加密指南中,我們詳細介紹了什麼是加密以及如何在 VPN 連接中使用加密。
也許最重要的是,我們將解釋使用的一系列加密術語VPN服務。我們希望,在閱讀完本指南後,您將對這個複雜的主題有更深入的了解,並且能夠更好地評估 VPN 提供商提出的安全聲明。
預賽
如果您不確定 VPN 是什麼以及它能為您做什麼,請查看我們的VPN 初學者指南。
我們的目標是以盡可能簡單的方式展示 VPN 加密的關鍵功能。儘管無法迴避這一事實,但加密是一個複雜的主題。
如果“加密”一詞讓您眼前一亮,但您仍然想知道優質 VPN 服務需要注意什麼,您可以使用目錄直接跳到摘要。
什麼是加密?
“從頭開始,”國王非常嚴肅地說,“一直走到終點,然後停下來。”
最簡單的比喻是加密是一把鎖。如果你有正確的鑰匙,那麼鎖很容易打開。如果有人沒有正確的鑰匙,但想要訪問受該鎖保護的保險箱中的內容(即您的數據),那麼他們可以嘗試破解該鎖。
就像保護銀行金庫的鎖比保護手提箱的鎖更強一樣,某些加密比其他加密更強大。
如果您想要具有最強加密能力的 VPN,請查看我們的最安全的 VPN 列表了解更多信息。
基礎知識
當您還是個孩子的時候,您是否玩過通過用消息中的一個字母替換另一個字母來創建“秘密消息”的遊戲?替換是根據您選擇的公式進行的。
例如,您可能已將原始消息的每個字母替換為字母表中後面的三個字母。如果其他人知道這個公式是什麼,或者能夠算出它,那麼他們就能夠讀取你的“秘密信息”。
用密碼學術語來說,您所做的就是根據非常簡單的數學算法“加密”消息(數據)。密碼學家將此公式稱為“密碼”。要解密它,您需要密鑰。這是一個可變參數,決定密碼的最終輸出。如果沒有這個參數,就不可能解密密碼。
如果有人想要讀取加密消息但沒有密鑰,那麼他們必須嘗試“破解”密碼。當加密使用簡單的字母替換密碼時,破解它很容易。然而,通過使數學算法(密碼)更複雜,可以使加密更加安全。
例如,您可以將消息的每三個字母替換為與該字母對應的數字。
加密密鑰長度
現代計算機密碼是非常複雜的算法。即使在超級計算機的幫助下,破解這些密碼也非常困難,即使對於所有實際目的來說並非不可能。衡量密碼強度的最粗略方法是通過創建密碼的算法的複雜性來衡量。
算法越複雜,使用我們所說的暴力攻擊來破解密碼就越困難。
如果是一種非常原始的攻擊形式(也稱為窮舉密鑰搜索),則稱為暴力攻擊,它基本上涉及嘗試所有可能的數字組合,直到找到正確的密鑰。
計算機使用二進制數(零和一)執行所有計算。密碼的複雜性取決於其密鑰大小(以位為單位) - 表達其算法所需的 1 和 0 的原始數量,其中每個 0 或 1 由單個位表示。
這稱為密鑰長度,也代表了對任何給定密碼成功執行強力攻擊的實際可行性。
可能的組合數量(以及因此暴力破解它們的難度)隨著密鑰大小呈指數增長。使用AES 密碼(見下文):

從這個角度來看:
- 2011 年,世界上最快的超級計算機是 Fujitsu K。它的 Rmax 峰值速度為 10.51 petaflops。根據此數字,強制破解 128 位 AES(高級加密標準)密鑰需要 Fujitsu K 1.02 x 10^18 - 大約十億億(五分之一)年。這比宇宙的年齡(137.5 億年)還要古老。
- 目前(2017年)世界上最強大的超級計算機是中國的神威·太湖之光。這頭野獸的峰值速度可達 93.02 petaflops。這意味著世界上最強大的計算機仍需要大約 885 萬億年才能暴力破解 128 位 AES 密鑰。
- 暴力破解 256 位密碼所需的操作次數為 3.31 x 10^56。這大約相當於宇宙中原子的數量!
計算機密碼
加密密鑰長度是指所涉及的原始數字的數量,而密碼是用於執行加密的數學(實際公式或算法)。正如我們剛才所看到的,暴力破解現代計算機密碼是非常不切實際的。
這些密碼算法的弱點(有時是故意的)可能導致加密被破壞。這是因為(設計不當的)密碼的輸出可能仍會揭示加密前原始信息的某些結構。這會創建一組減少的可能嘗試組合,這實際上減少了有效密鑰長度。
例如,Blowfish 密碼很容易受到利用概率論中生日問題背後的數學原理的攻擊。對密碼算法弱點的研究稱為密碼分析。
較長的密鑰長度彌補了這些弱點,因為它們大大增加了可能結果的數量。
對手可以攻擊密鑰本身,而不是攻擊密碼本身。這可能會影響特定站點或某些軟件產品。但密碼算法的安全性仍然完好無損,並且使用相同算法但具有安全密鑰生成的其他系統不會受到破解的影響。
密鑰長度
密碼的強度取決於密碼本身的數學原理以及以位表示的密鑰長度。因此,密碼通常與所使用的密鑰長度一起描述。
因此 AES-256(密鑰長度為 256 位的 AES 密碼)通常被認為比 AES-128 更強。請注意我說的是通常因為我們在這里處理非常複雜的數學(請參閱我稍後關於 AES 的筆記)。
![]()
值得注意的是,密鑰長度本身並不能很好地表明密碼的強度。重要的是密鑰長度和密碼的組合。密碼用於非對稱加密例如,使用比對稱加密所用的密鑰長度更長的密鑰來提供等效的保護。

該表有點過時了,因為它沒有考慮在 RSA 上發現的較新的攻擊。還值得注意的是,RSA 的橢圓曲線和 Diffie-Hellman 變體比傳統的要強得多。但希望你明白了。
![]()
需要注意的一件事是,密鑰長度越高,涉及的計算量就越多,因此需要的處理能力也就越強。這會影響數據加密和解密的速度。因此,VPN 提供商等在選擇加密方案時必須決定如何最好地平衡安全性與實際可用性。有一些 VPN 提供商已經成功地實現了這種微妙的平衡。欲了解更多信息,請查看我們的快速 VPN 指南。
稍後我們將討論各種 VPN 協議使用的主要密碼,但您可能會遇到的最常見密碼是 Blowfish 和 AES。除此之外,RSA用於加密並解密密碼的密鑰,並使用 SHA-1 或 SHA-2 作為哈希函數來驗證數據。
非對稱加密
完美的前向保密
完美前向保密 (PFS) 也稱為使用臨時加密密鑰,或者對於那些不喜歡使用“完美”一詞的人來說,簡稱為前向保密 (FS)。
大多數現代安全在線通信都依賴於 SSL/TLS。它由以下人員使用HTTPS網站和OpenVPN協議。 TLS(傳輸層安全)是一種非對稱加密協議。使用非對稱密碼意味著使用每個人都可以使用的公鑰來保護數據的安全。然而,它只能由持有正確私鑰的預期接收者解密。
該私鑰必須保密。如果它被對手竊取或破解,那麼對手就可以輕鬆攔截和讀取受其保護的任何通信。
不幸的是,服務器甚至整個公司通常只使用一個私有加密密鑰來保護所有通信。為什麼?因為這很容易。然而,如果該密鑰被洩露,那麼攻擊者就可以訪問用它加密的所有通信。
因此,該私有加密密鑰成為可用於解鎖與服務器或公司的所有通信的“主密鑰”。眾所周知,美國國家安全局利用了這一弱點來收集大量所謂的安全數據。
解決方案是完美前向保密。這是一個為每個會話生成新的、唯一的私有加密密鑰的系統。這是一個簡單的想法,即使迪菲-赫爾曼交換數學很複雜。這意味著每個 TLS 會話都有自己的一組密鑰。因此,術語“臨時密鑰”——它們使用一次,然後就消失了。
因此,不存在可以被利用的“主密鑰”。即使會話受到損害,它也是僅有的該會話受到損害 - 不是任何人與該服務器或公司的所有其他會話!
儘管不常見,但甚至可以在會話中刷新 PFS 密鑰(例如,每小時)。即使私鑰被洩露,這也進一步限制了對手可以攔截的數據量。
幾年前,當我寫這篇關於該主題的文章時,對 HTTPS 網站和 OpenVPN 連接使用完美前向保密的情況非常罕見。幸運的是,這種情況已經有所改變。儘管並不普遍,但臨時密鑰的使用最近已大大增加。
VPN 協議是用於在兩台計算機之間協商安全加密連接的一組指令(機制)。商業 VPN 服務通常支持許多此類 VPN 協議。其中最著名的是 PPTP、L2TP/IPSec、OpenVPN、SSTP 和 IKEv2。
我將逐一查看下面的內容,但 OpenVPN 現在已成為商業 VPN 服務使用的行業標準 VPN 協議 - 這是有充分理由的。它非常安全,幾乎可以在所有支持 VPN 的設備上使用。因此,我將花費額外的數字墨水來詳細討論 OpenVPN。
PPTP
優點
- 幾乎所有平台都內置了客戶端
- 設置非常簡單
缺點
- 非常沒有安全感
- 絕對是被美國國家安全局(NSA)妥協了
- 輕鬆封鎖
什麼是PPTP?
它只是一個 VPN 協議,依賴各種身份驗證方法來提供安全性。在商業 VPN 提供商中,這幾乎總是 MS-CHAP v2。 PPTP 使用的加密協議(類似於標準密碼)是 Microsoft 點對點加密 (MPPE)。
點對點隧道協議(PPTP) 由 Microsoft 成立的一個聯盟開發,用於通過撥號網絡創建 VPN。因此,PPTP 長期以來一直是企業 VPN 網絡的標準協議。
PPTP 在幾乎所有支持 VPN 的平台和設備上都是標準配置。它易於設置,無需安裝額外的軟件。這確保了 PPTP 仍然是企業 VPN 和商業 VPN 服務的流行選擇。
它還具有需要較低的計算開銷來實現的優點......所以速度很快!
不幸的是,PPTP 並不安全。完全沒有。儘管現在通常只使用 128 位加密密鑰,但自 1999 年首次與 Windows 95 OSR2 捆綁以來,許多安全漏洞已經被發現。
其中最嚴重的是未封裝的 MS-CHAP v2 身份驗證的可能性。利用這個漏洞,PPTP 在兩天內就被破解了。 Microsoft 已修補了該缺陷,但自己也發布了使用 L2TP/IPsec 或 SSTP 的建議。
毫不奇怪,NSA 幾乎肯定會將 PPTP 加密通信解密作為標準。更令人擔憂的是,NSA 收集了大量舊數據,這些數據在 PPTP 被認為安全時就已加密。它幾乎肯定也可以解密這些遺留數據。
PPTP 需要 TCP 端口 1723 和 GRE 協議。 GRE 防火牆很容易,這使得阻止 PPTP 連接變得很容易。
L2TP/IPsec
優點
- 通常被認為是安全的
- 易於設置
- 適用於所有現代平台
- 比 OpenVPN 更快(也許)
缺點
- 可能受到 NSA 的損害(未經證實)
- 可能被國家安全局故意削弱(未經證實)
- 可能會遇到限制性防火牆
- 經常執行得不好
什麼是 L2TP 和 IPsec?
幾乎所有現代操作系統和支持 VPN 的設備都內置了第 2 層隧道協議 (L2TP)。因此,它的設置與 PPTP 一樣簡單快捷。
就其本身而言,L2TP 並不為通過它的流量提供任何加密或機密性,因此通常使用IPsec 身份驗證套件(L2TP/IPsec)。即使提供商僅提及 L2TP 或 IPsec(某些提供商確實如此),它幾乎肯定實際上意味著 L2TP/IPSec。
L2TP/IPsec 可以使用 3DES 或 AES 密碼。 3DES 很容易受到中間相遇和 Sweet32 衝突攻擊,因此在實踐中您現在不太可能遇到它。
由於 L2TP/IPSec 協議僅使用有限數量的端口,因此可能會出現問題。當在 NAT 防火牆後面使用時,這可能會導致複雜化。這種對固定端口的依賴也使得該協議相當容易被阻止。
L2TP/IPsec 將數據封裝兩次,這會減慢速度。加密/解密發生在內核中並且 L2TP/IPsec 允許多線程這一事實抵消了這一點。 OpenVPN 沒有。結果是 L2TP/IPsec理論上比 OpenVPN 更快。
使用 AES 密碼的 L2TP/IPsec 沒有重大已知漏洞,如果實施得當,可能仍然是安全的。然而,愛德華·斯諾登的爆料強烈暗示該標準受到美國國家安全局的損害。
約翰·吉爾摩 (John Gilmore) 是一名安全專家,也是電子前沿基金會的創始成員。他解釋說,很可能IPSec被故意削弱在其設計階段。
一個可以說更大的問題是許多 VPN 服務對 L2TP/IPsec 的實施很差。具體來說,他們使用預共享密鑰(PSK)可以從其網站免費下載。
這些 PSK 僅用於驗證連接,因此即使遭到洩露,數據仍會使用 AES 進行安全加密。然而,攻擊者可以使用預共享密鑰來冒充 VPN 服務器。然後,它可以竊聽加密流量,甚至將惡意數據注入連接中。
![]()
概括
儘管存在一些主要的理論問題,但如果不使用公開發布的預共享密鑰,L2TP/IPsec 通常被認為是安全的。它與許多設備的內置兼容性使其成為一個非常好的選擇。
SSTP
優點
- 非常安全
- 完全集成到 Windows 中
- 微軟支持
- 可以繞過大多數防火牆
缺點
- 微軟擁有的專有標準
什麼是SSTP?
SSTP 是一種使用 SSL 3.0 的加密類型,具有與 OpenVPN 類似的優勢。這包括使用 TCP 端口 443 逃避審查的能力。與 Windows 的緊密集成使其比該平台上的 OpenVPN 更易於使用且更穩定。
然而,與 OpenVPN 不同的是,SSTP 是 Microsoft 擁有的專有標準。這意味著該代碼不接受公眾審查。微軟與 NSA 合作的歷史,以及對 Windows 操作系統可能內置後門的猜測,並沒有激發人們對該標準的信心。
安全套接字隧道協議(SSTP) 是由 Microsoft 在 Windows Vista SP1 中引入的。雖然現在可以用於Linux VPN,甚至 Mac OS X,它仍然主要是一個僅限 Windows 的平台。
另一個問題是 SSL v3.0 容易受到所謂的貴賓犬攻擊,因此現在不推薦。這個問題是否也會影響 SSTP 尚不清楚,但同樣很難激發信心。
![]()
概括
從理論上講,SSTP 提供了 OpenVPN 的許多優點。然而,作為微軟專有標準,嚴重損害了其可信度。
IKEv2
優點
- 快速地
- 穩定 - 特別是在切換網絡或在互聯網連接丟失後重新連接時
- 安全(如果使用 AES)
- 易於設置(至少在用戶端!)
- Blackberry 設備支持協議
缺點
- 許多平台不支持
- 在服務器端實施 IKEv2 很棘手,這可能會導致出現問題
- 只信任開源實現
什麼是 IKEv2?
Internet 密鑰交換版本 2 (IKEv2) 由 Microsoft 和 Cisco 聯合開發。 Windows 7+、Blackberry 和 iOS 設備原生支持它。這就是為什麼很多iOS VPN服務使用 IKEv2 而不是 OpenVPN。
自主開發的IKEv2兼容版本已針對Linux等操作系統開發。其中許多迭代都是開源的。一如既往,我建議對微軟開發的任何東西保持警惕。然而,IKEv2 的開源版本應該沒有問題。
IKEv2 是 IPsec 協議套件的一部分。它通過在 IPsec 內處理 SA(安全關聯)屬性來確保流量安全,並在許多方面改進了 IKEv1。因此,IKEv2 有時稱為 IKEv2/IPsec。另一方面,IKEv1 通常簡稱為 IPsec。
IKEv2 被 Microsoft 稱為 VPN Connect,特別擅長在用戶暫時失去互聯網連接時自動重新建立 VPN 連接。例如,進入或離開火車隧道時。
由於支持移動性和多宿主 (MOBIKE) 協議,IKEv2 對不斷變化的網絡也具有很強的彈性。這使得 IKEv2 成為經常在家庭 WiFi 和移動連接之間切換或經常在熱點之間移動的手機用戶的絕佳選擇。
IKEv2 不像 L2TP/IPSec 那樣常見,因為支持它的平台要少得多(儘管這種情況正在迅速改變)。然而,在安全性、性能(速度)、穩定性和建立(和重新建立)連接的能力方面,它被認為至少與 L2TP/IPsec 一樣好,甚至優於 L2TP/IPsec。
開放VPN
優點
- 非常安全(如果使用 PFS)
- 高度可配置
- 開源
- 可以繞過防火牆
- 需要第三方軟件
什麼是 OpenVPN?
開放VPN是一種開源技術,它使用 OpenSSL 庫和 TLS 協議以及其他技術的混合體,提供強大而可靠的 VPN 解決方案。它現在已成為商業 VPN 服務使用的行業標準 VPN 協議 - 這是有充分理由的。
OpenVPN 的主要優勢之一是它的高度可配置性。它本身不受任何平台支持,但可以通過第三方軟件在大多數平台上使用。定制 OpenVPN 客戶端和應用程序通常可以從各個 VPN 提供商處獲得,但核心開源代碼是由OpenVPN項目。
OpenVPN 項目的許多開發人員和貢獻者也為 OpenVPN Technologies Inc. 工作,該公司負責監督該項目。
OpenVPN 在 UDP 端口上運行最佳,但它可以設置為在任何端口上運行(請參閱後面的註釋)。這包括 TCP 端口 443,該端口由常規 HTTPS 流量使用。通過 TCP 端口 443 運行 OpenVPN 使得很難將 VPN 連接與銀行、電子郵件服務和在線零售商使用的安全連接區分開來。這使得 OpenVPN 很難被阻止。
OpenVPN 的另一個優點是用於提供加密的 OpenSSL 庫支持多種密碼。但實際上,商業 VPN 服務通常只使用 Blowfish 和 AES。我在下面討論這些。
根據愛德華·斯諾登獲得的信息,似乎只要使用完美前向保密,那麼 OpenVPN 就不會受到 NSA 的破壞或削弱。
最近對 OpenVPN 的一項眾包審計現已完成,另一項由 Private Internet Access 資助的審計也已完成。未發現影響用戶隱私的嚴重漏洞。我們發現了幾個漏洞,這些漏洞可能導致 OpenVPN 服務器容易受到拒絕服務 (DoS) 攻擊,但這些漏洞已在 OpenVPN 2.4.2 中得到修復。
OpenVPN 通常被認為是最安全的 VPN 協議,並在 VPN 行業得到廣泛支持。因此,我將在下面詳細討論 OpenVPN 加密。
OpenVPN 加密
OpenVPN加密包括兩部分——數據通道加密和控制通道加密。數據通道加密用於保護您的數據。控制通道加密可保護您的計算機和 VPN 服務器之間的連接。
任何防禦措施的強度取決於其最弱點,因此不幸的是,一些 VPN 提供商在一個通道上使用比另一個通道更強的加密(通常在控制通道上更強)。
例如,經常看到 VPN 服務被宣傳為使用 AES-256 密碼、RSA-4096 握手加密和 SHA-512 哈希身份驗證。這聽起來非常令人印象深刻,直到你意識到它僅有的指的是控制通道加密,而不是數據通道,數據通道僅使用 Blowfish-128 和 SHA1 哈希身份驗證進行加密。這樣做只是出於營銷原因。
如果數據和控制通道使用不同的加密,則 OpenVPN 連接的真實強度將通過所使用的較弱的加密套件來衡量。
為了獲得最大的安全性,數據和控制通道加密都應該盡可能強。然而,使用的加密越強,連接速度就越慢,這就是為什麼一些提供商在數據通道加密方面精打細算的原因。
控制通道加密也稱為 TLS 加密,因為傳輸層安全協議是用於安全協商您的計算機和 VPN 服務器之間的連接的技術。這與您的瀏覽器用於安全協商與 HTTPS 加密網站的連接的技術相同。
- 控制通道加密由密碼、握手加密和哈希認證組成。
- 數據通道加密由密碼和散列認證組成。
VPN 提供商通常對控制通道和數據通道使用相同級別的加密。在我們的評論和“紅綠燈”表中,如果每個通道使用不同的值,我們只會單獨列出它們。
如果我們聲明提供商使用 AES-256 密碼,則意味著 AES-256 密碼用於控制和數據通道。 *
(*這應該至少是這樣。一些遺留審查不符合我們當前的指導方針,但這些應該及時淘汰)。
密碼
OpenVPN 可以使用多種對稱密鑰密碼為了保護控制和數據通道上的數據。實際上,商業 VPN 提供商僅使用 Blowfish、AES 和(極少數)Camellia。
河豚
Blowfish-128 是 OpenVPN 使用的默認密碼。理論上,密鑰大小的範圍可以從 32 位到 448 位,但 Blowfish-128 是您在野外可能遇到的唯一版本。
河豚 通常認為對於休閒目的來說足夠安全,但也有已知的弱點。它是由著名密碼學家布魯斯·施奈爾 (Bruce Schneier) 創建的,他在 2007 年表示:“但在這一點上,我很驚訝它仍在使用。”
我們認為,使用 Blowfish-128 作為 OpenVPN 數據通道上的第二道防線是可以接受的。然而,當在控制通道上使用時,不應將其視為安全的。
AES
AES已成為 VPN 行業範圍內的“黃金標準”對稱密鑰密碼。 AES 是通過 NIST 認證並且幾乎被普遍認為非常安全的。美國政府使用 AES-256 來保護“安全”數據。
事實上它有 128 位塊大小而不是 Blowfish 的 64 位塊大小也意味著它可以比 Blowfish 更好地處理更大的文件(超過 4 GB)。除此之外,AES 指令集還受益於大多數平台上的內置硬件加速。
AES 通常有 128 位和 256 位密鑰大小(也存在 192 位 AES)。據任何人所知,AES-128 仍然是安全的。然而,鑑於我們現在所了解的 NSA 對加密標準的攻擊程度,大多數專家都認為 AES-256 提供了更高的安全裕度。
不過,為了確保沒有人覺得這個主題太簡單,對此問題存在一些爭論。 AES-128具有更強的關鍵時間表比 AES-256 強,這導致一些非常著名的專家認為 AES-128 實際上比 AES-256 更強。
然而,普遍的共識是 AES-256 更強。
茶花
Camellia 是一種現代安全密碼,至少與 AES 一樣安全和快速。它提供 128、192 和 256 位密鑰大小。然而,由於 NIST 認證以及美國政府的使用,AES 幾乎總是被用來代替 Camellia。
但正如我下面討論的,有理由不信任 NIST 認證的密碼。 Camellia 是非 NIST 密碼這一事實是選擇它而不是 AES 的主要原因。然而,此選項很少可用。
還值得注意的是,Camellia 沒有像 AES 那樣經過充分的弱點測試。
握手加密
為了安全地協商您的設備和 VPN 服務器之間的連接,OpenVPN 使用TLS 握手。這允許 OpenVPN 客戶端和 VPN 服務器建立用於通信的密鑰。
為了保護此握手,TLS 通常使用 RSA公鑰密碼系統。這是一種加密和數字簽名算法,用於識別TLS/SSL 證書。然而,它也可以使用 Diffie-Hellman 或 ECDH 密鑰交換。
RSA
RSA 是一種非對稱加密系統 - 使用公鑰來加密數據,但使用不同的私鑰來解密數據。在過去 20 年左右的時間裡,它一直是互聯網安全的基礎。
現在眾所周知,密鑰長度為 1024 位 (RSA-1024) 或更少的 RSA 並不安全,並且幾乎可以肯定已被 NSA 破解。因此,互聯網公司紛紛採取一致行動,放棄 RSA-1024。
不幸的是,我們仍然發現一些 VPN 服務繼續使用 RSA-1024 來保護握手。這不好。
RSA-2048 及更高版本是仍然被認為是安全的。 RSA 本身不提供完美前向保密 (PFS)。然而,這可以通過在其密碼套件中包含 Diffie-Hellman (DH) 或橢圓曲線 Diffie-Hellman (ECDH) 密鑰交換來實現。
在這種情況下,DH 或 ECDH 密鑰的強度並不重要,因為它正在使用僅有的提供完美的前向保密。使用 RSA 保護連接的安全。
因為它可能會引起混亂,所以我還要指出,RSA 密碼系統與名譽掃地的美國科技公司 RSA Security LLC 無關。這家公司故意削弱其旗艦BSAFE加密產品經過受賄美國國家安全局撥款 1000 萬美元。
迪菲-赫爾曼和 ECDH
OpenVPN 有時使用的另一種(競爭對手)握手加密是 Diffie-Hellman (DH) 加密密鑰交換。密鑰長度通常為 2048 位或 4096 位。請注意,由於容易受到僵局攻擊,應避免低於 DH-2048 的任何內容。
與 RSA 相比,Diffie-Hellman 握手的主要優點是它本身提供完美的前向保密。然而,正如已經指出的,只需將 DH 密鑰交換添加到 RSA 握手即可達到類似的目的。
Diffie-Hellman 因其重複使用一組有限的素數而引起了巨大爭議。這使得它很容易被強大的對手破解,比如美國國家安全局。因此,Diffie-Hellman 本身並不能實現安全的握手加密。然而,當用作 RSA 密碼套件的一部分時,它就很好了。
橢圓曲線 Diffie-Hellman (ECDH) 是一種較新形式的密碼學,不易受到這種攻擊。這是因為它使用特定類型代數曲線的屬性而不是大素數來加密連接。
ECDH 可以用作 RSA 握手的一部分以提供完美的前向保密,或者可以自行安全地加密握手(使用 ECDSA 簽名)。這也提供了 PFS。
ECDH 密鑰長度從 384 位開始。這被認為是安全的,但當單獨使用來保護 TLS 握手時,時間越長越好(無論如何,就安全性而言)。
SHA 哈希驗證
這也稱為數據身份驗證或哈希消息身份驗證代碼 (HMAC)。
安全哈希算法(SHA) 是一種加密哈希函數,用於(除其他外)驗證數據和 SSL/TLS 連接。這包括 OpenVPN 連接。
它創建有效 TLS 證書的唯一指紋,可由任何 OpenVPN 客戶端進行驗證。即使是最微小的變化也是可以察覺的。如果證書被篡改,將立即檢測到並拒絕連接。
這對於防止中間人 (MitM) 攻擊非常重要,在這種攻擊中,攻擊者會嘗試將您的 OpenVPN 連接轉移到其自己的服務器之一,而不是您的 VPN 提供商。例如,它可以通過侵入您的路由器來做到這一點。
如果對手可以破解提供商的真實 TLS 證書的哈希值,則它可以反轉哈希值以創建偽造的證書。然後,您的 Open VPN 軟件將驗證該連接是否真實。
SHA 安全嗎?
當用於保護 HTTPS 網站時,SHA-1 被破壞。這件事已經為人所知有一段時間了。 SHA-1 網站仍然可以找到,但正在被逐步淘汰。現在,當您嘗試連接到使用 SHA-1 保護的網站時,大多數瀏覽器都會發出警告。
現在建議使用 SHA-2 和 SHA-3 哈希函數,並且它們是安全的。 SHA-2 包括 SHA-256、SHA-384 和 SHA-512。然而…
OpenVPN 僅對 HMAC 使用 SHA。我認為在這裡討論太多細節沒有用,但 SHA 哈希身份驗證是 HMAC 算法的一部分。攻擊嵌入 SHA-1 的 HMAC 比攻擊 SHA-1 哈希函數本身要困難得多。
換句話說,OpenVPN 使用的 HMAC SHA-1 被認為是安全的,並且有數學證明。當然,HMAC SHA-2 和 HMAC SHA-3 是偶數更多的安全的!事實上,最近的 OpenVPN 審核認識到 HMAC SHA-1 是安全的,但建議改用 HMAC SHA-2 或 HMAC SHA-3。
筆記
美國國家標準技術研究所
AES、RSA、SHA-1 和 SHA-2 均由美國開發和/或認證美國國家標準技術研究院(美國國家標準技術研究所)。該機構自己承認在密碼開發方面與美國國家安全局密切合作。
鑑於我們現在所知的 NSA 系統性地削弱國際加密標准或在國際加密標準中建立後門,我們有充分的理由質疑 NIST 算法的完整性。
當然,NIST 強烈反駁了此類指控:
”NIST 不會故意削弱加密標準。”
它還邀請公眾參與一些即將提出的加密標準,此舉旨在增強公眾信心。
這紐約時報然而,指責 NSA 通過引入無法檢測的後門或顛覆公共開發流程來削弱算法,從而規避了 NIST 批准的加密標準。
當 RSA Security(EMC 的一個部門)私下告訴客戶停止使用據報導包含 NSA 設計的缺陷的加密算法時,這種不信任進一步加劇。該算法也得到了 NIST 的認可。
此外,Dual_EC_DRBG(雙橢圓曲線確定性隨機位生成器)是 NIST 設計的加密標準。多年來,人們都知道它是不安全的。
2006 年,荷蘭埃因霍溫科技大學指出,針對它的攻擊很容易在“普通 PC”上發起。微軟工程師還指出了算法中可疑的後門。
儘管存在這些擔憂,但 NIST 引領的領域,整個行業也緊隨其後。 Microsoft、Cisco、Symantec 和 RSA 都將該算法包含在其產品的加密庫中。這在很大程度上是因為遵守 NIST 標準是獲得美國政府合同的先決條件。
NIST 認證的加密標准在全球範圍內幾乎無處不在,遍及依賴隱私的工業和商業的所有領域。這讓整個情況變得相當令人不寒而栗。
也許正是因為如此依賴這些標準,密碼學專家一直不願意正視這個問題。
AES-CBC 與 AES-GCM
直到最近,您在 VPN 世界中可能遇到的唯一 AES 密碼是 AES-CBC(密碼塊鏈)。這是指分組密碼模式,這是一個不值得在這裡討論的複雜主題。儘管加拿大廣播公司可能理論上有一些漏洞,普遍的共識是 CBC 是安全的。 OpenVPN 手冊中確實推薦了 CBC。
OpenVPN 現在還支持 AES-GCM(Galios/Counter 模式)。
- GCM 提供身份驗證,無需 HMAC SHA 哈希函數。
- 它也比 CBC 稍快,因為它使用硬件加速(通過線程到多個處理器核心)。
AES-CBC 仍然是最常用的模式,但我們現在開始“在野外”遇到 AES-GCM。鑑於 GCM 的優勢,這種趨勢很可能會持續下去。從密碼學的角度來看,儘管如此,AES-CBC 和 AES-GCM 都非常安全。
OpenVPN UDP 與 OpenVPN TCP
OpenVPN可以跑過去TCP(傳輸控制協議)或 UDP(用戶數據報協議)。
- TCP=可靠。每當計算機使用 TCP 發送網絡數據包時,它都會等待數據包已到達的確認,然後再發送下一個數據包。如果沒有收到確認,它將重新發送數據包。這稱為糾錯。所有數據都有“保證交付”,但速度可能相當慢。
- UDP = 快。使用 UDP 時,不會執行此類錯誤糾正。數據包只是簡單地發送和接收,無需確認或重試。這使得 UDP 比 TCP 快得多,但可靠性較差。
如果可以選擇,我建議使用更快的 UDP 協議,除非您遇到連接問題。這是大多數 VPN 提供商採用的默認策略。
使用 TCP 端口 443 上的 OpenVPN 擊敗審查制度
OpenVPN 的一大優勢是它可以在任何端口上運行,包括 TCP 端口 443。這是 HTTPS 使用的端口,HTTPS 是保護所有安全網站的加密協議。
如果沒有 HTTPS,就不可能進行任何形式的在線商務,例如購物或銀行業務。因此,該端口被封鎖的情況非常罕見。
另外,TCP 端口 443 上的 VPN 流量可以在 TLS 加密內部路由,方式與 HTTPS 使用的方式相同。這使得很多使用高級技術更難發現深度包檢測技術。因此,TCP 端口 443 是逃避 VPN 封鎖的首選端口。
許多 VPN 提供商都提供使用其定制軟件更改 OpenVPN 使用的端口號的功能。
即使您的不支持,許多 VPN 提供商實際上也支持在服務器級別使用 TCP 端口 443 的 OpenVPN。您可以通過對 OpenVPN 配置 (.ovpn) 文件進行簡單編輯來切換到它。因此,值得向您的 VPN 提供商詢問此事。
值得注意的是,網絡工程師不喜歡這種策略,因為 TCP over TCP 非常效率低下。然而,當談到擊敗審查制度時,它通常會奏效。
SSTP 默認使用 TCP 端口 443。
摘要
VPN協議
- PPTP是非常不安全的,應該避免。雖然 L2TP/IPsec 的易於設置和跨平台兼容性很有吸引力,但它也具有相同的優勢,而且安全性更高。
- L2TP/IPsec對於非關鍵用途來說是一個很好的 VPN 解決方案。在不支持 OpenVPN 的舊設備上尤其如此。然而,它已受到美國國家安全局的嚴重破壞。
- SSTP提供 OpenVPN 的大部分優點,但主要只是 Windows 協議。這確實意味著它可以更好地集成到操作系統中,但由於這一限制,VPN 提供商對它的支持很差。除此之外,它的專有性質以及由 Microsoft 創建的事實意味著我不信任它。
- IKEv2是一個非常好的(安全且快速)協議。特別是移動用戶,甚至可能更喜歡它而不是 OpenVPN,因為它提高了互聯網連接中斷時重新連接的能力。對於黑莓用戶來說,這幾乎是唯一可用的選擇。盡可能使用開源版本。
- 開放VPN是大多數情況下推薦的 VPN 協議。它快速、可靠、安全且開源。它本身沒有真正的缺點,但要真正安全,良好實施非常重要。這意味著具有完美前向保密性的強加密。
OpenVPN 加密
當談到加密時,細節決定成敗。我們經常看到 VPN 提供商聲稱他們使用“超強 256 位”AES OpenVPN 加密,但這實際上並不能告訴我們太多信息。 AES-256 確實是一種強大的密碼,但如果所使用的加密套件的其他方面較弱,那麼您的數據將不安全。
- 密碼– 這可以保護您的實際數據。 AES-256 現已成為行業標準並推薦使用。
- 握手– 這可以保護您與 VPN 服務器的連接。 RSA-2048+ 或 ECDH-384+ 是安全的。重要的是 RSA-1024 和 Diffie-Hellman 握手是不是。
- 哈希認證– 創建一個唯一的指紋,用於驗證數據和 TLS 證書(即檢查您正在連接的服務器是否確實是您認為正在連接的服務器)。 HMAC SHA-1 絕對沒問題,但 HMAC SHA-2(SHA-256、SHA-384 和 SHA-512)和 HMAC SHA-3 甚至更好更多的安全的!請注意,哈希認證是不是如果使用 AES-GCM 密碼,則需要。
- 完美的前向保密(PFS) – 這確保為每個會話創建新的加密密鑰。除非實現 PFS,否則 OpenVPN 不應被視為安全。這可以通過在 RSA 握手或 DH 或 ECDH 握手中包含 Diffie-Hellman 或 ECDH 密鑰交換來完成。
- 加密的安全性取決於其最弱點。這意味著加密設置應該很強兩個都數據和控制通道。
- 對密碼和密鑰使用更高的位長度幾乎總是更安全,但這是以速度為代價的。
OpenVPN 將在客戶端和服務器之間隨意協商密碼。除非定義了非常具體的參數,否則 OpenVPN 可能會默認為弱設置。至少,OpenVPN 將默認使用 Blowfish-128 密碼、無 PFS 的 RSA-1024 握手以及 HMAC SHA-1 哈希身份驗證。
結論
希望您現在能夠更好地了解安全 VPN 連接的構成要素。然而,當談到正確配置 VPN 時,加密只是故事的一半。另一半是確保沒有流量在 VPN 連接之外進入或離開您的計算機。
要了解更多相關信息,請查看我們的IP 洩露完整指南。
