【点对点隧道协议】
点对点隧道协议（Point to Point Tunneling Protocol，缩写为PPTP）是实现虚拟私人网路（VPN）的方式之一。PPTP使用传输控制协议（TCP）建立控制通道来传送控制命令，以及利用通用路由封装（GRE）通道来封装点对点协议（PPP）封包以传送资料。这个协议最早由微软等厂商主导开发，但因为它的加密方式容易被破解，微软已不建议使用这个协议。
PPTP的协定规范本身并未描述加密或身份验证的部份，只依靠点对点协议（PPP）来实现安全方面的功能。因为PPTP协定内建在微软Windows家族的各个产品中，所以在微软点对点协议（PPP）协议堆栈中，提供了各种标准的身份验证与加密机制来支援PPTP 。 在微软视窗系统中，它可以搭配PAP、CHAP、MS-CHAP v1/v2或EAP来进行身份验证。通常也可以搭配微软点对点加密（MPPE）或IPSec的加密机制来提高安全性。
在Windows或Mac OS平台之外，Linux与FreeBSD等平台也提供开放原始码的版本。
== 规格 ==
PPTP不是IETF建议的标准，是由微软、Ascend Communications（现在属于Alcatel-Lucent集团）、3Com等厂商联合形成的产业联盟开发。 1999年7月发布的 RFC 2637是第一个正式的PPTP规格书。
PPTP以通用路由封装（GRE）协定向对方作一般的点对点传输。通过TCP1723端口来发起和管理GRE状态。因为PPTP需要2个网络状态，因此会对穿越防火墙造成困难。很多防火墙不能完整地传递连线，导致无法连接。
在Windows或Mac OS平台，通常PPTP可搭配MSCHAP-v2或EAP-TLS进行身份验证 ，也可配合微软点对点加密（MPPE）进行连接时的加密。
与PPTP相似的另一种常见的VPN协定是第二层隧道协议（L2TP）。
== 应用 ==
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 伺服器一般是使用 PoPToP4 套件加上 PPP 与 MPPE 的 Kernel Module。PPTP的用户端程式从 19975 就开始提供了，但伺服器部份要等到 Matthew Ramsay 在 19996开发的版本从 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认证之间在建立会话密钥方面的整合。
以下是这些漏洞的摘要：
* MS-CHAP-v1是不安全的，因为已有工具可以从捕获到的MSCHAP-v1交换包中轻易地提取出NT密码的哈希值。
* 当使用MS-CHAP-v1时，MPPE在通信流的两个方向上使用相同的RC4会话密钥进行加密。这可以通过将每个方向的数据流一起进行异或运算，用标准方法进行密文分析。
* MS-CHAP-v2对捕获的挑战响应（challenge response）数据包容易受到字典攻击。目前已有工具可以快速执行这一过程。
* 2012年，有研究表明，对MS-CHAP-v2密钥进行暴力攻击的复杂性相当于对单个DES密钥进行暴力攻击。还演示了一项在线服务，它能够在23小时内解密MS-CHAP-v2 MD4口令。
* MPPE使用RC4流密码进行加密。没有对密文流进行认证的方法，因此密文很容易受到比特翻转攻击。攻击者可以在传输过程中修改流并调整单比特来改变输出流而不被检测到。这些位翻转可能会被协议本身通过校验和或其他方式检测到。
EAP-TLS被认为是PPTP的高级认证选择；然而，它需要为用户和服务器证书实现公钥基础设施。因此，对于一些远程访问的设备来说，它可能不是一个可行的认证选择。大多数使用PPTP的网络必须应用额外的安全措施，否则会被认为完全不适合现代互联网环境。同时，这样做意味著在某种程度上否定了该协议的上述好处。因此，不管从哪方面考虑，使用PPTP都是一种双输的局面。
== 其他 VPN 协议 ==
* L2F Layer 2 Forwarding Protocol
* L2TP Layer 2 Tunneling Protocol
* PLIP Parallel Line Internet Protocol
* IPsec
* SLIP Serial Line Internet Protocol
* PPP Point-to-Point Protocol
== 参考文献 ==
== 外部连结 ==
*  On PPTP security date=20080709025007
*  Windows NT: Understanding PPTP from Microsoft
*  FAQ on security flaws in Microsoft's implementation date=20150921153209 ，Bruce Schneier，1998
*  Cryptanalysis of Microsoft's PPTP Authentication Extensions date=20150921171117  (MS-CHAPv2), Bruce Schneier，1999
*  Poptopdate=20090207193340 ，a PPTP Server for Linux
*  PPTP Client date=20210505023447 ，a Linux，FreeBSD，NetBSD and OpenBSD client
*  pptpproxy，a Linux，FreeBSD，NetBSD and OpenBSD pptp protocol forwarder (proxy)
*  ASLEAPdate=20080229075937 ，a PPTP password cracker and traffic sniffer
*  PPTP Protocol Security date=20201027171120  by James Cameron and Peter Mueller
*  Setting up EAP-TLS security for PPTP