Što radi unaprijed dogovoreni ključ u IPsec, OpenVPN i WireGuard
Zajednička tajna može autentificirati drugu stranu ili dodati sloj zaštite, a njezina se uloga mijenja s protokolom. Ne zamijenite je korisničkom lozinkom.
Riječi unaprijed dogovoreni ključ pojavljuju se u dokumentaciji IPsec, OpenVPN i WireGuard, ali opisuju tri različita objekta. Jedan je tajna za autentifikaciju, drugi štiti kontrolni kanal, a treći dodaje materijal rukovanju koje već ima identitete. Ako ih smatrate zamjenjivima, dobit ćete vezu koja pada u fazi koju nitko nije očekivao. Pročitajte što polje u tom protokolu radi prije nego u njega kopirate vrijednost.
Tri protokola, tri značenja
Svaki protokol određuje zadaću ključa u vlastitoj specifikaciji, a te se zadaće ne preklapaju. Tajna za autentifikaciju dokazuje da dvije strane znaju istu vrijednost. Ključ kontrolnog kanala štiti pregovaranje koje slijedi. Dodatak rukovanju mijenja raspored ključeva, ali ne mijenja to tko su strane.
Nijedna od tih uloga ne autentificira čovjeka, i upravo ta zbrka oduzima najviše vremena. Unaprijed dogovoreni ključ postavlja se na uređaje ili pristupnike prije razmjene, pa svaki vlasnik za drugu stranu izgleda jednako. To je svojstvo prednost za vezu između dva usmjerivača, a rizik za uslugu daljinskog pristupa s imenovanim zaposlenicima. Držite vjerodajnicu računa i kriptografsku tajnu u odvojenim stupcima dokumenta koji opisuje uvođenje.
IPsec i OpenVPN rabe tu riječ drukčije
IKEv2 može autentificirati stranu unaprijed dogovorenom tajnom umjesto certifikatima, a vrijednost se mora podudarati na obje strane. Budući da se ista tajna obično postavlja za skupinu strana, svaki se vlasnik može predstaviti kao ostali, a razmjena ne dobiva nikakvu tajnost unaprijed iz ključeva identiteta koje nikada nije imala.
Opcije tls-auth i tls-crypt u OpenVPN-u pričvršćuju statični ključ na kontrolni kanal, dodajući potpis HMAC ili šifrirajući samo pregovaranje. Taj ključ nije korisnička lozinka i ne zamjenjuje klijentski certifikat. Razlikovanje je važno pri obnovi, kada promjena lozinke ostavlja ključ kontrolnog kanala netaknutim.
PSK u WireGuardu dodaje, ne identificira
Strane WireGuarda već imaju javne i privatne ključeve Curve25519, a rukovanje autentificira te identitete. Neobavezni unaprijed dogovoreni ključ umiješa se u lančani ključ i pridonosi simetrični materijal povrh razmjene javnih ključeva.
Sam po sebi ne daje identitet ni korisnički račun, pa operater ne može razlikovati dva vlasnika po njihovu PSK-u. Obje strane moraju nositi istu vrijednost, inače rukovanje ne uspijeva bez korisne poruke o pogrešci. Zato se rotacija mora planirati za obje strane istodobno, a ne kao uređivanje jedne datoteke.
Provjerite distribuciju, rotaciju i uklanjanje
Distribucija je slaba točka svakog dizajna koji rabi jednu tajnu na mnogim mjestima. Vrijednost zalijepljena u prozor razgovora, spremljena u repozitorij ili ponovno upotrijebljena među okruženjima skuplja kopije koje nitko ne može nabrojiti, a svaka kopija tiho širi opseg štete.
Tekst Base64 nije šifriranje. Tajna spremljena pokraj javnog certifikata u istom direktoriju i dalje je tajna u čistom obliku.
openssl rand -base64 32
sudo wg show wg0 preshared-keys
sudo grep -R -n 'psk' /etc/ipsec.d/ 2>/dev/null
Rotirajte prema rasporedu i nakon svake sumnjive izloženosti, ažurirajući svaku predviđenu stranu prije nego opozovete staru vrijednost. Zatim isprobajte vezu s oba kraja, jer ključ koji se ne podudara pada pri rukovanju i izgleda točno kao problem s vatrozidom.
Zapišite koja tajna štiti koju fazu, da se ponovno postavljanje lozinke nikada ne zamijeni s obnovom kriptografskog ključa. Taj jedan redak štedi sat svaki put kad netko pregledava uvođenje.