點對點隧道協議

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

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

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

規格

PPTP不是IETF建議的標準,是由微軟Ascend Communications(現在属于Alcatel-Lucent集团)、3Com等廠商聯合形成的產業聯盟開發[3]。 1999年7月发布的 RFC 2637是第一個正式的PPTP規格書。

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

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

應用

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

以往,Linux缺乏完整的PPTP支援,這是因為MPPE是软件专利。但是,自從在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。 OSX 與 iOS 則提供內建 PPTP 客戶端程式。 OS X Server 內建了 PPTP 服務。 Cisco 與 Efficient Networks 有另外販賣給舊版 Mac OS 使用的 PPTP 客戶端程式。 許多 Android 智慧形手機也支援 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)
  2. RFC 3078
  3. RFC 263
  4. Layer Two Tunneling Protocol "L2TP",RFC 2661, W. Townsley et al., 1999-08
  5. . www.sans.org. [2020-06-16] (英语).
  6. . www.h-online.com. [2020-06-16].
  7. . www.h-online.com. [2020-06-16].
  8. (PDF).
  9. Bruce Schneier. (PDF).
  10. . [2020-06-16] (美国英语).
  11. . web.archive.org. 2016-03-16 [2020-06-16].
  12. . www.theregister.com. [2020-06-16] (英语).
  13. Archiveddocs. . docs.microsoft.com. [2020-06-16] (美国英语).
  14. . VPN Unlimited Blog. 2018-05-14 [2020-06-16] (美国英语).

外部連結

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.