MPPE(Microsoft Point-to-Point Encryption-微軟點對點加密術)協定是由Microsoft設計的,它規定了如何在數據鏈路層對通信機密性保護的機制。它通過對PPP連結中PPP分組的加密以及PPP封裝處理,實現數據鏈路層的機密性保護。
MPPE包傳輸前,PPP必須已經進入網路層協定階段,CPP控制協定必須是“Opened”狀態。每個PPP信息中只能攜帶一個MPPE包,對於加密了的PPP包,其PPP類型是0x00FD。每個MPPE數據包的最大長度等於PPP所能封裝的最大信息長度。只對從0x0021到0x00FA類型的PPP包進行加密,加密後PPP包類型變為0x00FD,其他類型的PPP包不通過MPPE處理。
數據包格式:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PPP Protocol |A|B|C|D| Coherency Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encrypted Data...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
參數說明如下:
PPP Protocol : 對MPPE來說是0x00FD,如果同時支持PPP壓縮,該值是可以被壓縮的;
Bit A :該位表示是否對加密表進行初始化,對於無狀態模式,該位在每個包中都是置1的
Bit B :在MPPE中不考慮
Bit C :在MPPE中不考慮
Bit D :1表示該包是加密的,0表示是不加密的
Coherency Count :12位數,表示PPP包的序號,單向增長,到0xfff後歸0從新計數;
Encrypted Data :加密了的數據
在同時使用MPPE和MPPC(微軟PPP壓縮協定)的情況,對發出的數據,先進行壓縮再加密,對於接收的數據,先解密再解壓。
Linux 中的MPPE實現
MPPE是微軟的專利產品。以往,Linux缺乏完整的PPTP支援,但是,自從在2005年10月28日發布的Linux 2.6.14起Linux核心提供完整的PPTP支援《包括自由版本的MPPE》。
在Linux下提供了MPPE的實現,其中加密部分是核心中的處理,PPP協商是用戶空間的處理,以前是需要補丁才能實現,但2.6.14版本後已經將MPPE納入核心中不需要補丁了,不過在2.6的MPPE實現中,加密算法不是RC4而是ARC4,ARC4隻是個非常簡單的流異或處理,幾乎說不上有什麼強度,比RC4差很多,不知道什麼樣的客戶端能和其通;而原來2.4核心的MPPE補丁是支持RC4的,可以使用128位的高強度加密,對於win2K,必須打了SP2後才能支持128位的PPTP,否則只支持56位。
MPPE: 改性的聚苯醚,簡稱MPPE或MPPO,老美做出的聚苯醚簡稱成為PPO,別的國際生產的簡稱為PPE,國際叫法為PPE。所以都指同一種產品。
PPO或PPE是一種綜合性能優良的熱塑性工程塑膠,突出的是電絕緣性和耐水性優異,尺寸穩定性好。
1.介電性能居工程塑膠之首;2.良好的機械性能及熱性能;3.優異的耐水性;4.阻燃性好;
5.收縮率低,尺寸穩定性好,無毒,密度小; 6.耐光性差。