IKE se začne, obe strani oglašujeta AES, in tunel vseeno odpove z NO_PROPOSAL_CHOSEN. Dnevnik poimenuje predlog, ne pa polja, ki se ni ujemalo. Predlog je ena popolna ponudba, in eno nezdružljivo polje razveljavi celotno kombinacijo, ne le tiste vrstice. Branje predloga kot vreče neodvisnih izbir algoritmov je običajen razlog, da neskladje ostane nevidno.

Dve pogajanji z ločenimi seznami predlogov

IKEv2 zgradi dve varnostni asociaciji. Prva je IKE SA, ki ščiti samo izmenjavo nadzora, druga pa CHILD SA, ki prenaša vaš promet prek ESP. Vsaka ima svoj seznam predlogov, in stran lahko eno sprejme in drugo zavrne.

Ta delitev pojasnjuje pogosto zmedo: delujoča IKE SA dokazuje le, da so se algoritmi nadzornega kanala ujemali. Če predlog CHILD odpove, tunel ne prenese niti enega paketa, čeprav je prva faza končana in so dnevniki na vrhu videti zdravi.

Tudi vrstni red znotraj vsakega seznama je pomemben. Odgovarjajoča stran izbira med iniciatorjevimi urejenimi ponudbami, zato premik široko združljivega vnosa nad ozkega spremeni, kateri nabor se namesti, ne da bi se spremenilo katero koli ime algoritma. Ta vrstni red pripnite v konfiguracijo, namesto da se zanašate na privzete vrednosti. Stabilen vrstni red naredi tudi primerjavo dnevnikov med lokacijami smiselno.

Katera polja pripadajo kateremu predlogu

Nabor polj je majhen, vendar v obeh pogajanjih ni enak. Tabelo berite vrstico za vrstico, ker lahko polje v enem stolpcu v drugem manjka. Sintaksa se razlikuje glede na implementacijo; dokumentacija predlogov strongSwan je ena konkretna referenca.

FieldIKE SA proposalCHILD SA proposal
EncryptionRequiredRequired
IntegrityRequired unless AEADRequired unless AEAD
PRFRequiredNot present
DH groupRequiredOnly for PFS
ESNNot presentOptional

Polje šifriranja poimenuje šifro in v večini sintaks tudi dolžino ključa. Polje celovitosti poimenuje zgoščeno vrednost, uporabljeno za avtentikacijo šifriranega besedila, PRF pa poimenuje funkcijo, ki izpelje ključni material za IKE SA. Skupina DH vzpostavi svež skupni tajni material, zato se pojavi na obeh straneh, vendar z različnimi nameni.

Razširjene zaporedne številke pripadajo samo podatkovni poti. Razširijo zaporedni prostor in se pogajajo kot del predloga CHILD, zato neskladje tam zavrne ponudbo CHILD, medtem ko IKE SA ostane nedotaknjena.

Kako se izbere ena popolna ponudba

Vsak predlog je nabor, in odgovarjajoča stran išče nabor, v katerem je vsako obvezno polje sprejemljivo. Dva seznama lahko oba vsebujeta AES in SHA-256 in vseeno nimata nobenega združljivega vnosa, ker se dolžina ključa, PRF ali skupina DH razlikujejo. Primerjava poteka po predlogu, ne po algoritmu.

Ko se nič ne ujema, odgovarjajoča stran pošlje NO_PROPOSAL_CHOSEN s tipom SA, ki ni uspel. Preberite, na kateri seznam predlogov se nanaša obvestilo, preden uredite konfiguracijo; menjava algoritmov ESP, ko je bil predlog IKE zavrnjen, zapravi en cikel odpravljanja napak.

Vedenje pri izbiri je vredno poznati, ko uglašujete profil. Nekatere implementacije dajejo prednost vrstnemu redu iniciatorja, druge preurejajo po lokalni politiki, zato nabor, ki deluje med dvema dobaviteljema, lahko izgine ko obrnete, katera stran začne povezavo.

AEAD polje odstrani, namesto da bi ga dodal

AES-GCM in ChaCha20-Poly1305 avtenticirata in šifrirata v eni operaciji. Ko je eden od njiju izbran za ESP, se algoritem celovitosti ne pogaja ločeno, ker ga konstrukcija AEAD že pokriva. Zato je predlog, ki združuje AES-GCM s SHA-256, v najboljšem primeru odveč in v najslabšem zavrnjen.

PRF ostaja na strani IKE ločen, saj izpelje ključe za nadzorni kanal, namesto da bi ščitil koristni tovor. Zato lahko predlog IKE zakonito združi šifro AEAD s PRF in skupino DH, medtem ko ustrezen predlog ESP navaja le šifro AEAD in neobvezno skupino PFS.

Dolžina ključa je del žetona šifriranja, zato sta AES-128-GCM in AES-256-GCM različni ponudbi. Profil, kopiran iz vodnika, ki je predpostavljal 256-bit ključe, se ne bo ujemal s končno točko, nastavljeno na 128-bit, čeprav obe vrstici pravita AES-GCM. Dve strani se lahko dogovorita o družini šifer in se vseeno zavrneta zaradi števila za vezajem.

Berite nameščeno SA, ne konfiguracije

Konfigurirani seznam predlogov je ponudba; nameščena SA je rezultat. Na strongSwan in v jedru Linux sta na voljo oba pogleda:

sudo swanctl --list-sas
sudo ip xfrm state
sudo ip xfrm policy

swanctl --list-sas izpiše dogovorjene algoritme za vsako SA, vključno s tem, ali CHILD uporablja AEAD. ip xfrm state pokaže, kaj je jedro dejansko namestilo, in tam potrdite, da obnova ključev ni padla na drugačen nabor od dokumentiranega.

Po popravku shranite ta izpis ob konfiguraciji. Ko posodobitev odjemalca spremeni privzete vrednosti, vam zabeleženi nabor da izhodišče za primerjavo, primerjava pa pokaže na polje, ki se je premaknilo, namesto da bi preiskavo začela znova.

Sorodni članki