Inimesed kirjeldavad VPN-i kui „avaliku võtmega krüpteerimist kasutavat“ süsteemi ja kujutavad siis ette, et iga pakett lukustatakse serveri sertifikaadiga. See pilt on vale viisil, mis loeb, kui loete konfiguratsioonifaili või paketisalvestust. VPN-i avaliku võtme pool on selle kohta, kes on osapool, ja salajase materjali kokkuleppimise kohta; sümmeetriline pool on see, mis tegelikult liiklust kaitseb, pakett paketi järel, kogu seansi eluea jooksul.

Kahel poolel on erinevad eluead, erinevad rikkerežiimid ja erinevad asjad, mida saab turvaliselt avaldada. Kui need lahku lööte, lakkavad küsimused nagu „kas RSA 2048 on nõrgem kui AES-128“ segadust tekitamast, sest need ei olnud kunagi võrreldavad.

Kolm toimingut, mis sageli segi aetakse

Avaliku võtmega krüptograafia on vihmavari vähemalt kolme erineva toimingu kohal. Allkiri tõestab, et privaatvõtme omanik kiitis heaks teatud sõnumi. Võtmekokkulepe laseb kahel osapoolel avalikult vahetatud väärtustest ühise saladuse tuletada. Avaliku võtmega krüpteerimine peidab andmed kellegi avaliku võtme alla nii, et neid saab avada ainult privaatvõti.

VPN-i käepigistused kasutavad enamasti kahte esimest. Sertifikaat ei ole krüpteerimisvõti; see on allkirjastatud väide, mis seob nime avaliku võtmega ja laseb teisel poolel otsustada, kas just saadud võtit usaldada. Näiteks TLS 1.3 võtmete loomine põhineb (EC)DHE võtmekokkuleppel ja sertifikaadi allkirjadel, mitte seansi krüpteerimisel serveri avaliku võtmega.

Mida käepigistus tegelikult toodab

Kaasaegses käepigistuses genereerib kumbki pool efemeerse võtmepaari, vahetab avalikud pooled ja arvutab ühise saladuse, mis ei läbi kunagi juhet. See saladus juhitakse seejärel võtmetuletusfunktsiooni kaudu, et toota iga suuna jaoks eraldi võtmed, lisaks nonce'id ja IV-materjal, mida kirjekihi vajab. WireGuard teeb seda oma Noise-põhise konstruktsiooniga; TLS 1.3 teeb seda HKDF-iga käepigistuse transkripti kohal.

Pikaajaline mandaat — sertifikaat ja privaatvõti või staatiline WireGuardi võti — autendib selle vahetuse. See allkirjastab või seguneb transkripti, et võõras ei saaks käepigistust osapoole asemel lõpetada. Pärast seda ei tee mandaat tööd paketi kohta. Kui teeks, vajaks iga pakett privaatvõtme toimingut ja hõivatud tunnel piirduks ahela kõige aeglasema toiminguga.

Sellest tuleneb kaks kõrvalmõju. Esiteks on seansi võtmed iga kord värsked, mistõttu ründaja, kes hiljem pikaajalise võtme varastab, ei saa varem salvestatud seansse dekrüpteerida, eeldusel et kokkulepe oli efemeerne. Teiseks kahjustab lekkinud seansi võti ühte seanssi, mitte identiteeti.

Miks suured andmemahud kasutavad sümmeetrilisi võtmeid

Sümmeetrilised šifrid tulevad mahuga hästi toime: AES-GCM või ChaCha20-Poly1305 töötlevad iga paketti juba mälus oleva võtmega, autendivad päise ja suurendavad loendurit. Vastuvõtja kontrollib nonce'i ja autentimissilti ning viskab kõrvale kõik, mis ebaõnnestub või kordub. See on piisavalt odav, et töötada liini kiirusel tavalisel riistvaral, ja sama konstruktsioon annab konfidentsiaalsuse ja terviklikkuse ühe läbimisega.

Konstruktsioon on ka koht, kus elab enamik juurutamisvigu. Korduv nonce GCM-is rikub konfidentsiaalsuse ja autentsuse korraga, seetõttu tuletavad protokollid võtmeid suuna kohta ja peavad selget loendurit või epohhi. Kui loete paketisalvestust ja šifriteksti pikkus vastab lihttekstile pluss fikseeritud lisakulu, töötab sümmeetriline kiht, mitte avaliku võtmega toiming paketi kohta.

Eluead, võtmete uuendamine ja edasisuunaline salastatus

Seansi võtmed on mõeldud aeguma. TLS 1.3 lubab KeyUpdate sõnumil liiklusvõtmeid keerutada; WireGuard uuendab seansi konfigureeritud aja või sõnumite arvu järel ja hoiab vana lühidalt teel olevate pakettide jaoks. OpenVPN peab oma andmekanali võtmed uuesti läbi graafiku järgi, kusjuures reneg-sec kontrollib intervalli.

Ükski neist pöõretest ei ole sama mis sertifikaadi uuendamine. Sertifikaat võib kehtida aasta, samal ajal kui seansi võtmed muutuvad iga paari minuti tagant, ja sertifikaadi saab välja vahetada ilma töötava tunneli võtmeid puutumata. Kui plaanite aegumist, küsige, millist objekti te pöörate; vastus otsustab, kas kliendid ühenduvad uuesti või lihtsalt uuendavad võtmeid.

Konfiguratsioonide ja diagnostika lugemine objekte segamata

Praktikas valite tervikliku protokolli ja selle toetatud primitiivid, mitte ei pane oma kokku. OpenVPN-i --tls-crypt võti kaitseb juhtkanalit; andmekanal kasutab läbiräägitud sümmeetrilisi šifreid. WireGuardi PrivateKey ja PublicKey kirjed on identiteedimaterjal, samal ajal kui selle transpordivõtmed tuletatakse sisemiselt. Nende väljade lugemine sama liiki saladusena viib vigadeni nagu avaliku võtme kleepimine sinna, kuhu kuulub privaatne.

Hoidke avalik materjal privaatsest eraldi. Sertifikaat, WireGuardi avalik võti ja sõrmejälg on pileti kaudu jagamiseks turvalised. Privaatvõti, eeljagatud võti ja eksporditud seansi võti ei ole. Kui võrdlete tugevusi, võrrelge tüübi piires: elliptilise kõvera identifikaator, RSA mooduli suurus ja AES-i võtme suurus mõõdavad erinevaid asju erinevate eelduste korral. TLS 1.3 spetsifikatsioon on kasulik viide selle kohta, kuidas kaks kihti kokku sobivad, isegi kui teie tunnel ei ole TLS.

Seotud artiklid