IKE (Internet Key Exchange) je standardní protokol sady protokolů IPsec , který se používá k zajištění bezpečné komunikace ve virtuálních privátních sítích . Účelem IKE je bezpečné vyjednávání a doručení informací o identitě pro „bezpečnostní asociaci“ (SA). Na základě protokolu Oakley .
IKE bylo původně definováno v listopadu 1998 v sérii doporučení RFC 2407 , RFC 2408 , RFC 2409 .
V prosinci 2005 byla vydána druhá verze IKEv2, která byla popsána v RFC 4306 .
V říjnu 2014 byla vydána upravená verze standardu popisujícího IKEv2 v revizi RFC 7296 .
Protokol přenáší zprávy na UDP portech 500 a/nebo 4500. Zavedený SA zahrnuje sdílený tajný klíč a sadu kryptografických algoritmů. IKE může také používat kompresi IP.
Výměna informací se provádí pomocí párových zpráv „request-response“. Takové páry se nazývají „výměna“.
Výměna dat v IKE probíhá ve 2 fázích. V první fázi je založen SA IKE. Ve druhém se SA IKE používá pro vyjednávání protokolu (obvykle IPSec).
SKEYID - řetězec získaný z tajného klíče známého pouze účastníkům výměny.
SKEYID_e je klíčový materiál používaný SA ISAKMP k ochraně důvěrnosti svých zpráv.
SKEYID_a je klíčový materiál používaný SA ISAKMP k identifikaci svých zpráv.
SKEYID_d – Klíčový materiál používaný při odvozování klíčů pro SAKMP bez ISAKMP
Nx - aktuální časový údaj (x může být i nebo r v případě iniciátora, resp. příjemce)
prf(key, msg) je pseudonáhodná funkce s klíčem (pseudonáhodná funkce). Často se používá hashovací funkce .
g^xy je sdílený tajný kód Diffie-Hellman .
CKY_x - iniciátor (pokud x == I) nebo příjemce (pokud x == R) cookies z hlavičky ISAKMP
HDR - hlavička ISAKMP. Jeho pole typu výměny určuje režim. Pokud je zapsáno HDR*, jsou data šifrována.
SA - Data vyjednávání obsahující jednu nebo více vět. Iniciátor může podat více návrhů, ale respondent musí odpovědět pouze jedním návrhem.
IDx - identifikační údaje pro x. Pokud x == ii, pak jsou to údaje iniciátora v první fázi, pokud x == ir, pak jsou to údaje respondenta v první fázi, pokud x == ui, pak jsou to údaje iniciátor ve druhé fázi, pokud x == ur , pak jsou to údaje respondenta ve druhé fázi.
CERT - certifikační údaje.
SIG_X jsou data podpisu iniciátoru nebo odpovídače v případě X == I nebo X == R, v daném pořadí.
KE jsou klíčová data výměny, která obsahují veřejné informace přenášené během výměny Diffie-Hellman.
HASH(X) - data hash kódu.
<X>_b je tělo dat X.
<x>y - x je zašifrováno klíčem y.
x | Y je zřetězení X a Y.
Pro první fázi jsou možné 2 režimy: základní a agresivní.
V hlavním režimu probíhají 3 výměny: v prvním se uzly dohodnou na pravidlech, ve druhém si vyměňují otevřené hodnoty Diffie-Hellman a pomocná data, ve třetím je potvrzena výměna Diffie-Hellman.
V agresivním režimu jsou pravidla stanovena při první výměně, jsou přenášeny veřejné hodnoty Diffie-Hellman a doplňkové informace. Navíc ve druhé zprávě první výměny je identifikován odpovídač. Třetí zpráva identifikuje iniciátora a potvrzuje účast na výměně. Poslední (čtvrtá) zpráva nemusí být odeslána.
Pro obě tyto metody jsou možné čtyři typy různých metod identifikace: digitální podpis , dva typy šifrování veřejným klíčem a sdílený klíč (předsdílený klíč).
V závislosti na typu identifikace se na začátku vygeneruje SKEYID.
SKEYID = prf(Ni_b | Nr_b, g^xy) v případě identifikace digitálním podpisem.
SKEYID = prf(hash(Ni_b | Nr_b), CKY-I | CKY-R) v případě šifrování veřejného klíče.
SKEYID = prf(předsdílený klíč, Ni_b | Nr_b) v případě sdíleného klíče.
Poté strany vypočítají materiály klíčů SKEYID_d, SKEYID_a, SKEYID_e.
SKEYID_d = prf(SKEYID, g^xy | CKY-I | CKY-R | 0)
SKEYID_a = prf(SKEYID, SKEYID_d | g^xy | CKY-I | CKY-R | 1)
SKEYID_e = prf(SKEYID, SKEYID_a | g^xy | CKY-I | CKY-R | 2)
V hlavním režimu se ve fázích 1 a 2 strany dohodnou na SA IKE a dohodnou se na nastavení výměny. Obě strany musí sdílet své soubory cookie. Ve fázích 3 a 4 si strany vymění klíče Diffie-Hellman a pseudonáhodné hodnoty. Strany pak mohou zprávy chránit. V krocích 5 a 6 se vyměňují šifrované identifikační informace.
V agresivním režimu je vyjednávání omezeno, protože iniciátor musí odeslat hodnoty Diffie-Hellman a aktuální časové údaje ve stejné zprávě. To znamená, že iniciátor nemůže navrhnout různé skupiny Diffie-Hellman. Někdy však může být agresivní režim jediným způsobem, jak vytvořit přidružení zabezpečení IKE, například pokud příjemce nezná adresu iniciátora. Pokud již iniciátor má informace o příjemci, bude efektivnější agresivní režim.
V základním i agresivním režimu jsou výsledkem podepsaná data (SIG_I a SIG_R).
Pokud má respondér více veřejných klíčů v nativním režimu, 3. zpráva odešle hash certifikátu (HASH(1)), který použil iniciátor pro šifrování. Příjemce tak bude moci určit, jakým klíčem jsou zprávy zašifrovány, jednoduchým sestavením hashů svých certifikátů a jejich porovnáním s přijatým. Za zmínku stojí, že identifikační údaje a aktuální čas jsou šifrovány pomocí klíče druhé strany.
Autentizace pomocí šifrování veřejným klíčem vyžaduje náklady na operace klíče: 2 operace pro šifrování pomocí veřejného klíče a 2 operace pro dešifrování pomocí soukromého klíče. Opravený režim umožňuje snížit počet operací na polovinu. V tomto režimu jsou aktuální časová data také šifrována pomocí veřejného klíče druhé strany a identifikátory (a pokud jsou odesílány, certifikáty) jsou šifrovány pomocí dohodnutého symetrického šifrovacího algoritmu (na základě SA dat). Klíč pro toto šifrování je odvozen z aktuálních časových údajů.
Důvod případného odeslání HASH(1) je stejný jako u jednoduché autentizace pomocí šifrování veřejným klíčem. Klíče Ke_i a Ke_r se sjednávají během výměny dat SA. Data jsou šifrována a datové hlavičky jsou odesílány jako prostý text.
Klíč hlavního režimu lze určit z IP adres stran, protože hash HASH_I iniciátora musí být spočítán předtím, než může iniciátor zpracovat IDir. Agresivní režim umožňuje stranám mít více sdílených klíčů a komunikovat, který z nich je použit při vyjednávání výměny.
Rychlý režim nepředstavuje úplnou výměnu (protože je neoddělitelně spojen s výměnami fáze 1), ačkoli se používá jako součást procesu vyjednávání SA, dodává klíčové materiály a pravidla vyjednávání pro SAK mimo ISAKMP. Všechny zprávy musí být chráněny společností ISAKMP SA. To znamená, že všechny části zpráv kromě hlavičky ISAKMP jsou zašifrovány.
HASH(1) = prf(SKEYID_a, M-ID | SA | Ni [ | KE ] [ | IDci | IDcr)
HASH(2) = prf(SKEYID_a, M-ID | Ni_b | SA | Nr [ | KE ] [ | IDci | IDcr)
HASH(3) = prf(SKEYID_a, 0 | M-ID | Ni_b | Nr_b)
Nový klíčový materiál je definován jako:
KEYMAT = prf(SKEYID_d, protokol | SPI | Ni_b | Nr_b) - dokonalé dopředné utajení není vyžadováno
KEYMAT = prf(SKEYID_d, g(qm)^xy | protokol | SPI | Ni_b | Nr_b) - je vyžadováno dokonalé dopředné utajení. Zde je g(qm)^xy sdílený klíč, který byl získán během výměny Diffie-Hellman.
Nový skupinový režim nebude použit, dokud nebude zřízena ISAKMP SA. Popis nové skupiny by měl následovat až po fázi 1 vyjednávání (ačkoli nový skupinový režim sám o sobě neplatí pro fázi 2).
HASH(1) = prf(SKEYID_a, M-ID | SA)
HASH(2) = prf(SKEYID_a, M-ID | SA)
Ve skupinách OAKLEY dochází k porovnávání Diffie-Hellman. RFC 2409 definuje 4 skupiny. Poprvé byly tyto skupiny popsány v protokolu OAKLEY, a proto dostaly tento název.