Kaj v IPsec, OpenVPN in WireGuard počne vnaprej dogovorjeni ključ
Skupna skrivnost lahko overi drugega partnerja ali doda zaščitno plast, njena vloga pa se spreminja s protokolom. Ne zamenjajte je z uporabniškim geslom.
Besede vnaprej dogovorjeni ključ se pojavljajo v dokumentaciji IPsec, OpenVPN in WireGuard, opisujejo pa tri različne predmete. Eden je skrivnost za overjanje, drugi ščiti krmilni kanal, tretji pa doda gradivo rokovanju, ki že ima identitete. Če jih obravnavate kot zamenljive, dobite povezavo, ki odpove v fazi, ki je nihče ni pričakoval. Preberite, kaj polje v tem protokolu počne, preden vanj kopirate vrednost.
Trije protokoli, trije pomeni
Vsak protokol določi nalogo ključa v svoji specifikaciji in te naloge se ne prekrivajo. Skrivnost za overjanje dokaže, da dva partnerja poznata isto vrednost. Ključ krmilnega kanala ščiti pogajanje, ki sledi. Dodatek k rokovanju spremeni razpored ključev, ne da bi spremenil, kdo sta partnerja.
Nobena od teh vlog ne overi človeka, in prav ta zmeda vzame največ časa. Vnaprej dogovorjeni ključ se v naprave ali prehode vnese pred izmenjavo, zato je vsak imetnik za drugo stran videti enak. Ta lastnost je prednost pri povezavi med dvema usmerjevalnikoma in tveganje pri storitvi oddaljenega dostopa s poimenovanimi zaposlenimi. Hranite poverilnico računa in kriptografsko skrivnost v ločenih stolpcih dokumenta, ki opisuje uvedbo.
IPsec in OpenVPN uporabljata besedo drugače
IKEv2 lahko overi partnerja z vnaprej dogovorjeno skrivnostjo namesto s potrdili, vrednost pa se mora ujemati na obeh straneh. Ker se ista skrivnost običajno nastavi za skupino partnerjev, se lahko vsak imetnik predstavi kot drugi, izmenjava pa ne pridobi nobene tajnosti naprej iz ključev identitete, ki jih ni nikoli imela.
Možnosti tls-auth in tls-crypt v OpenVPN pripeta statični ključ na krmilni kanal, tako da dodata podpis HMAC ali šifrirata samo pogajanje. Ta ključ ni uporabniško geslo in ne nadomesti odjemalskega potrdila. Razlikovanje je pomembno ob obnovi, ko sprememba gesla pusti ključ krmilnega kanala nedotaknjen.
PSK v WireGuard dodaja, ne identificira
Partnerji WireGuard že imajo javne in zasebne ključe Curve25519, rokovanje pa te identitete overi. Izbirni vnaprej dogovorjeni ključ se vmeša v verižni ključ in prispeva simetrično gradivo na vrh izmenjave javnih ključev.
Sam po sebi ne daje identitete ne uporabniškega računa, zato upravljavec dveh imetnikov ne more ločiti po njunem PSK. Obe strani morata nositi isto vrednost, sicer rokovanje spodleti brez koristnega sporočila o napaki. Zato je treba rotacijo načrtovati za obe strani hkrati, ne kot urejanje ene datoteke.
Preverite razdeljevanje, rotacijo in odstranitev
Razdeljevanje je šibka točka vsake zasnove, ki uporablja eno skrivnost na mnogih mestih. Vrednost, prilepljena v okno klepeta, shranjena v repozitoriju ali znova uporabljena med okolji, nabere kopije, ki jih nihče ne more našteti, in vsaka kopija tiho širi obseg škode.
Besedilo Base64 ni šifriranje. Skrivnost, shranjena poleg javnega potrdila v isti mapi, je še vedno skrivnost v jasni obliki.
openssl rand -base64 32
sudo wg show wg0 preshared-keys
sudo grep -R -n 'psk' /etc/ipsec.d/ 2>/dev/null
Rotirajte po urniku in po vsaki sumljivi izpostavitvi, pri tem pa posodobite vsakega predvidenega partnerja, preden prekličete staro vrednost. Nato preizkusite povezavo z obeh koncev, ker se neujemajoči ključ ustavi pri rokovanju in je videti natanko kot težava z požarnim zidom.
Zapišite, katera skrivnost ščiti katero fazo, da se ponastavitev gesla nikoli ne zamenja z obnovo kriptografskega ključa. Ta ena vrstica prihrani uro vsakič, ko kdo pregleduje uvedbo.