Simetrična i asimetrična enkripcija u VPN-u: što koja radi
VPN autentificira partnere javnim ključevima, a zatim šifrira pakete izvedenim sesijskim ključevima. Tretirajte certifikate i ključeve prometa kao različite objekte.
Ljudi opisuju VPN kao „onaj koji koristi enkripciju javnim ključem“ i zatim zamišljaju da je svaki paket zaključan certifikatom poslužitelja. Ta je slika pogrešna na način koji je važan kada čitate konfiguracijsku datoteku ili snimku paketa. Javna polovica VPN-a odnosi se na dokazivanje tko je partner i dogovaranje tajnog materijala; simetrična polovica ono je što stvarno štiti promet, paket po paket, tijekom cijelog trajanja sesije.
Dvije polovice imaju različit životni vijek, različite načine otkazivanja i različite stvari koje možete sigurno objaviti. Kad ih razdvojite, pitanja poput „je li RSA 2048 slabiji od AES-128“ prestaju zbunjivati, jer nikada nisu bila usporediva.
Tri operacije koje se obično miješaju
Kriptografija javnog ključa kišobran je nad najmanje tri različite operacije. Potpis dokazuje da je vlasnik privatnog ključa odobrio određenu poruku. Dogovor o ključu omogućuje dvama partnerima da izvedu zajedničku tajnu iz vrijednosti koje razmjenjuju javno. Enkripcija javnim ključem skriva podatke pod nečijim javnim ključem tako da ih može otvoriti samo privatni ključ.
VPN rukovanja uglavnom koriste prve dvije. Certifikat nije ključ za enkripciju; to je potpisana izjava koja veže ime uz javni ključ i omogućuje drugoj strani da odluči hoće li vjerovati ključu koji je upravo primila. Na primjer, uspostava ključa TLS 1.3 temelji se na dogovoru o ključu (EC)DHE plus potpisima certifikata, a ne na enkripciji sesije javnim ključem poslužitelja.
Što rukovanje zapravo proizvodi
U modernom rukovanju svaka strana generira efemerni par ključeva, razmjenjuje javne polovice i izračunava zajedničku tajnu koja nikada ne prelazi žicu. Ta tajna zatim prolazi kroz funkciju izvođenja ključeva kako bi proizvela odvojene ključeve za svaki smjer, plus nonce vrijednosti i IV materijal koji zapisni sloj treba. WireGuard to radi svojom konstrukcijom zasnovanom na Noiseu; TLS 1.3 to radi s HKDF-om nad transkriptom rukovanja.
Dugoročna vjerodajnica — certifikat i privatni ključ ili statični WireGuard ključ — autentificira tu razmjenu. Potpisuje ili se miješa u transkript tako da stranac ne može dovršiti rukovanje na mjestu partnera. Nakon toga vjerodajnica ne obavlja posao po paketu. Da obavlja, svaki bi paket trebao operaciju privatnog ključa, a zauzeti tunel bio bi ograničen najsporijom operacijom u stogu.
Slijede dva nuspojava. Prvo, sesijski ključevi svaki su put svježi, zbog čega napadač koji kasnije ukrade dugoročni ključ ne može dešifrirati ranije snimljene sesije, uz uvjet da je dogovor bio efemeran. Drugo, procurio sesijski ključ ugrožava jednu sesiju, ne identitet.
Zašto veliki podaci koriste simetrične ključeve
Simetrične šifre dobro podnose obujam: AES-GCM ili ChaCha20-Poly1305 obrađuju svaki paket ključem koji je već u memoriji, autentificiraju zaglavlje i povećavaju brojač. Prijemna strana provjerava nonce i autentifikacijsku oznaku te odbacuje sve što ne prođe ili se ponovi. To je dovoljno jeftino za rad punom brzinom linije na običnom hardveru, a ista konstrukcija daje povjerljivost i cjelovitost u jednom prolazu.
Konstrukcija je i mjesto gdje živi većina pogrešaka u implementaciji. Ponovljeni nonce u GCM-u ruši povjerljivost i autentičnost odjednom, pa protokoli izvode ključeve po smjeru i održavaju eksplicitni brojač ili epohu. Ako čitate snimku paketa i duljina šifriranog teksta odgovara otvorenom tekstu plus fiksni dodatak, radi simetrični sloj, a ne operacija javnog ključa po paketu.
Životni vijek, obnavljanje ključeva i unaprijedna tajnost
Sesijski ključevi trebaju isteći. TLS 1.3 dopušta poruku KeyUpdate za prevrtanje ključeva prometa; WireGuard obnavlja sesiju nakon postavljenog vremena ili broja poruka i kratko zadržava stari za pakete na putu. OpenVPN ponovno pregovara ključeve svog podatkovnog kanala prema rasporedu, a reneg-sec kontrolira interval.
Nijedno od tog prevrtanja nije isto kao obnavljanje certifikata. Certifikat može biti valjan godinu dana dok se sesijski ključevi mijenjaju svakih nekoliko minuta, a certifikat se može zamijeniti bez diranja ključeva tunela koji radi. Kada planirate istek, pitajte koji objekt prevrćete; odgovor odlučuje hoće li se klijenti ponovno povezati ili samo obnoviti ključeve.
Čitanje konfiguracija i dijagnostike bez miješanja objekata
U praksi birate kompletan protokol i njegove podržane primitive, a ne sastavljate svoj. OpenVPN-ov --tls-crypt ključ štiti kontrolni kanal; podatkovni kanal koristi pregovarane simetrične šifre. WireGuard-ovi unosi PrivateKey i PublicKey identitetski su materijal, dok se njegovi transportni ključevi izvode interno. Čitanje tih polja kao iste vrste tajne vodi prema pogreškama poput lijepljenja javnog ključa tamo gdje pripada privatni.
Držite javni materijal odvojeno od privatnog. Certifikat, WireGuard javni ključ i otisak sigurni su za dijeljenje u ticketu. Privatni ključ, unaprijed dijeljeni ključ i izvezeni sesijski ključ nisu. Kada uspoređujete snagu, uspoređujte unutar tipa: identifikator eliptične krivulje, veličina RSA modula i veličina AES ključa mjere različite stvari pod različitim pretpostavkama. Specifikacija TLS 1.3 koristan je referentni dokument za to kako se dva sloja uklapaju, čak i kada vaš tunel nije TLS.