點對點隧道協定

點對點隧道協定(英語:Point to Point Tunneling Protocol,縮寫為PPTP)是實現虛擬私人網路(VPN)的方式之一。PPTP使用傳輸控制協定(TCP)建立控制通道來傳送控制命令,以及利用通用路由封裝(GRE)通道來封裝點對點協定(PPP)封包以傳送資料。這個協定最早由微軟等廠商主導開發,但因為它的加密方式容易被破解,微軟已不建議使用這個協定。

PPTP的協定規範本身並未描述加密身份驗證的部份,只依靠點對點協定(PPP)來實現安全方面的功能。因為PPTP協定內建在微軟Windows家族的各個產品中,所以在微軟點對點協定(PPP)協定堆棧中,提供了各種標準的身份驗證與加密機制來支援PPTP [1]。 在微軟視窗系統中,它可以搭配PAPCHAPMS-CHAP v1/v2或EAP來進行身份驗證。通常也可以搭配微軟點對點加密(MPPE)英語Microsoft_Point-to-Point_EncryptionIPSec的加密機制來提高安全性[2]

WindowsMac OS平台之外,LinuxFreeBSD等平台也提供開放原始碼的版本。

規格

PPTP不是IETF建議的標準,是由微軟阿森德通訊公司(Ascend Communications)英語Ascend_Communications(現在屬於Alcatel-Lucent集團)、3Com等廠商聯合形成的產業聯盟開發[3]。 1999年7月發佈的 RFC 2637是第一個正式的PPTP規格書。

PPTP以通用路由封裝(GRE)協定向對方作一般的點對點傳輸。通過TCP1723埠來發起和管理GRE狀態。因為PPTP需要2個網絡狀態,因此會對穿越防火牆造成困難。很多防火牆不能完整地傳遞連線,導致無法連接。 在WindowsMac OS平台,通常PPTP可搭配MSCHAP-v2EAP-TLS進行身份驗證 ,也可配合微軟點對點加密(MPPE)英語Microsoft_Point-to-Point_Encryption進行連接時的加密。

與PPTP相似的另一種常見的VPN協定是第二層隧道協定(L2TP)[4]

應用

PPTP因為易於設置和是首個支援微軟撥號連線的協定而流行。自Microsoft Windows 95 OSR2開始包含PPTP用戶端,但是被限制只可同時存2個向外連線。Windows XP遠程桌面連接包含PPTP。

過往因MPPE是軟件專利,所以Linux曾缺乏完整的PPTP支援。但是,自從在2005年10月28日發佈的Linux 2.6.14起,Linux核心提供完整的PPTP支援(包含對免費版本的MPPE支援)。

實作

PPTP 是第一個被 Microsoft 撥號網絡支援的 VPN 通訊協定。自 Windows 95 OSR2 起,所有的 Microsoft Windows 版本都內建了 PPTP 用戶端軟件(雖然只能支援最多兩個同時對外的連線)。 在 Mobile 版本上,Microsoft Windows Mobile 2003 與更新的版本也支援 PPTP。Windows 的路由及遠端存取套件有包含 PPTP 伺服器。 Microsoft 的實作在 MS-CHAP 認證協定內使用了單次 DES 加密,但單次 DES 常被認為無法提供資料足夠等級的安全防護。[2]

Windows Vista 與更新版本的 PPTP 開始支援 PEAP。認證機制有 PEAPv0 / EAP-MSCHAPv2 (使用密碼) 還有 PEAP-TLS (智能卡與證書)。 Windows Vista 同時停止了 MSCHAP-v1 的認證協定。[3]

Linux 的 PPTP 伺服器一般是使用 PoPToP[4] 套件加上 PPP 與 MPPE 的 Kernel Module。PPTP的用戶端程式從 1997[5] 就開始提供了,但伺服器部份要等到 Matthew Ramsay 在 1999[6]開發的版本從 Moreton Bay 以 GNU GPL 發行後才真正開始有人大量使用。但是,Linux發行版本一開始通常都不包含 MPPE 的部份(因為擔心有專利問題)所以不完整,直到 2005/10/28 發佈的 Linux Kernel 2.6.14 才正式支援 MPPE。 SuSE Linux 10 是第一個有完整可用的 PPTP 用戶端程式的版本。另外還有 ACCEL-PPP 套件: 它提供了 PPTP / L2TP / PPPoE 伺服器[7],可提供 kernel 模式的 PPTP 協定。

OpenBSD 跟 FreeBSD 在 "ports" 套件系統裏提供 PoPToP。 macOS 與 iOS 曾提供內建 PPTP 用戶端程式,但在 2016 年發表的 iOS 10 和 macOS Sierra 中,PPTP 支援被移除。 OS X Server 內建了 PPTP 服務。 Cisco 與 Efficient Networks 有另外販賣給舊版 Mac OS 使用的 PPTP 用戶端程式。 許多 Android 智能電話也支援 PPTP,不過官方版本的 Android 12 已移除了PPTP功能。

安全性

因已經發現了PPTP嚴重的安全漏洞,所以該協定經常被使用作為安全分析的課題。已知的漏洞包括所使用的底層PPP認證協定、MPPE協定的設計以及MPPE和PPP認證之間在建立會話金鑰方面的整合。[5][6][7]

以下是這些漏洞的摘要:

  • MS-CHAP-v1是不安全的,因為已有工具可以從捕獲到的MSCHAP-v1交換包中輕易地提取出NT密碼的雜湊值。[8]
  • 當使用MS-CHAP-v1時,MPPE在通訊流的兩個方向上使用相同的RC4會話金鑰進行加密。這可以通過將每個方向的數據流一起進行異或運算,用標準方法進行密文分析。[9]
  • MS-CHAP-v2對捕獲的挑戰響應(challenge response)封包容易受到字典攻擊。目前已有工具可以快速執行這一過程。[10]
  • 2012年,有研究表明,對MS-CHAP-v2金鑰進行暴力攻擊的複雜性相當於對單個DES金鑰進行暴力攻擊。還演示了一項在線服務,它能夠在23小時內解密MS-CHAP-v2 MD4口令。[11][12]
  • MPPE使用RC4流密碼進行加密。沒有對密文流進行認證的方法,因此密文很容易受到位元翻轉攻擊。攻擊者可以在傳輸過程中修改流並調整單位元來改變輸出流而不被檢測到。這些位翻轉可能會被協定本身通過校驗和或其他方式檢測到。[8]

EAP-TLS被認為是PPTP的高級認證選擇;[13]然而,它需要為用戶和伺服器證書實現公鑰基礎設施。因此,對於一些遠程訪問的裝置來說,它可能不是一個可行的認證選擇。大多數使用PPTP的網絡必須應用額外的安全措施,否則會被認為完全不適合現代互聯網環境。同時,這樣做意味着在某種程度上否定了該協定的上述好處。因此,不管從哪方面考慮,使用PPTP都是一種雙輸的局面。[14]

其他 VPN 協定

參考文獻

  1. ^ Microsoft Corporation, Microsoft Point-to-Point Encryption (MPPE). [2010-02-10]. (原始內容存檔於2016-03-10). 
  2. ^ RFC 3078
  3. ^ RFC 263
  4. ^ Layer Two Tunneling Protocol "L2TP"頁面存檔備份,存於互聯網檔案館),RFC 2661, W. Townsley et al., 1999-08
  5. ^ Malware FAQ: Microsoft PPTP VPN. www.sans.org. [2020-06-16]. (原始內容存檔於2021-04-26) (英語). 
  6. ^ Microsoft says don't use PPTP and MS-CHAP - The H Security: News and Features. www.h-online.com. [2020-06-16]. (原始內容存檔於2020-11-12). 
  7. ^ A death blow for PPTP - The H Security: News and Features. www.h-online.com. [2020-06-16]. (原始內容存檔於2021-05-02). 
  8. ^ 8.0 8.1 Cryptanalysis of Microsoft's Point-to-Point Tunneling Protocol (PPTP) (PDF). (原始內容存檔 (PDF)於2017-08-09). 
  9. ^ Bruce Schneier. Cryptanalysis of Microsoft's PPTP Authentication Extensions (MS-CHAPv2) (PDF). (原始內容存檔 (PDF)於2018-12-24). 
  10. ^ Asleap | Will Hack For SUSHI. [2020-06-16]. (原始內容存檔於2021-03-08) (美國英語). 
  11. ^ Divide and Conquer: Cracking MS-CHAPv2 with a 100% success rate. web.archive.org. 2016-03-16 [2020-06-16]. 原始內容存檔於2016-03-16. 
  12. ^ Marlinspike demos MS-CHAPv2 crack. www.theregister.com. [2020-06-16]. (原始內容存檔於2021-03-08) (英語). 
  13. ^ Archiveddocs. Choosing EAP-TLS or MS-CHAP v2 for User-Level Authentication: Virtual Private Network (VPN). docs.microsoft.com. [2020-06-16]. (原始內容存檔於2021-03-08) (美國英語). 
  14. ^ VPN Protocol Comparison: IKEv2 vs IKEv1 vs OpenVPN® vs L2TP vs PPTP. VPN Unlimited Blog. 2018-05-14 [2020-06-16]. (原始內容存檔於2021-03-09) (美國英語). 

外部連結