概述
微軟點對點加密法(MPPE)是一種在基於點對點協定(PPP)的拔號連線中或在基於點對點隧道協定(PPTP)虛擬專用網路(VPN)技術的連線中對傳輸數據進行加密操作。MPPE使RSA用算法進行加密,並支持40位和128位的對話密鑰,而這兩種密鑰經常被更改以加強安全。MPPE不對數據進行壓縮或解壓的操作。
微軟點到點加密方案是一種將點到點協定(PPP)包用加密形式表示的方法。MPPE運用RSARC4[3]算法提供數據的保密性。用於初始化密碼錶的會話密鑰的長度可以協商。MPPE目前支持40位和128位的會話密鑰
規格
PPTP的規格由RFC2637所訂定,但是它不是IETF建議的標準。
PPTP以GRE協定向對方作一般的點對點傳輸。通過TCP1723連線埠來發起和管理GRE狀態。因為PPTP需要2個網路狀態,因此會對穿越防火牆造成困難。很多防火牆不能完整地傳遞連線,導致無法連線。這經常發生在Windows或MacOSPPTP可配合MSCHAP-v2或EAP-TLS進行身份驗證。使用VPN可配合微軟點對點加密《MPPE》進行連線時的加密[3]。
PPTP是由微軟、AscendCommunications《現在的Alcatel-Lucent》、3COM等廠商開發。
套用
PPTP因為易於設定和是首個支援微軟撥號連線的協定而流行。自MicrosoftWindows95OSR2開始包含PPTP客戶端,但是被限制只可同時存2個向外連線。WindowsXP的遠端桌面連線包含PPTP。
以往,Linux缺乏完整的PPTP支援,這是因為MPPE是專利軟體。但是,自從在2005年10月28日發布的Linux2.6.14起Linux核心提供完整的PPTP支援《包括自由版本的MPPE》。
WindowsMobile2003或更高、有WiFi功能的Palm和MacOSX(包括iPhone)包含PPTP客戶端。
包格式
MPPE包格式如下所示。欄位從左至右進行傳輸。
0123
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|PPP協定|A|B|C|D|附加計數|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|加密的數據...+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ppp協定PPP協定欄位在點到點協定封裝[1]中描述。
當MPPE由PPP壓縮控制協定成功協商後,該欄位的值為0x00FD。當協定-欄位-壓縮協商後,這個值可以被壓縮。
位A該位表明加密表在包產生之前初始化。在解密包之前,接收端必須用當前的會話密鑰再初始化它的表。在本文檔中,該位被稱為FLUSHED位。如果無狀態選項已經被協商,該位必須在每個加密包中設定。要注意MPPC和MPPE都識別FLUSHED位;因此,如果無狀態選項被協商,那么它同時適合與MPPC和MPPE。
位B在MPPE中,該位沒有任何意義。
位C在MPPE中,該位沒有任何意義。
位D該位被設為1表明包被加密。該位被設為0表明這個包沒有被加密。
附加計數附加計數被用來保證包按正確次序傳送,而且沒有包被丟棄。它是一個單項增加的計數器,每傳送一個包就增加1。當計數值到達4095(0x0FFF)時,被重置為0。
加密的數據加密數據從協定欄位開始。例如,一個IP信息包(0x0021後面是一個IP報頭),MPPE處理程式便會首先加密協定欄位然後加密IP報頭。
如果包包含頭壓縮,MPPE處理程式在頭壓縮完成之後被套用並且也必須被用於壓縮的頭部。例如,如果一個包包含協定類型0x002D(一個壓縮的TCP/IP頭),MPPE處理程式便會首先加密0x002D然後加密壓縮的Van-JacobsenTCP/IP頭。
實現注意事項如果MPPE和MPPC在相同的鏈路進行協商,MPPE處理程式必須在MPPC處理程式之後由傳送端激活,MPPE處理程式必須在MPPC處理程式以前由接收端激活。
4.初始會話密鑰就當前的實現而言,初始會話密鑰源自對等端的信任書;然而,其他的方法也是可能的。
例如,一些認證方法(如Kerberos[8]和TLS[9])作為認證的附加效果產生會話密鑰;這些密鑰在將來可能會被MPPE使用。為此,用來生成初始MPPE會話密鑰的方法用分開的文檔描述。