IPsec (prescurtare pentru IP security ) este un set de protocoale pentru asigurarea protecției datelor transmise prin protocolul de internet IP . Permite autentificarea ( autentificare ), verificarea integrității și/sau criptarea pachetelor IP. IPsec include, de asemenea, protocoale pentru schimbul securizat de chei pe Internet . Este folosit în principal pentru a organiza conexiuni VPN .
Inițial, internetul a fost creat ca un mediu sigur pentru transmiterea datelor între militari. Deoarece doar un anumit cerc de oameni au lucrat cu el, oameni care au fost educați și au avut o idee despre politica de securitate, nu a fost evidentă necesitatea de a construi protocoale sigure. Securitatea a fost organizată la nivelul izolării fizice a obiectelor de persoanele neautorizate, iar acest lucru a fost justificat atunci când un număr limitat de mașini aveau acces la rețea. Totuși, când Internetul a devenit public și a început să se dezvolte și să crească activ, a apărut o astfel de nevoie [1] .
Și în 1994, Internet Architecture Board (IAB) a lansat raportul „Internet Architectural Security”. A fost dedicat în principal metodelor de protecție împotriva monitorizării neautorizate, falsificarea pachetelor și controlului fluxului de date. A fost necesar un standard sau un concept pentru a rezolva această problemă. Ca urmare, au apărut standarde de protocol securizat, inclusiv IPsec. Inițial, a inclus trei specificații de bază descrise în documente (RFC1825, 1826 și 1827), dar ulterior grupul de lucru IETF IP Security Protocol le-a revizuit și a propus noi standarde (RFC2401 - RFC2412), care sunt utilizate și astăzi.
Construirea unui canal de comunicare securizat poate fi implementată la diferite niveluri ale modelului OSI . IPsec este implementat la nivelul rețelei . Există mai multe argumente contradictorii în ceea ce privește alegerea nivelului de implementare a canalului securizat: pe de o parte, alegerea nivelurilor superioare este susținută de independența acestora față de tipul de transport (alegerea protocoalelor de rețea și de nivel de legătură), pe de altă parte. parte, fiecare aplicație necesită o setare și o configurare separată. Avantajul în alegerea straturilor inferioare este versatilitatea și vizibilitatea acestora pentru aplicații, dezavantajul este dependența de alegerea unui anumit protocol (de exemplu, PPP sau Ethernet ). Faptul că IPsec se află la nivelul rețelei este un compromis în alegerea stratului OSI. IPsec folosește cel mai comun protocol de nivel de rețea - IP , ceea ce face ca utilizarea IPsec să fie flexibilă - poate fi folosit pentru a proteja orice protocoale bazate pe IP ( TCP , UDP și altele). În același timp, este transparent pentru majoritatea aplicațiilor [2] .
IPsec este un set de standarde de internet și un fel de „supliment” la protocolul IP. Nucleul său este format din trei protocoale [3] :
De asemenea, unul dintre conceptele cheie este Asociația de Securitate (SA). De fapt, SA este un set de parametri care caracterizează conexiunea. De exemplu, algoritmul de criptare și funcția hash utilizate , cheile secrete, numărul pachetului etc.
IPsec poate funcționa în două moduri: transport și tunel.
În modul de transport, doar datele pachetului IP sunt criptate sau semnate, antetul original este păstrat. Modul de transport este folosit de obicei pentru a stabili o conexiune între gazde. Poate fi folosit și între gateway-uri pentru a securiza tunelurile organizate într-un alt mod (vezi, de exemplu, L2TP ).
În modul tunel, întregul pachet IP original este criptat: date, antet, informații de rutare, iar apoi este inserat în câmpul de date al unui nou pachet, adică are loc încapsularea [4] . Modul tunel poate fi folosit pentru a conecta computere la distanță la o rețea privată virtuală sau pentru a organiza transmisia securizată de date prin canale de comunicație deschise (de exemplu, Internet) între gateway-uri pentru a combina diferite părți ale unei rețele private virtuale .
Modurile IPsec nu se exclud reciproc. Pe aceeași gazdă, unele SA pot folosi modul de transport, în timp ce altele pot folosi modul tunel.
Pentru a începe schimbul de date între două părți, trebuie să stabiliți o conexiune, care se numește SA (Security Association). Conceptul de SA este fundamental pentru IPsec, de fapt, este esența acestuia. Acesta descrie modul în care părțile vor folosi serviciile pentru a furniza comunicații securizate. O conexiune SA este simplex (unidirecțională), așa că trebuie stabilite două conexiuni pentru ca părțile să poată comunica. De asemenea, este de remarcat faptul că standardele IPsec permit punctelor finale ale canalelor securizate să folosească atât un SA pentru a transmite traficul tuturor gazdelor care interacționează prin acest canal , cât și să creeze un număr arbitrar de asociații securizate în acest scop, de exemplu, una pentru fiecare conexiune TCP . Acest lucru face posibilă alegerea nivelului dorit de detaliu de protecție. [2] Stabilirea unei legături începe cu autentificarea reciprocă a părților. În continuare, sunt selectați parametrii (dacă se vor efectua autentificare, criptare, verificări de integritate a datelor) și protocolul necesar (AH sau ESP) pentru transferul de date. După aceea, algoritmi specifici (de exemplu, criptare, funcție hash) sunt selectați din mai multe scheme posibile, dintre care unele sunt definite de standard (pentru criptare - DES , pentru funcții hash - MD5 sau SHA-1 ), altele sunt adăugate prin producătorii de produse care utilizează IPsec ( de exemplu , Triple DES , Blowfish , CAST ) [5] .
Toate SA sunt stocate în SAD (Security Associations Database) a modulului IPsec. Fiecare SA are un marker unic format din trei elemente [6] :
Modulul IPsec, având în vedere acești trei parametri, poate căuta o anumită intrare SA în SAD. Lista componentelor SA include [7] :
Număr de serie O valoare de 32 de biți care este utilizată pentru a forma câmpul Număr de secvență din anteturile AH și ESP. Depășirea contorului de secvență Un steag care semnalează depășirea contorului de numere de secvență. Fereastra de suprimare a atacului de reluare Folosit pentru a determina retransmiterea pachetelor. Dacă valoarea din câmpul Număr de secvență nu se încadrează în intervalul specificat, atunci pachetul este distrus. Informații AH algoritmul de autentificare utilizat, cheile necesare, durata de viață a cheilor și alți parametri. Informații ESP algoritmi de criptare și autentificare, chei necesare, parametri de inițializare (de exemplu, IV), durata de viață a cheii și alți parametri Modul de operare IPsec tunel sau transport SA durata de viata Specificat în secunde sau octeți de informații care trec prin tunel. Determină durata existenței SA, când se atinge această valoare, SA curent trebuie să înceteze, dacă este necesar, să continue legătura, se stabilește un nou SA. MTU Dimensiunea maximă a pachetului care poate fi trimis printr-un circuit virtual fără fragmentare.Fiecare protocol (ESP/AH) trebuie să aibă propriul SA pentru fiecare direcție, așa că AH+ESP necesită patru SA pentru o legătură duplex . Toate aceste date se află în SAD.
SAD conține:
Pe lângă baza de date SAD, implementările IPsec acceptă baza de date pentru politici de securitate (SPD). SPD este folosit pentru a corela pachetele IP primite cu regulile de procesare pentru acestea. Înregistrările în SPD constau din două câmpuri. [8] Primul stochează trăsăturile caracteristice ale pachetelor, în funcție de care se poate distinge unul sau altul flux de informații. Aceste câmpuri se numesc selectori. Exemple de selectoare care sunt conținute în SPD [6] :
Al doilea câmp din SPD conține politica de securitate asociată cu acest flux de pachete. Selectorii sunt utilizați pentru a filtra pachetele de ieșire pentru a potrivi fiecare pachet cu un anumit SA. Când sosește un pachet, valorile câmpurilor corespunzătoare din pachet (câmpurile de selecție) sunt comparate cu cele conținute în SPD. Când se găsește o potrivire, câmpul de politică de securitate conține informații despre cum să tratați acest pachet: transmiteți-l neschimbat, aruncați-l sau procesați-l. În cazul prelucrării, același câmp conține un link către intrarea corespunzătoare din SAD. Se determină apoi SA pentru pachet și Indexul parametrilor de securitate (SPI) asociat acestuia, după care se efectuează operațiuni IPsec (operații de protocol AH sau ESP). Dacă pachetul este primit, atunci acesta conține imediat SPI - se efectuează procesarea corespunzătoare.
decalaje | 16 octombrie | 0 | unu | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
16 octombrie | bitul 10 | 0 | unu | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 | 17 | optsprezece | 19 | douăzeci | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | treizeci | 31 |
0 | 0 | Următorul antet | Sarcina utilă Len | Rezervat | |||||||||||||||||||||||||||||
patru | 32 | Indexul parametrilor de securitate (SPI) | |||||||||||||||||||||||||||||||
opt | 64 | număr de secvență | |||||||||||||||||||||||||||||||
C | 96 | Valoarea de verificare a integrității (ICV) ... | |||||||||||||||||||||||||||||||
… | … |
Protocolul AH este folosit pentru autentificare, adică pentru a confirma că comunicăm exact cine credem că suntem și că datele pe care le primim nu sunt modificate în tranzit [9] .
Dacă modulul IPsec de transmitere determină că pachetul este asociat cu un SA care necesită procesare AH, atunci începe procesarea. În funcție de mod (mod transport sau tunel), acesta inserează diferit antetul AH în pachetul IP. În modul de transport, antetul AH apare după antetul protocolului IP și înaintea antetelor protocolului de nivel superior (de obicei TCP sau UDP ). În modul tunel, întregul pachet IP sursă este încadrat mai întâi cu antetul AH, apoi cu antetul protocolului IP. Un astfel de antet se numește exterior, iar antetul pachetului IP original se numește interior. După aceea, modulul IPsec care transmite trebuie să genereze un număr de secvență și să îl scrie în câmpul Număr de secvență . Când se stabilește un SA, numărul de secvență este setat la 0 și este incrementat cu unu înainte ca fiecare pachet IPsec să fie trimis. În plus, există o verificare pentru a vedea dacă contorul a mers în cicluri. Dacă și-a atins valoarea maximă, atunci este setată din nou la 0. Dacă se utilizează serviciul de prevenire a retransmisiei, atunci când contorul atinge valoarea maximă, modulul IPsec de transmisie resetează SA. Acest lucru oferă protecție împotriva retrimiterii pachetelor - modulul IPsec care primește va verifica câmpul Număr de secvență și va ignora pachetele reintrate. În continuare, se calculează suma de control ICV. Trebuie menționat că aici suma de control este calculată folosind o cheie secretă, fără de care un atacator va putea recalcula hash-ul, dar fără a cunoaște cheia, nu va putea forma suma de control corectă. Algoritmii specifici utilizați pentru a calcula ICV pot fi găsiți în RFC 4305 . În prezent, de exemplu, se pot utiliza algoritmi HMAC-SHA1-96 sau AES-XCBC-MAC-96. Protocolul AH calculează suma de control (ICV) din următoarele câmpuri ale pachetului IPsec [10] :
La primirea unui pachet care conține un mesaj de protocol AH, modulul IPsec de primire caută conexiunea virtuală securizată (SA) SAD (Security Associations Database) corespunzătoare folosind adresa IP de destinație, protocolul de securitate (AH) și indexul SPI. Dacă nu se găsește niciun SA care se potrivește, pachetul este aruncat. Conexiunea virtuală securizată (SA) găsită indică dacă serviciul este utilizat pentru a preveni retransmiterea pachetelor, adică necesitatea de a verifica câmpul Număr de secvență . Dacă serviciul este în uz, atunci câmpul este bifat. Aceasta folosește o metodă de fereastră glisantă pentru a limita memoria tampon necesară pentru ca protocolul să funcționeze. Modulul IPsec de recepție formează o fereastră cu lățimea W (de obicei, W este ales să fie de 32 sau 64 de pachete). Marginea din stânga a ferestrei corespunde numărului de secvență minim ( Numărul de secvență ) N al unui pachet primit corect. Un pachet cu un câmp Număr de secvență care conține o valoare de la N+1 la N+W este primit corect. Dacă pachetul primit se află pe marginea stângă a ferestrei, acesta este distrus. Modulul IPsec de recepție calculează apoi ICV din câmpurile corespunzătoare ale pachetului primit folosind algoritmul de autentificare pe care îl învață din înregistrarea SA și compară rezultatul cu valoarea ICV situată în câmpul „Integrity Check Value”. Dacă valoarea ICV calculată se potrivește cu cea primită, atunci pachetul primit este considerat valid și este acceptat pentru procesare IP ulterioară. Dacă verificarea eșuează, atunci pachetul primit este distrus [10] .
decalaje | 16 octombrie | 0 | unu | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
16 octombrie | bitul 10 | 0 | unu | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 | 17 | optsprezece | 19 | douăzeci | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | treizeci | 31 |
0 | 0 | Indexul parametrilor de securitate (SPI) | |||||||||||||||||||||||||||||||
patru | 32 | număr de secvență | |||||||||||||||||||||||||||||||
opt | 64 | date de încărcare utilă | |||||||||||||||||||||||||||||||
… | … | ||||||||||||||||||||||||||||||||
… | … | ||||||||||||||||||||||||||||||||
… | … | Umplutură (0-255 octeți) | |||||||||||||||||||||||||||||||
… | … | Lungimea tamponului | Următorul antet | ||||||||||||||||||||||||||||||
… | … | Valoarea de verificare a integrității (ICV) ... | |||||||||||||||||||||||||||||||
… | … |
Dacă modulul IPsec de transmitere determină că pachetul este asociat cu un SA care necesită procesare ESP, atunci acesta începe procesarea. În funcție de mod (mod transport sau tunel), pachetul IP original este procesat diferit. În modul de transport, modulul IPsec de transmisie realizează procedura de încadrare pentru protocolul de nivel superior (de exemplu, TCP sau UDP), folosind antetul ESP (câmpurile Indexul parametrilor de securitate și Numărul de secvență ale antetului) și trailerul ESP (restul câmpurile antetului care urmează câmpului de date) pentru aceasta.- Date de încărcare utilă), fără a afecta antetul pachetului IP original. În modul tunel, pachetul IP este încadrat cu un antet ESP și un trailer ESP ( încapsulare ), după care este încadrat cu un antet IP extern (care poate să nu se potrivească cu cel original - de exemplu, dacă modulul IPsec este instalat pe poarta de acces ) [8] . În continuare, se realizează criptarea - în modul de transport, este criptat doar mesajul protocolului de nivel superior (adică tot ce era după antetul IP în pachetul sursă), în modul tunel - întregul pachet IP sursă. Modulul IPsec de transmitere de la intrarea SA determină algoritmul de criptare și cheia secretă . Standardele IPsec permit utilizarea algoritmilor de criptare Triple DES , AES și Blowfish dacă ambele părți îi acceptă. În caz contrar, se folosește DES așa cum este specificat în RFC 2405 . Deoarece dimensiunea textului simplu trebuie să fie un multiplu al unui anumit număr de octeți, de exemplu, dimensiunea blocului pentru algoritmii bloc , înainte de criptare, se realizează și adăugarea necesară a mesajului criptat. Mesajul criptat este plasat în câmpul Date load . Câmpul Pad Length conține lungimea pad-ului . Apoi, ca și în AH, se calculează Numărul de secvență, după care se calculează suma de control (ICV). Suma de control, spre deosebire de protocolul AH, unde unele câmpuri ale antetului IP sunt de asemenea luate în considerare la calcularea acesteia, în ESP este calculată doar de câmpurile pachetului ESP minus câmpul ICV. Înainte de a calcula suma de control, aceasta este completată cu zerouri. Algoritmul de calcul ICV, ca și în protocolul AH, modulul IPsec de transmisie învață din înregistrarea despre SA cu care este asociat pachetul procesat.
La primirea unui pachet care conține un mesaj de protocol ESP, modulul IPsec de primire caută conexiunea virtuală securizată (SA) corespunzătoare în SAD utilizând adresa IP de destinație, protocolul de securitate (ESP) și indexul SPI [8] . Dacă nu se găsește niciun SA care se potrivește, pachetul este aruncat. Conexiunea virtuală securizată (SA) găsită indică dacă este utilizat serviciul de prevenire a retransmirii pachetelor, adică necesitatea de a verifica câmpul Număr de secvență. Dacă serviciul este în uz, atunci câmpul este bifat. Pentru aceasta, ca și în AH, se folosește metoda ferestrei glisante. Modulul IPsec receptor formează o fereastră cu lățimea W. Marginea din stânga a ferestrei corespunde numărului de secvență minim (Numărul de secvență) N al unui pachet primit corect. Un pachet cu un câmp Număr de secvență care conține o valoare de la N+1 la N+W este primit corect. Dacă pachetul primit se află pe marginea stângă a ferestrei, acesta este distrus. Apoi, dacă se utilizează serviciul de autentificare, modulul IPsec receptor calculează ICV din câmpurile corespunzătoare ale pachetului primit folosind algoritmul de autentificare pe care îl învață din înregistrarea SA și compară rezultatul cu valoarea ICV situată în „Valoarea de verificare a integrității” camp. Dacă valoarea ICV calculată se potrivește cu cea primită, atunci pachetul primit este considerat valid. Dacă verificarea eșuează, atunci pachetul de primire este aruncat. Apoi, pachetul este decriptat. Modulul IPsec receptor învață de la intrarea SA care algoritm de criptare este utilizat și cheia secretă. Trebuie remarcat faptul că verificarea sumei de control și procedura de decriptare pot fi efectuate nu numai secvenţial, ci și în paralel. În acest din urmă caz, procedura de verificare a sumei de control trebuie să se încheie înainte de procedura de decriptare, iar dacă verificarea ICV eșuează, procedura de decriptare trebuie să se încheie și ea. Acest lucru permite detectarea mai rapidă a pachetelor rupte, ceea ce la rândul său crește nivelul de protecție împotriva atacurilor de tip denial of service (atacuri DOS ). Mai mult, mesajul decriptat în conformitate cu câmpul Următorul Antet este transmis pentru procesare ulterioară.
IKE (pronunțat haik , abreviat pentru Internet Key Exchange) este un protocol care leagă toate componentele IPsec într-un întreg funcțional. Mai exact, IKE prevede autentificarea inițială a părților, precum și schimbul lor de secrete partajate .
Este posibil să setați manual o cheie de sesiune (a nu fi confundată cu cheia pre-partajată [PSK] pentru autentificare). În acest caz, IKE nu este utilizat. Cu toate acestea, această opțiune nu este recomandată și este rar folosită. În mod tradițional, IKE operează pe portul 500 UDP .
Există IKE și o versiune mai nouă a protocolului: IKEv2. Există unele diferențe în specificațiile și funcționarea acestor protocoale. IKEv2 stabilește parametrii de conectare într-o singură fază constând din mai mulți pași. Procesul IKE poate fi împărțit în două faze.
IKE creează un canal securizat între două noduri numite asociere de securitate IKE (IKE SA). Tot în această fază, cele două noduri convin asupra unei chei de sesiune folosind algoritmul Diffie-Hellman . Prima fază a IKE poate avea loc într-unul din cele două moduri [12] :
Din punct de vedere al securității, modul agresiv este mai slab, deoarece participanții încep să facă schimb de informații înainte de a stabili un canal securizat, astfel încât interceptarea neautorizată a datelor este posibilă. Cu toate acestea, acest mod este mai rapid decât cel principal. Conform standardului IKE, orice implementare este necesară pentru a susține modul principal și este foarte de dorit să suporte modul agresiv .
În faza a doua IKE, există un singur mod rapid. Modul rapid este efectuat numai după ce canalul securizat a fost stabilit în prima fază. Negociază o politică comună IPsec, obține secrete partajate pentru algoritmii de protocol IPsec (AH sau ESP), stabilește un SA IPsec. Utilizarea numerelor secvențiale oferă protecție împotriva atacurilor de reluare. De asemenea, modul rapid este utilizat pentru a revizui IPsec SA curent și pentru a selecta unul nou atunci când SA expiră. În mod implicit, modul rapid actualizează cheile secrete partajate folosind algoritmul Diffie-Hellman din prima fază.
Protocoalele IPsec pot fi împărțite în cinci etape [13] :
Protocolul IPsec este utilizat în principal pentru a organiza tuneluri VPN . În acest caz, protocoalele ESP și AH funcționează în modul tunel. În plus, prin configurarea politicilor de securitate într-un anumit mod, protocolul poate fi utilizat pentru a crea un firewall . Semnificația unui firewall este că controlează și filtrează pachetele care trec prin el în conformitate cu regulile date. Este configurat un set de reguli și ecranul se uită la toate pachetele care trec prin el. Dacă pachetele transmise sunt supuse acestor reguli, firewall-ul le procesează corespunzător [14] . De exemplu, poate respinge anumite pachete, terminând astfel conexiunile nesigure. Configurarea politicii de securitate în consecință, puteți, de exemplu, să refuzați traficul web. Pentru a face acest lucru, este suficient să interziceți trimiterea de pachete care conțin mesaje de protocol HTTP și HTTPS . IPsec poate fi folosit și pentru a proteja serverele - pentru aceasta, toate pachetele sunt aruncate, cu excepția pachetelor necesare pentru îndeplinirea corectă a funcțiilor serverului. De exemplu, pentru un server Web, puteți bloca tot traficul, cu excepția conexiunilor pe portul TCP 80 sau pe portul TCP 443 în cazurile în care este utilizat HTTPS .
Exemplu [15] :
IPsec oferă utilizatorilor acces securizat la server. Când se utilizează protocolul ESP, toate apelurile către server și răspunsurile acestuia sunt criptate. Cu toate acestea, mesajele clare sunt trimise în spatele gateway-ului VPN (în domeniul de criptare).
Alte exemple de utilizare a IPsec [16] :
Rețele private virtuale (VPN) | |
---|---|
Tehnologie | |
Software | |
Servicii VPN |
TCP /IP pe straturi ale modelului OSI | Protocoale de bază|
---|---|
Fizic | |
canalizat | |
reţea | |
Transport | |
sesiune | |
Reprezentare | |
Aplicat | |
Altele aplicate | |
Lista de porturi TCP și UDP |