PPTP
Protocolul de tunelare punct-la-punct (PPTP, în engleză Point-to-Point Tunneling Protocol) este o metodă de implementare a unor rețele private virtuale. PPTP folosește un canal de control peste TCP și un tunel GRE pentru a încapsula pachetele PPP.
Specificația PPTP nu descrie metode de criptare sau autentificare, ci se bazează pe faptul că protocolul PPP este tunelat pentru a implementa securitatea. Totuși, implementarea cea mai comună a protocolului, care este livrată cu sistemul de operare Microsoft Windows, are diferite nivele de autentificare și criptare. Scopul acestui protocol este să ofere un nivel de securitate și de acces comparabile cu produsele VPN tipice.
Specificația pentru PPTP a fost publicată în iulie 1999 ca RFC 2637, fiind dezvoltată de un consorțiu format din Microsoft, Ascend Communications (astăzi parte din Alcatel-Lucent), 3Com și alții. PPTP nu a fost propus sau adoptat ca standard de către Internet Engineering Task Force.
Descrierea protocolului
[modificare | modificare sursă]Un tunel PPTP este instanțiat deschizând o conexiune TCP către portul 1723. Această conexiune este apoi folosită pentru a iniția și a administra un al doilea tunel GRE către același peer.
Formatul pachetului GRE din PPTP este non-standard, incluzând un câmp adițional confirmare (în engleză acknowledgement) ce înlocuiești câmpul rutare (în engleză routing) în antetul GRE. Totuși, ca și într-o conexiune GRE normală, pachetele din PPTP sunt încapsulate direct în pachete IP, având același număr de identificare a protocolului în pachetul IP - 47.
Tunelul GRE este folosit pentru a transporta pachete PPP încapsulate, permițând tunelarea oricărui protocol ce poate fi încapsulat în PPP, inclusiv IP, NetBEUI sau IPX.
În implementarea Microsoft, traficul PPP tunelat poate fi autentificat folosind PAP, CHAP sau MS-CHAP v1/v2 .
Implementări
[modificare | modificare sursă]PPTP a fost primul protocol VPN din Microsoft Dial-up Networking. Toate versiunile de Microsoft Windows de la Windows 95 OSR2 vin cu un client de PPTP, deși sunt limitate la doar două conexiuni simultane. Microsoft Windows Mobile 2003 și mai noi (cu excepția Windows Phone 8.x) includ de asemenea protocolul PPTP. Anumite versiuni ale sistemului de operare includ și un server PPTP. Această implementare folosește criptarea DES în MS-CHAP, care este considerată nepotrivită pentru cerințele curente de securitate.[1]
Windows Vista și mai noi permit folosirea PEAP cu PPTP. Mecanismele de autentificare sunt PEAPv0/EAP-MSCHAPv2 (pentru parole) și PEAP-TLS (pentru smartcards și certificate). Windows Vista a renunțat la suportul pentru protocolul MSCHAP-v1 la autentificarea conexiunilor la distanță.[2]
În Linux, serverul de PPTP este implementat în daemonul PoPToP[3] și modulele de kernel pentru PPP și MPPE (Microsoft Point-to-Point Encryption). Prima implementare de client a apărut în 1997,[4] dar prima variantă folosită pe scară largă în servere a fost dezvoltată de Matthew Ramsay în 1999[5] și distribuită sub licența GNU GPL de Moreton Bay. Totuși, ea nu a fost inclusă în distribuțiile Linux ale vremii deoarece se considera că MPPE avea în spate patente, nefiind o implementare liberă. O implementare completă de MPPE a fost adăugată în kernelul de Linux în versiunea 2.6.14 din 28 octombrie 2005. SuSE Linux 10 a fost prima distribuție Linux ce a oferit un client complet de PPTP. Tot pe Linux mai există și serverul ACCEL-PPP – PPTP/L2TP/PPPoE[6] ce implementează PPTP în kernel.
OpenBSD și FreeBSD includ ambele PoPToP.
OS X și iOS includ un client de PPTP, iar OS X Server include și un server de PPTP. Cisco și Efficient Networks vând clienți de PPTP pentru versiuni mai vechi de Mac OS.
Multe telefoane mobile cu sistemul de operare Android oferă de asemenea clienți de PPTP.
Securitate
[modificare | modificare sursă]PPTP a făcut obiectul multor analize de securitate și au fost identificate numeroase vulnerabilități legate de protocoalele de autentificare ale PPP, designul protocolului MPPE precum și legat de integrarea dintre MPPE și autentificarea PPP.[7][8]
Câteva din aceste vulnerabilități sunt:
- MS-CHAP-v1 este fundamental nesigur. Există unelte care permit extragerea cu ușurință a rezumatului (engleză hash) parolei NT dintr-un schimb de mesaje MSCHAP-v1 capturat.[9]
- Când se folosește MSCHAP-v1, MPPE folosește aceeași cheie RC4 pentru criptare în ambele direcții de comunicare. Aceasta poate fi obținută cu resurse standard, aplicând funcția XOR între pachetele din fiecare direcție.[10]
- MS-CHAP-v2 este vulnerabil la atacuri de tip dicționar la adresa pachetelor de răspuns la challenge. Există unelte care pot realiza acest lucru rapid.[11]
- În 2012 a fost demonstrat că un atac prin forță brută asupra MSCHAP-v2 este echivalent cu același atac asupra unei chei DES. A fost prezentat un serviciu online capabil să restaureze rezumatul MD4 al MSCHAP-v2 în 23 de ore.[12][13]
- MPPE folosește algoritmul de criptare RC4. Nu există nicio metodă de autentificare a mesajului criptat și de aceea, acesta e vulnerabil la înlocuirea unor biți. Un atacator ar putea modifica mesajul în tranzit și să ajusteze anumiți biți fără a putea fi detectat. Acești biți pot fi însă detectați de protocolele tunelate prin sume de control sau alte metode.[9]
EAP-TLS este văzut ca o alegere mai bună pentru autentificarea PPTP;[14] totuși, necesită implementarea unei infrastructuri cu chei publice atât pentru client cât și pentru server. De aceea, nu este o opțiune viabilă pentru accesul la distanță a anumitor clienți.
Vezi și
[modificare | modificare sursă]- IPsec
- L2TP
- SSTP
- OpenVPN, o aplicație cu sursă deschisă care implementează VPN
Note
[modificare | modificare sursă]- ^ Ray, Marsh (). „MS PPTP MPPE only as secure as *single* DES”. Arhivat din original la . Accesat în .
- ^ „The MS-CHAP version 1 authentication protocol has been deprecated in Windows Vista”. Support.microsoft.com. . Accesat în .
- ^ „PoPPToP Linux daemon at SourceForge”. Sourceforge.net. Accesat în .
- ^ „PPTP-linux: a PPTP client for Linux”. C. Scott Ananian. Accesat în .
- ^ „Linux Journal PPTP Implementation”. Linuxjournal.com. Arhivat din original la . Accesat în .
- ^ „ACCEL-PPP – PPTP/L2TP/PPPoE server for Linux”. Accel-ppp.sourceforge.net. Accesat în .
- ^ „Microsoft says don't use PPTP and MS-CHAP”. Accesat în .
- ^ „A death blow for PPTP”. Accesat în .
- ^ a b Bruce Schneier, Cryptanalysis of Microsoft's Point to Point Tunneling Protocol (PPTP) Arhivat în , la Wayback Machine.[1] Arhivat în , la Wayback Machine..
- ^ Bruce Schneier, Cryptanalysis of Microsoft's PPTP Authentication Extensions (MS-CHAPv2), October 19 1999.
- ^ Josh of willhackforsushi.com "news Arhivat în , la Archive.is".
- ^ „Divide and Conquer: Cracking MS-CHAPv2 with a 100% success rate”. Cloudcracker.com. . Arhivat din original la . Accesat în .
- ^ „Marlinspike demos MS-CHAPv2 crack”. The Register. . Accesat în .
- ^ Choosing EAP-TLS or MS-CHAP v2 for User-Level Authentication, Microsoft TechNet, 28 martie 2003