IPsec (förkortning för IP-säkerhet ) är en uppsättning protokoll för att säkerställa skyddet av data som överförs över internetprotokollet IP . Tillåter autentisering ( autentisering ), integritetskontroll och/eller kryptering av IP-paket. IPsec inkluderar även protokoll för säkert nyckelutbyte på Internet . Det används främst för att organisera VPN- anslutningar.
Från början skapades Internet som ett säkert medium för överföring av data mellan militären. Eftersom bara en viss krets av människor arbetade med det, folk som var utbildade och hade en idé om säkerhetspolitik, fanns det inget självklart behov av att bygga säkra protokoll. Säkerheten organiserades i nivå med fysisk isolering av objekt från obehöriga, och detta var motiverat när ett begränsat antal maskiner hade tillgång till nätverket. Men när Internet blev offentligt och började aktivt utvecklas och växa uppstod ett sådant behov [1] .
Och 1994 släppte Internet Architecture Board (IAB) rapporten "Internet Architectural Security". Den ägnades främst åt metoder för skydd mot obehörig övervakning, paketförfalskning och dataflödeskontroll. Någon standard eller koncept behövdes för att lösa detta problem. Som ett resultat uppstod säkra protokollstandarder, inklusive IPsec. Till en början inkluderade den tre grundläggande specifikationer som beskrivs i dokumenten (RFC1825, 1826 och 1827), men därefter reviderade IETFs IP Security Protocol- arbetsgrupp dem och föreslog nya standarder (RFC2401 - RFC2412), som fortfarande används idag.
Konstruktionen av en säker kommunikationskanal kan implementeras på olika nivåer av OSI-modellen . IPsec implementeras på nätverkslagret . Det finns flera motstridiga argument när det gäller valet av implementeringsnivå för säker kanal: å ena sidan stöds valet av de övre nivåerna av deras oberoende av typen av transport (valet av nätverk och länklagerprotokoll), å andra sidan hand kräver varje applikation en separat inställning och konfiguration. Fördelen med att välja de lägre lagren är deras mångsidighet och synlighet för applikationer, nackdelen är beroendet av valet av ett visst protokoll (till exempel PPP eller Ethernet ). Det faktum att IPsec finns i nätverkslagret är en kompromiss i valet av OSI-lagret. IPsec använder det vanligaste nätverkslagerprotokollet - IP , vilket gör användningen av IPsec flexibel - det kan användas för att skydda alla IP-baserade protokoll ( TCP , UDP och andra). Samtidigt är det transparent för de flesta applikationer [2] .
IPsec är en uppsättning Internetstandarder och ett slags "tillägg" till IP-protokollet. Dess kärna består av tre protokoll [3] :
Ett av nyckelbegreppen är också Security Association (SA). Faktum är att SA är en uppsättning parametrar som kännetecknar anslutningen. Till exempel, krypteringsalgoritmen och hashfunktionen som används , hemliga nycklar, paketnummer, etc.
IPsec kan fungera i två lägen: transport och tunnel.
I transportläge är endast data från IP-paketet krypterade eller signerade, den ursprungliga rubriken bevaras. Transportläge används vanligtvis för att upprätta en anslutning mellan värdar. Den kan också användas mellan gateways för att säkra tunnlar organiserade på annat sätt (se t.ex. L2TP ).
I tunnelläge krypteras hela det ursprungliga IP-paketet: data, header, routinginformation, och sedan infogas det i datafältet för ett nytt paket, det vill säga inkapsling sker [4] . Tunnelläge kan användas för att ansluta fjärrdatorer till ett virtuellt privat nätverk eller för att organisera säker dataöverföring över öppna kommunikationskanaler (till exempel Internet) mellan gateways för att kombinera olika delar av ett virtuellt privat nätverk .
IPsec-lägen utesluter inte varandra. På samma värd kan vissa SA:er använda transportläge, medan andra kan använda tunnelläge.
För att börja utbyta data mellan två parter måste du upprätta en anslutning, som kallas SA (Security Association). Konceptet SA är grundläggande för IPsec, i själva verket är dess essens. Den beskriver hur parterna kommer att använda tjänsterna för att tillhandahålla säker kommunikation. En SA-anslutning är enkel (enkelriktad), så två anslutningar måste upprättas för att parterna ska kunna kommunicera. Det är också värt att notera att IPsec-standarderna tillåter säkra kanalslutpunkter att använda både en SA för att överföra trafik från alla värdar som interagerar genom denna kanal och att skapa ett godtyckligt antal säkra associationer för detta ändamål, till exempel en för varje TCP-anslutning . Detta gör det möjligt att välja önskad nivå av skyddsdetalj. [2] Att upprätta en förbindelse börjar med ömsesidig autentisering av parterna. Därefter väljs parametrarna (om autentisering, kryptering, dataintegritetskontroller kommer att utföras) och det erforderliga protokollet (AH eller ESP) för dataöverföring. Därefter väljs specifika algoritmer (till exempel kryptering, hashfunktion) från flera möjliga scheman, av vilka några definieras av standarden (för kryptering - DES , för hashfunktioner - MD5 eller SHA-1 ), andra läggs till av tillverkare av produkter som använder IPsec (t.ex. Triple DES , Blowfish , CAST ) [5] .
Alla SA:er lagras i SAD (Security Associations Database) i IPsec-modulen. Varje SA har en unik markör som består av tre element [6] :
IPsec-modulen, med dessa tre parametrar, kan slå upp en särskild SA-post i SAD. Listan över SA-komponenter inkluderar [7] :
Serienummer Ett 32-bitars värde som används för att bilda sekvensnummerfältet i AH- och ESP-huvudena. Sekvensräknare spill En flagga som signalerar överflödet av sekvensnummerräknaren. Spela om attackundertryckningsfönstret Används för att bestämma omsändning av paket. Om värdet i fältet Sekvensnummer inte faller inom det angivna intervallet, förstörs paketet. AH Information den använda autentiseringsalgoritmen, de nödvändiga nycklarna, nycklarnas livslängd och andra parametrar. ESP-information krypterings- och autentiseringsalgoritmer, nödvändiga nycklar, initialiseringsparametrar (till exempel IV), nyckellivslängd och andra parametrar IPsec driftläge tunnel eller transport SA livstid Anges i sekunder eller bytes av information som passerar genom tunneln. Bestämmer varaktigheten av existensen av SA, när detta värde uppnås måste den nuvarande SA avslutas, om nödvändigt, fortsätt anslutningen, en ny SA upprättas. MTU Den maximala paketstorlek som kan skickas över en virtuell krets utan fragmentering.Varje protokoll (ESP/AH) måste ha sin egen SA för varje riktning, så AH+ESP kräver fyra SA:er för en duplexlänk . Alla dessa data finns i SAD.
SAD innehåller:
Utöver SAD-databasen stöder IPsec-implementeringar Security Policy Database (SPD). SPD används för att korrelera inkommande IP-paket med bearbetningsregler för dem. Poster i SPD består av två fält. [8] Den första lagrar paketens karaktäristiska egenskaper, enligt vilka ett eller annat informationsflöde kan urskiljas. Dessa fält kallas väljare. Exempel på väljare som finns i SPD [6] :
Det andra fältet i SPD innehåller säkerhetspolicyn som är associerad med denna paketström. Väljare används för att filtrera utgående paket för att matcha varje paket med en specifik SA. När ett paket anländer jämförs värdena för motsvarande fält i paketet (väljarfält) med de som finns i SPD. När en matchning hittas innehåller säkerhetspolicyfältet information om hur man hanterar detta paket: skicka det oförändrat, kassera det eller bearbeta det. Vid bearbetning innehåller samma fält en länk till motsvarande post i SAD. SA för paketet och dess tillhörande säkerhetsparameterindex (SPI) bestäms sedan, varefter IPsec-operationer (AH- eller ESP-protokolloperationer) utförs. Om paketet kommer in, innehåller det omedelbart SPI - motsvarande bearbetning utförs.
offset | 16 oktober | 0 | ett | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
16 oktober | bit 10 | 0 | ett | 2 | 3 | fyra | 5 | 6 | 7 | åtta | 9 | tio | elva | 12 | 13 | fjorton | femton | 16 | 17 | arton | 19 | tjugo | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | trettio | 31 |
0 | 0 | Nästa rubrik | Nyttolast Len | Reserverad | |||||||||||||||||||||||||||||
fyra | 32 | Säkerhetsparameterindex (SPI) | |||||||||||||||||||||||||||||||
åtta | 64 | sekvensnummer | |||||||||||||||||||||||||||||||
C | 96 | Integritetskontrollvärde (ICV) … | |||||||||||||||||||||||||||||||
… | … |
AH-protokollet används för autentisering, det vill säga för att bekräfta att vi kommunicerar med exakt den vi tror att vi är, och att data vi tar emot inte manipuleras under överföring [9] .
Om den sändande IPsec-modulen bestämmer att paketet är associerat med en SA som kräver AH-bearbetning, börjar bearbetningen. Beroende på läge (transport- eller tunnelläge) infogar den AH-huvudet på olika sätt i IP-paketet. I transportläge visas AH-huvudet efter IP-protokollhuvudet och före protokollhuvudena för det övre lagret (vanligtvis TCP eller UDP ). I tunnelläge inramas hela käll-IP-paketet först med AH-huvudet, sedan med IP-protokollhuvudet. En sådan rubrik kallas yttre, och huvudet på det ursprungliga IP-paketet kallas inre. Därefter måste den sändande IPsec-modulen generera ett sekvensnummer och skriva det i fältet Sekvensnummer . När en SA upprättas sätts sekvensnumret till 0 och ökas med ett innan varje IPsec-paket skickas. Dessutom är det en kontroll för att se om räknaren har gått i cykler. Om den har nått sitt maximala värde, sätts den tillbaka till 0. Om återsändningsförhindrande tjänst används, när räknaren når sitt maximala värde, återställer den sändande IPsec-modulen SA:n. Detta ger skydd mot omsändning av paket - den mottagande IPsec-modulen kontrollerar fältet Sekvensnummer och ignorerar återinkommande paket. Därefter beräknas ICV-kontrollsumman. Det bör noteras att här beräknas kontrollsumman med hjälp av en hemlig nyckel, utan vilken en angripare kommer att kunna räkna om hashen, men utan att känna till nyckeln kommer han inte att kunna bilda den korrekta kontrollsumman. De specifika algoritmerna som används för att beräkna ICV finns i RFC 4305 . För närvarande kan till exempel HMAC-SHA1-96 eller AES-XCBC-MAC-96 algoritmer användas. AH-protokollet beräknar kontrollsumman (ICV) från följande fält i IPsec-paketet [10] :
Vid mottagande av ett paket som innehåller ett AH-protokollmeddelande, letar den mottagande IPsec-modulen upp den lämpliga SAD (Security Associations Database) säker virtuell anslutning (SA) med hjälp av destinationens IP-adress, säkerhetsprotokoll (AH) och SPI-index. Om ingen matchande SA hittas, kasseras paketet. Den hittade säkra virtuella anslutningen (SA) indikerar om tjänsten används för att förhindra återöverföring av paket, det vill säga behovet av att kontrollera fältet Sekvensnummer . Om tjänsten används är fältet markerat. Detta använder en skjutfönstermetod för att begränsa buffertminnet som krävs för att protokollet ska fungera. Den mottagande IPsec-modulen bildar ett fönster med en bredd W (vanligtvis väljs W till 32 eller 64 paket). Den vänstra kanten av fönstret motsvarar det minsta sekvensnumret ( Sequence Number ) N för ett korrekt mottaget paket. Ett paket med ett sekvensnummerfält som innehåller ett värde från N+1 till N+W tas emot korrekt. Om det mottagna paketet finns på fönstrets vänstra kant, förstörs det. Den mottagande IPsec-modulen beräknar sedan ICV från lämpliga fält i det mottagna paketet med användning av autentiseringsalgoritmen som den lär sig från SA-posten och jämför resultatet med ICV-värdet som finns i fältet "Integrity Check Value". Om det beräknade ICV-värdet matchar det mottagna, anses det inkommande paketet vara giltigt och accepteras för vidare IP-bearbetning. Om kontrollen misslyckas, förstörs det mottagna paketet [10] .
offset | 16 oktober | 0 | ett | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
16 oktober | bit 10 | 0 | ett | 2 | 3 | fyra | 5 | 6 | 7 | åtta | 9 | tio | elva | 12 | 13 | fjorton | femton | 16 | 17 | arton | 19 | tjugo | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | trettio | 31 |
0 | 0 | Säkerhetsparameterindex (SPI) | |||||||||||||||||||||||||||||||
fyra | 32 | sekvensnummer | |||||||||||||||||||||||||||||||
åtta | 64 | nyttolastdata | |||||||||||||||||||||||||||||||
… | … | ||||||||||||||||||||||||||||||||
… | … | ||||||||||||||||||||||||||||||||
… | … | Vaddering (0-255 oktetter) | |||||||||||||||||||||||||||||||
… | … | Pads längd | Nästa rubrik | ||||||||||||||||||||||||||||||
… | … | Integritetskontrollvärde (ICV) … | |||||||||||||||||||||||||||||||
… | … |
Om den sändande IPsec-modulen fastställer att paketet är associerat med en SA som kräver ESP-bearbetning, börjar bearbetningen. Beroende på läge (transport- eller tunnelläge) behandlas det ursprungliga IP-paketet på olika sätt. I transportläge utför den sändande IPsec-modulen inramningsproceduren för det övre lagrets protokoll (till exempel TCP eller UDP), med hjälp av ESP-huvudet (fälten Säkerhetsparametrar Index och Sekvensnummer i rubriken) och ESP-trailern (resten fält i rubriken efter datafältet) för detta - Nyttolastdata), utan att det påverkar huvudet på det ursprungliga IP-paketet. I tunnelläge ramas IP-paketet in med en ESP-header och en ESP-trailer ( inkapsling ), varefter det ramas in med en extern IP-header (som kanske inte matchar originalet - till exempel om IPsec-modulen är installerad på porten ) [8 ] . Därefter utförs kryptering - i transportläge krypteras endast meddelandet från det övre lagrets protokoll (det vill säga allt som var efter IP-huvudet i källpaketet), i tunnelläge - hela käll-IP-paketet. Den sändande IPsec-modulen från SA-posten bestämmer krypteringsalgoritmen och den hemliga nyckeln . IPsec-standarderna tillåter användning av krypteringsalgoritmerna Triple DES , AES och Blowfish om båda parter stöder dem. Annars används DES enligt RFC 2405 . Eftersom storleken på vanlig text måste vara en multipel av ett visst antal byte, till exempel blockstorleken för blockalgoritmer , utförs även den nödvändiga tillägget av det krypterade meddelandet före kryptering. Det krypterade meddelandet placeras i fältet Nyttolastdata . Fältet Pad Length innehåller längden på dynan . Sedan, som i AH, beräknas sekvensnumret, varefter kontrollsumman (ICV) beräknas. Kontrollsumman, i motsats till AH-protokollet, där vissa fält i IP-huvudet också tas med i beräkningen vid beräkning av den, beräknas i ESP endast av fälten i ESP-paketet minus ICV-fältet. Innan kontrollsumman beräknas fylls den med nollor. ICV-beräkningsalgoritmen, som i AH-protokollet, lär sig den sändande IPsec-modulen från posten om den SA med vilken det behandlade paketet är associerat.
Vid mottagande av ett paket som innehåller ett ESP-protokollmeddelande, letar den mottagande IPsec-modulen upp den lämpliga säkra virtuella anslutningen (SA) i SAD:n med hjälp av destinations-IP-adressen, säkerhetsprotokollet (ESP) och SPI [8] -index . Om ingen matchande SA hittas, kasseras paketet. Den hittade säkra virtuella anslutningen (SA) indikerar om paketåteröverföringsförhindrande tjänsten används, dvs behovet av att kontrollera sekvensnummerfältet. Om tjänsten används är fältet markerat. För detta, som i AH, används skjutfönstermetoden. Den mottagande IPsec-modulen bildar ett fönster med bredden W. Den vänstra kanten av fönstret motsvarar det minsta sekvensnumret (Sekvensnummer) N för ett korrekt mottaget paket. Ett paket med ett sekvensnummerfält som innehåller ett värde från N+1 till N+W tas emot korrekt. Om det mottagna paketet finns på fönstrets vänstra kant, förstörs det. Sedan, om autentiseringstjänsten används, beräknar den mottagande IPsec-modulen ICV från motsvarande fält i det mottagna paketet med hjälp av autentiseringsalgoritmen som den lär sig från SA-posten och jämför resultatet med ICV-värdet som finns i "Integrity Check Value" fält. Om det beräknade ICV-värdet matchar det mottagna, anses det inkommande paketet vara giltigt. Om kontrollen misslyckas kasseras det mottagande paketet. Därefter dekrypteras paketet. Den mottagande IPsec-modulen lär sig från SA-posten vilken krypteringsalgoritm som används och den hemliga nyckeln. Det bör noteras att kontrollsumman och dekrypteringsproceduren kan utföras inte bara sekventiellt utan också parallellt. I det senare fallet måste verifieringsproceduren för kontrollsumman avslutas före dekrypteringsproceduren, och om ICV-kontrollen misslyckas måste dekrypteringsproceduren också avslutas. Detta möjliggör snabbare upptäckt av trasiga paket, vilket i sin tur ökar skyddsnivån mot överbelastningsattacker ( DOS-attacker ). Vidare sänds det dekrypterade meddelandet i enlighet med nästa rubrikfält för vidare bearbetning.
IKE (uttalas haik , förkortning för Internet Key Exchange) är ett protokoll som binder alla IPsec-komponenter till en fungerande helhet. Specifikt tillhandahåller IKE den första autentiseringen av parterna samt deras utbyte av delade hemligheter .
Det är möjligt att manuellt ställa in en sessionsnyckel (inte att förväxla med fördelad nyckel [PSK] för autentisering). I det här fallet används inte IKE. Det här alternativet rekommenderas dock inte och används sällan. Traditionellt arbetar IKE på port 500 UDP .
Det finns IKE och en nyare version av protokollet: IKEv2. Det finns vissa skillnader i specifikationerna och driften av dessa protokoll. IKEv2 upprättar anslutningsparametrar i en enda fas som består av flera steg. IKE-processen kan delas in i två faser.
IKE skapar en säker kanal mellan två noder som kallas IKE-säkerhetsföreningen (IKE SA). Även i denna fas kommer de två noderna överens om en sessionsnyckel med hjälp av Diffie-Hellman-algoritmen . Den första fasen av IKE kan äga rum i ett av två lägen [12] :
Ur säkerhetssynpunkt är det aggressiva läget svagare, eftersom deltagarna börjar utbyta information innan de etablerar en säker kanal, så otillåten avlyssning av data är möjlig. Det här läget är dock snabbare än det huvudsakliga. Enligt IKE-standarden krävs alla implementeringar för att stödja huvudläget , och det är mycket önskvärt att stödja det aggressiva läget .
I fas två IKE finns det bara ett, snabbt läge. Snabbläge utförs endast efter att den säkra kanalen har etablerats under den första fasen. Den förhandlar fram en gemensam IPsec-policy, erhåller delade hemligheter för IPsec-protokollalgoritmer (AH eller ESP), upprättar en IPsec SA. Användningen av sekventiella nummer ger skydd mot reprisattacker. Snabbläge används också för att granska den aktuella IPsec SA och välja en ny när SA går ut. Som standard uppdaterar snabbläget de delade hemliga nycklarna med hjälp av Diffie-Hellman-algoritmen från den första fasen.
IPsec-protokoll kan delas in i fem steg [13] :
IPsec-protokollet används främst för att organisera VPN-tunnlar . I detta fall fungerar ESP- och AH-protokollen i tunnelläge. Dessutom, genom att konfigurera säkerhetspolicyer på ett visst sätt, kan protokollet användas för att skapa en brandvägg . Meningen med en brandvägg är att den kontrollerar och filtrerar paketen som passerar genom den i enlighet med de givna reglerna. En uppsättning regler ställs in och skärmen tittar på alla paket som passerar genom den. Om de överförda paketen omfattas av dessa regler, bearbetar brandväggen dem i enlighet med detta [14] . Den kan till exempel avvisa vissa paket och därmed avsluta osäkra anslutningar. Genom att konfigurera säkerhetspolicyn därefter kan du till exempel neka webbtrafik. För att göra detta räcker det att förbjuda att skicka paket som innehåller HTTP- och HTTPS- protokollmeddelanden . IPsec kan också användas för att skydda servrar - för detta kasseras alla paket, förutom paket som är nödvändiga för korrekt prestanda av serverfunktioner. För en webbserver kan du till exempel blockera all trafik förutom anslutningar på TCP-port 80, eller på TCP-port 443 i fall där HTTPS används .
Exempel [15] :
IPsec ger säker användaråtkomst till servern. När du använder ESP-protokollet krypteras alla anrop till servern och dess svar. Tydliga meddelanden skickas dock bakom VPN-gatewayen (i krypteringsdomänen).
Andra exempel på användning av IPsec [16] :
Virtuella privata nätverk (VPN) | |
---|---|
Teknologi | |
programvara | |
VPN-tjänster |
TCP / IP-protokoll efter lager av OSI-modellen | Grundläggande|
---|---|
Fysisk | |
kanaliserad | |
nätverk | |
Transport | |
session | |
Representation | |
Applicerad | |
Annat ansökt | |
Lista över TCP- och UDP-portar |