點對點隧道協議
点对点隧道协议(英语:Point-to-Point Tunneling Protocol,缩写为 PPTP)是实现虚拟专用网(VPN)的一种方式。PPTP 使用传输控制协议(TCP)建立控制通道以发送控制命令,并利用通用路由封装(GRE)通道封装点对点协议(PPP)数据包以发送数据。该协议最早由微软等厂商主导开发,但由于其加密方式容易被破解,微软现已不建议使用此协议。 PPTP 的协议规范本身并未描述加密或身份验证部分,而是依靠点对点协议(PPP)来实现安全功能。由于 PPTP 协议内置于微软 Windows 系列产品中,因此微软的点对点协议(PPP)协议栈提供了多种标准的身份验证与加密机制以支持 PPTP[1]。例如,在微软视窗系统中,PPTP 可以搭配 PAP、CHAP、MS-CHAP v1/v2 或 EAP 进行身份验证,通常也可以与微软点对点加密(MPPE)或 IPSec 的加密机制结合使用以增强安全性[2]。 在Windows或Mac OS平台之外,Linux與FreeBSD等平台也提供開放原始碼的版本。 規格PPTP不是IETF建議的標準,是由微軟、阿森德通信公司(Ascend Communications)(現在属于Alcatel-Lucent集团)、3Com等廠商聯合形成的產業聯盟開發[3]。 1999年7月發布的 RFC 2637是第一個正式的PPTP規格書。 PPTP以通用路由封装(GRE)協定向對方作一般的點對點傳輸。通過TCP1723端口來發起和管理GRE狀態。因為PPTP需要2個網絡狀態,因此會對穿越防火牆造成困難。很多防火牆不能完整地傳遞連線,導致無法連接。 在Windows或Mac OS平台,通常PPTP可搭配MSCHAP-v2或EAP-TLS進行身份驗證 ,也可配合微軟點對點加密(MPPE)進行連接時的加密。 與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] 以下是這些漏洞的摘要:
EAP-TLS被認為是PPTP的高級認證選擇;[13]然而,它需要為用戶和服務器證書實現公鑰基礎設施。因此,對於一些遠程訪問的設備來說,它可能不是一個可行的認證選擇。大多數使用PPTP的網絡必須應用額外的安全措施,否則會被認為完全不適合現代互聯網環境。同時,這樣做意味著在某種程度上否定了該協議的上述好處。因此,不管從哪方面考慮,使用PPTP都是一種雙輸的局面。[14]
其他 VPN 協議
参考文獻
外部連結
|