Symetrické vs. asymetrické šifrování ve VPN: co dělá které
VPN ověřuje protějšky veřejnými klíči a pak šifruje pakety odvozenými relačními klíči. Berte certifikáty a provozní klíče jako odlišné objekty.
Lidé popisují VPN jako „používající šifrování veřejným klíčem“ a pak si představují, že každý paket je zamčený certifikátem serveru. Tato představa je špatná způsobem, na kterém záleží, když čtete konfigurační soubor nebo zachycený provoz. Veřejná polovina VPN se týká prokázání, kdo je protějšek, a dohody o tajném materiálu; symetrická polovina je to, co provoz skutečně chrání, paket za paketem, po celou dobu života relace.
Obě poloviny mají jinou životnost, jiné režimy selhání a jiné věci, které můžete bezpečně zvęřejnit. Jakmile je oddělíte, otázky jako „je RSA 2048 slabší než AES-128“ přestanou mást, protože nikdy nebyly srovnatelné.
Tři operace, které se pletou dohromady
Kryptografie veřejného klíče je deštník nad nejméně třemi odlišnými operacemi. Podpis dokazuje, že držitel soukromého klíče schválil určitou zprávu. Dohoda o klíči umožňuje dvěma protějškům odvodit sdílené tajemství z hodnot, které si vyměňují veřejně. Šifrování veřejným klíčem skrývá data pod něčím veřejným klíčem, takže je může otevřít jen soukromý klíč.
VPN handshaky většinou používají první dvě. Certifikát není šifrovací klíč; je to podepsané prohlášení, které váže jméno k veřejnému klíči a druhé straně umožňuje rozhodnout, zda klíči, který právě dostala, věřit. Například ustavení klíčů v TLS 1.3 stojí na dohodě o klíči (EC)DHE plus podpisech certifikátů, ne na šifrování relace veřejným klíčem serveru.
Co handshake skutečně vytváří
V moderním handshaku každá strana vygeneruje efemérní pár klíčů, vymění si veřejné poloviny a vypočte sdílené tajemství, které nikdy nepřejde drátem. Toto tajemství pak projde funkcí odvození klíčů, aby vznikly samostatné klíče pro každý směr, plus nonce a IV materiál, který záznamová vrstva potřebuje. WireGuard to dělá svou konstrukcí založenou na Noise; TLS 1.3 to dělá pomocí HKDF nad handshake transkriptem.
Dlouhodobý pověřovací údaj — certifikát a soukromý klíč, nebo statický klíč WireGuard — ověřuje tuto výměnu. Podepisuje nebo se mísí do transkriptu, aby cizinec nemohl dokončit handshake na místě protějšku. Poté údaj nevykonává práci na každý paket. Kdyby ano, každý paket by potřeboval operaci se soukromým klíčem a vytížený tunel by byl omezen nejpomalejší operací v zásobníku.
Platí dva vedlejší účinky. Za prvé, relační klíče jsou pokaždé čerstvé, proto útočník, který později ukradne dlouhodobý klíč, nemůže dešifrovat dříve zaznamenané relace, pokud byla dohoda efemérní. Za druhé, uniklý relační klíč kompromituje jednu relaci, ne identitu.
Proč velká data používají symetrické klíče
Symetrické šifry zvládají objem dobře: AES-GCM nebo ChaCha20-Poly1305 zpracují každý paket klíčem, který už je v paměti, ověří hlavičku a zvýší čítač. Přijímající strana zkontroluje nonce a autentizační značku a zahodí vše, co selže nebo se opakuje. To je dost levné na plnou rychlost linky na běžném hardwaru a stejná konstrukce dává důvěrnost i integritu v jednom průchodu.
Konstrukce je také místem, kde žije většina implementačních chyb. Opakovaný nonce v GCM láme důvěrnost i pravost najednou, proto protokoly odvozují klíče pro každý směr a udržují explicitní čítač nebo epochu. Čtete-li zachycený provoz a délka šifrovaného textu odpovídá otevřenému textu plus pevné režii, pracuje symetrická vrstva, ne operace s veřejným klíčem na každý paket.
Životnost, obnova klíčů a dopředná bezpečnost
Relační klíče mají vypršet. TLS 1.3 umožňuje zprávu KeyUpdate k protočení provozních klíčů; WireGuard obnovuje relaci po nastavené době nebo počtu zpráv a starou krátce drží pro pakety na cestě. OpenVPN znovu vyjednává klíče svého datového kanálu podle plánu, přičemž reneg-sec řídí interval.
Žádné z tohoto otáčení není totéž jako obnova certifikátu. Certifikát může být platný rok, zatímco relační klíče se mění každých několik minut, a certifikát lze vyměnit bez dotčení klíčů běžícího tunelu. Když plánujete expiraci, ptejte se, který objekt otáčíte; odpověď rozhoduje, zda se klienti připojí znovu, nebo jen obnoví klíče.
Čtení konfigurací a diagnostiky bez míchání objektů
V praxi volíte kompletní protokol a jeho podporované primitivy, neskládáte si vlastní. Klíč --tls-crypt v OpenVPN chrání řídicí kanál; datový kanál používá vyjednané symetrické šifry. Položky PrivateKey a PublicKey ve WireGuardu jsou identitní materiál, zatímco jeho transportní klíče se odvozují interně. Číst tato pole jako stejný druh tajemství vede k chybám, jako je vložení veřejného klíče tam, kam patří soukromý.
Držte veřejný materiál odděleně od soukromého. Certifikát, veřejný klíč WireGuard a otisk jsou bezpečné ke sdílení v tiketu. Soukromý klíč, předem sdílený klíč a exportovaný relační klíč nejsou. Když srovnáváte sílu, srovnávejte v rámci typu: identifikátor eliptické křivky, velikost RSA modulu a velikost klíče AES měří různé věci za různých předpokladů. Specifikace TLS 1.3 je užitečný odkaz pro to, jak obě vrstvy do sebe zapadají, i když váš tunel není TLS.