Cifruri Windows și strongSwan: potriviți stratul corect
Lungimi de cheie identice nu înseamnă un set compatibil. Separați politica IKE de transformările ESP și păstrați CBC și GCM în propuneri diferite.
Ambele capete spun AES-128 și tunelul refuză în continuare să se stabilească. CBC și GCM sunt transformări diferite care împart întâmplător aceeași lungime de cheie, iar un client care o oferă pe una nu satisface un gateway care o acceptă doar pe cealaltă. Cuvântul AES descrie o familie, nu un acord.
Există și o a doua axă, iar aceasta produce erorile confuze.
Două straturi, două liste independente
IKE protejează negocierea în sine, în timp ce asociația copil protejează traficul care vă interesează cu adevărat. Windows expune prima ca metodă de criptare și metodă de integritate, iar pe a doua ca constante de transformare a cifrului și a autentificării. Aceste câmpuri nu sunt aliasuri unul pentru celălalt, iar o valoare validă într-unul poate fi lipsită de sens sau greșită în celălalt. Citirea profilului cu această separare în minte elimină cea mai mare parte a confuziei.
Consecința practică este că puteți avea o politică de schimb de chei perfect acceptabilă și o politică de canal de date pe care partenerul nu o va accepta. O listă negociază; cealaltă protejează pachetele. Modificarea unei valori în prima nu are niciun efect asupra celei de-a doua, oricât de asemănătoare par cele două într-un dialog de configurare.
Notați ambele liste înainte de a le compara cu gatewayul. O comparație din memorie este modul în care un câmp este editat de două ori, iar celălalt niciodată. Țineți consola gatewayului deschisă lângă profil.
Citiți eroarea lângă propuneri
Etapa care a eșuat vă spune ce listă să examinați. Un refuz în timpul schimbului inițial de chei este o problemă de propunere IKE, și apare înainte de a exista vreo asociație copil. O defecțiune în timp ce asociația de trafic protejat este negociată este o problemă de propunere ESP, iar schimbul de chei a reușit deja. Un mesaj generic de potrivire a politicii de la client nu numește niciuna dintre etape, de aceea viziunea gatewayului însuși este cea utilă.
swanctl --list-conns
swanctl --list-sas
journalctl -u strongswan -n 60 --no-pager
Comparați propunerea primită, propunerea configurată și cea selectată pentru acea singură încercare. Aici contează trei liste diferite, iar doar ultima descrie ce s-a folosit efectiv. Citați-o textual în tichet în loc să o rezumați.
Păstrați CBC și GCM ca alternative separate
Un gateway căruia i se permite în mod deliberat să accepte oricare dintre familii are nevoie de două propuneri, nu de una. În strongSwan o virgulă separă alternativele, iar o cratimă unește componentele unui singur set. Combinarea ambelor familii cu cratime produce o propunere imposibilă în loc de două acceptabile.
proposals = aes128gcm16-prfsha256-ecp256, aes128-sha256-ecp256
esp_proposals = aes128gcm16-ecp256
Prima alternativă poartă criptare autentificată și încă numește o funcție pseudoaleatoare, deoarece derivarea cheii are nevoie de una chiar și atunci când integritatea vine din cifru. A doua alternativă este criptare clasică cu un algoritm de integritate separat. Ambele rămân supuse a ceea ce acceptă implementarea criptografică încărcată.
O propunere ESP nu este o propunere IKE redenumită
Tokenul cifrului arată identic în ambele liste, iar aproape nimic altceva nu se transferă. O propunere ESP nu are funcție pseudoaleatoare de schimb de chei, iar cerințele sale de integritate și secret viitor sunt argumentate împotriva politicii Windows de pe cealaltă parte în loc să fie copiate din linia IKE. Traducerea mecanică a unei liste în cealaltă produce ceva ce validează și nu negociază niciodată.
Alegeți o direcție și rămâneți în ea. Fie gatewayul păstrează o politică doar GCM și clientul implementează o politică compatibilă completă, fie gatewayul acceptă ambele familii și clientul își păstrează setul existent. Activarea unei alternative pe care politica de securitate o interzice nu este o remediere, oricât de repede ar curăța eroarea.
Verificați ambele seturi, apoi o reînnoire a cheii
Confirmați separat setul de schimb de chei selectat și setul de trafic selectat, deoarece provin din liste diferite și pot reuși independent. Apoi lăsați o reînnoire a cheii să aibă loc și confirmați-o și pe aceasta. O primă strângere de mână care funcționează și o reînnoire a cheii care eșuează descriu un set de propuneri doar parțial acceptabil.
Păstrați această dovadă împreună cu modificarea. O deconectare recurentă are nevoie de propriul registru de schimb eșuat înainte ca cineva să dea vina pe un cronometru sau pe un defect al platformei.