Ľudia opisujú VPN ako „tú, ktorá používa šifrovanie verejným kľúčom“, a potom si predstavujú, že každý paket je zamknutý certifikátom servera. Tento obraz je nesprávny spôsobom, ktorý je dôležitý, keď čítate konfiguračný súbor alebo záznam paketov. Verejná polovica VPN slúži na preukázanie, kto je partner, a na dohodu o tajnom materiáli; symetrická polovica je tá, ktorá skutočne chráni prevádzku, paket po pakete, po celý čas života relácie.

Obe polovice majú inú životnosť, iné režimy zlyhania a iné veci, ktoré možno bezpečne zverejniť. Keď ich oddelíte, otázky ako „je RSA 2048 slabšia než AES-128“ prestanú zmiasť, pretože nikdy neboli porovnateľné.

Tri operácie, ktoré sa miešajú

Kryptografia verejného kľúča je dáždnik nad aspoň tromi rôznymi operáciami. Podpis dokazuje, že držiteľ súkromného kľúča schválil konkrétnu správu. Dohoda o kľúči umožňuje dvom stranám odvodiť spoločné tajomstvo z hodnôt, ktoré si vymieňajú verejne. Šifrovanie verejným kľúčom skrýva dáta pod niekoho verejným kľúčom, takže ich môže otvoriť iba súkromný kľúč.

Handshaky VPN používajú väčšinou prvé dve. Certifikát nie je šifrovací kľúč; je to podpísané vyhlásenie, ktoré spája meno s verejným kľúčom a umožňuje druhej strane rozhodnúť sa, či dôverovať práve prijatému kľúču. Napríklad vytvorenie kľúčov v TLS 1.3 sa opiera o dohodu o kľúči (EC)DHE a podpisy certifikátov, nie o šifrovanie relácie verejným kľúčom servera.

Čo handshake skutočne vytvára

V modernom handshaku každá strana vytvorí efemérny pár kľúčov, vymení verejné polovice a vypočíta spoločné tajomstvo, ktoré nikdy neprejde po drôte. To tajomstvo potom prejde funkciou odvodenia kľúčov a vytvorí oddelené kľúče pre každý smer, plus nonce a IV materiál, ktorý potrebuje záznamová vrstva. WireGuard to robí svojou konštrukciou založenou na Noise; TLS 1.3 to robí pomocou HKDF nad transkriptom handshaku.

Dlhodobá akreditácia — certifikát a súkromný kľúč alebo statický kľúč WireGuard — autentifikuje túto výmenu. Podpisuje transkript alebo sa doň mieša, takže cudzinec nemôže dokončiť handshake namiesto partnera. Potom akreditácia nevykonáva prácu na paket. Keby vykonávala, každý paket by vyžadoval operáciu so súkromným kľúčom a vyťažený tunel by bol obmedzený najpomalšou operáciou v zásobníku.

Nasledujú dva vedľajšie účinky. Po prvé, kľúče relácie sú zakaždým nové, takže útočník, ktorý neskôr ukradne dlhodobý kľúč, nedokáže dešifrovať skôr zaznamenané relácie, ak bola dohoda efemérna. Po druhé, prezradený kľúč relácie kompromituje jednu reláciu, nie identitu.

Prečo veľké objemy dát používajú symetrické kľúče

Symetrické šifry zvládajú objem dobre: AES-GCM alebo ChaCha20-Poly1305 spracujú každý paket kľúčom, ktorý už je v pamäti, autentifikujú hlavičku a zvýšia počítadlo. Prijímajúca strana skontroluje nonce a autentifikačnú značku a zahodí všetko, čo zlyhá alebo sa zopakuje. Je to dosť lacné na beh rýchlosťou linky na bežnom hardvéri a tá istá konštrukcia dáva dôvernosť a integritu v jednom prechode.

Konštrukcia je aj miesto, kde žije väčšina chýb implementácie. Opakovaný nonce v GCM narúša dôvernosť a autentickosť naraz, preto protokoly odvodzujú kľúče na smer a držia explicitné počítadlo alebo epochu. Ak čítate záznam paketov a dĺžka šifrovaného textu zodpovedá otvorenému textu plus pevná réžia, pracuje symetrická vrstva, nie operácia verejným kľúčom na paket.

Životnosť, obnovovanie kľúčov a dopredná utajenosť

Kľúče relácie majú vypršať. TLS 1.3 umožňuje správe KeyUpdate otáčať prevádzkové kľúče; WireGuard obnoví reláciu po nastavenom čase alebo počte správ a krátko drží starý kľúč pre pakety na ceste. OpenVPN znovu vyjednáva kľúče svojho dátového kanála podľa plánu a reneg-sec riadi interval.

Žiadna z týchto rotácií nie je to isté ako obnova certifikátu. Certifikát môže byť platný rok, kým sa kľúče relácie menia každých pár minút, a certifikát možno vymeniť bez dotknutia kľúčov bežiaceho tunela. Pri plánovaní expirácie sa opýtajte, ktorý objekt rotujete; odpoveď rozhoduje, či sa klienti znova pripoja alebo iba obnovia kľúče.

Čítanie konfigurácií a diagnostiky bez miešania objektov

V praxi vyberáte kompletný protokol a jeho podporované primitívy, nie zostavujete vlastný. Kľúč --tls-crypt OpenVPN chráni riadiaci kanál; dátový kanál používa dohodnuté symetrické šifry. Záznamy PrivateKey a PublicKey WireGuard sú materiál identity, kým jeho transportné kľúče sa odvodzujú interne. Čítanie týchto polí ako toho istého druhu tajomstva vedie k chybám, ako je vloženie verejného kľúča tam, kde má byť súkromný.

Držte verejný materiál oddelene od súkromného. Certifikát, verejný kľúč WireGuard a odtlačok prsta sú bezpečné na zdieľanie v tikete. Súkromný kľúč, vopred zdieľaný kľúč a exportovaný kľúč relácie nie. Pri porovnávaní sily porovnávajte v rámci jedného typu: identifikátor eliptickej krivky, veľkosť modulu RSA a veľkosť kľúča AES merajú rôzne veci pri rôznych predpokladoch. Špecifikácia TLS 1.3 je užitočný zdroj o tom, ako do seba obe vrstvy zapadajú, aj keď váš tunel nie je TLS.

Súvisiace články