点对点隧道协议

本页使用了标题或全文手工转换,现处于中国大陆简体模式
求闻百科,共笔求闻

点对点隧道协议(英语:Point to Point Tunneling Protocol,缩写为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. Malware FAQ: Microsoft PPTP VPN. www.sans.org. [2020-06-16] (英语). 
  6. Microsoft says don't use PPTP and MS-CHAP - The H Security: News and Features. www.h-online.com. [2020-06-16]. 
  7. A death blow for PPTP - The H Security: News and Features. www.h-online.com. [2020-06-16]. 
  8. 8.0 8.1 Cryptanalysis of Microsoft's Point-to-Point Tunneling Protocol (PPTP) (PDF). 
  9. Bruce Schneier. Cryptanalysis of Microsoft's PPTP Authentication Extensions (MS-CHAPv2) (PDF). 
  10. Asleap | Will Hack For SUSHI. [2020-06-16] (美国英语). 
  11. Divide and Conquer: Cracking MS-CHAPv2 with a 100% success rate. web.archive.org. 2016-03-16. 
  12. Marlinspike demos MS-CHAPv2 crack. www.theregister.com. [2020-06-16] (英语). 
  13. Archiveddocs. Choosing EAP-TLS or MS-CHAP v2 for User-Level Authentication: Virtual Private Network (VPN). docs.microsoft.com. [2020-06-16] (美国英语). 
  14. VPN Protocol Comparison: IKEv2 vs IKEv1 vs OpenVPN® vs L2TP vs PPTP. VPN Unlimited Blog. 2018-05-14 [2020-06-16] (美国英语).