Izraz unaprijed dogovoreni ključ pojavljuje se u dokumentaciji IPsec, OpenVPN i WireGuard, ali označava 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 tretirate kao zamjenjive, dobit ćete vezu koja pada u fazi koju niko nije očekivao. Pročitajte šta polje u tom protokolu radi prije nego što u njega kopirate vrijednost.

Tri protokola, tri značenja

Svaki protokol definira zadatak ključa u vlastitoj specifikaciji, a ti se zadaci 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 ko su strane.

Nijedna od tih uloga ne autentificira čovjeka, a upravo ta zabuna oduzima najviše vremena. Unaprijed dogovoreni ključ se postavlja na uređaje ili pristupnike prije razmjene, pa svaki vlasnik za drugu stranu izgleda isto. To svojstvo je prednost za vezu između dva rutera, a rizik za uslugu daljinskog pristupa s imenovanim zaposlenicima. Držite vjerodajnicu računa i kriptografsku tajnu u odvojenim kolonama dokumenta koji opisuje uvođenje.

IPsec i OpenVPN koriste tu riječ drugačije

IKEv2 može autentificirati stranu unaprijed dogovorenom tajnom umjesto certifikatima, a vrijednost se mora podudarati na obje strane. Pošto se ista tajna obično konfigurira za grupu strana, svaki vlasnik može se predstaviti kao ostali, a razmjena ne dobija 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. Opcioni unaprijed dogovoreni ključ se umiješa u lančani ključ i doprinosi 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 njihovom PSK-u. Obje strane moraju nositi istu vrijednost, inače rukovanje ne uspijeva bez korisne poruke o grešci. Zato se rotacija mora planirati za obje strane istovremeno, a ne kao uređivanje jedne datoteke.

Provjerite distribuciju, rotaciju i uklanjanje

Distribucija je slaba tačka svakog dizajna koji koristi jednu tajnu na mnogim mjestima. Vrijednost zalijepljena u prozor razgovora, sačuvana u repozitoriju ili ponovo iskorištena među okruženjima skuplja kopije koje niko ne može nabrojati, a svaka kopija tiho širi obim štete.

Tekst Base64 nije šifriranje. Tajna sačuvana pored 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 po rasporedu i nakon svake sumnjive izloženosti, ažurirajući svaku predviđenu stranu prije nego opozovete staru vrijednost. Zatim isprobajte vezu sa oba kraja, jer ključ koji se ne podudara pada pri rukovanju i izgleda tačno kao problem s vatrozidom.

Zapišite koja tajna štiti koju fazu, da se ponovno postavljanje lozinke nikada ne zamijeni sa obnovom kriptografskog ključa. Taj jedan red štedi sat svaki put kada neko pregleda uvođenje.

Povezani članci