Ljudi opisuju VPN kao „koji koristi enkripciju javnim ključem“, a zatim zamišljaju da je svaki paket zaključan certifikatom servera. Ta slika je pogrešna na način koji je važan kada čitate konfiguracijsku datoteku ili snimku paketa. Javna polovina VPN-a odnosi se na dokazivanje ko je partner i dogovaranje tajnog materijala; simetrična polovina je ono što stvarno štiti promet, paket po paket, tokom cijelog trajanja sesije.

Dvije polovine imaju različit životni vijek, različite načine otkaza i različite stvari koje možete sigurno objaviti. Kada ih razdvojite, pitanja poput „je li RSA 2048 slabiji od AES-128“ prestaju zbunjivati, jer nikada nisu bila uporediva.

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ćava 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 za javni ključ i omogućava drugoj strani da odluči hoće li vjerovati ključu koji je upravo primila. Na primjer, uspostavljanje 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 servera.

Šta rukovanje zapravo proizvodi

U modernom rukovanju svaka strana generira efemerni par ključeva, razmjenjuje javne polovine 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. Ona 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 steku.

Slijede dva sporedna efekta. Prvo, sesijski ključevi su svaki put svježi, zbog čega napadač koji kasnije ukrade dugoročni ključ ne može dešifrirati ranije snimljene sesije, pod uslovom da je dogovor bio efemeran. Drugo, procurio sesijski ključ kompromitira jednu sesiju, ne identitet.

Zašto veliki podaci koriste simetrične ključeve

Simetrične šifre dobro podnose obim: 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 i 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 integritet u jednom prolazu.

Konstrukcija je i mjesto gdje živi većina greš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 dužina šifratnog 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 podešenog vremena ili broja poruka i kratko zadržava stari za pakete na putu. OpenVPN ponovo pregovara ključeve svog podatkovnog kanala po 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 ponovo 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 su identitetski materijal, dok se njegovi transportni ključevi izvode interno. Čitanje tih polja kao iste vrste tajne vodi ka greš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 tiketu. Privatni ključ, unaprijed dijeljeni ključ i izvezeni sesijski ključ nisu. Kada upoređujete snagu, upoređujte unutar tipa: identifikator eliptične krive, 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.

Povezani članci