Kriptimi simetrik vs. me çelës publik në një VPN: çfarë bën secili
Një VPN vërteton palët me çelësa publikë, pastaj kripton paketat me çelësa sesioni të nxjerrë. Trajtoji certifikatat dhe çelësat e trafikut si objekte të veçanta.
Njerëzit e përshkruajnë një VPN si „ai që përdor kriptim me çelës publik“ dhe pastaj imagjinojnë çdo paketë të mbyllur me certifikatën e serverit. Ky imazh është i gabuar në një mënyrë që ka rëndësi kur lexoni një skedar konfigurimi ose një kapje paketash. Gjysma me çelës publik e një VPN ka të bëjë me vërtetimin se kush është pala dhe me rënien dakord për material sekret; gjysma simetrike është ajo që mbron vërtet trafikun, paketë pas pakete, gjatë gjithë jetës së sesionit.
Të dyja gjysmat kanë jetëgjatësi, mënyra dështimi dhe gjëra që mund të publikohen në mënyrë të sigurt të ndryshme. Pasi t'i ndash, pyetjet si „a është RSA 2048 më e dobët se AES-128“ nuk ngatërrojnë më, sepse nuk ishin kurrë të krahasueshme.
Tri operacione që ngatërrohen
Kriptografia me çelës publik është një ombrellë mbi të paktën tri operacione të ndryshme. Një nënshkrim provon se mbajtësi i një çelësi privat ka miratuar një mesazh të caktuar. Marrëveshja e çelësit i lejon dy palët të nxjerrin një sekret të përbashkët nga vlera që shkëmbejnë haptazi. Kriptimi me çelës publik i fsheh të dhënat nën çelësin publik të dikujt, kështu që vetëm çelësi privat mund t'i hapë ato.
Shtrëngimet e duarve të VPN përdorin kryesisht dy të parat. Një certifikatë nuk është çelës kriptimi; është një deklaratë e nënshkruar që lidh një emër me një çelës publik dhe i lejon palës tjetër të vendosë nëse i beson çelësit sapo marrë. Për shembull, vendosja e çelësave në TLS 1.3 bazohet në marrëveshjen e çelësit (EC)DHE plus nënshkrimet e certifikatës, jo në kriptimin e sesionit me çelësin publik të serverit.
Çfarë prodhon në të vërtetë shtrëngimi i duarve
Në një shtrëngim modern duarsh, secila palë gjeneron një çift çelësash efemer, shkëmben gjysmat publike dhe llogarit një sekret të përbashkët që nuk kalon kurrë nëpër tel. Ai sekret kalon pastaj nëpër një funksion nxjerrjeje çelësash dhe prodhon çelësa të ndarë për çdo drejtim, plus nonce-t dhe materialin IV që i nevojitet shtresës së regjistrave. WireGuard e bën këtë me konstruksionin e vet të bazuar në Noise; TLS 1.3 e bën me HKDF mbi transkriptin e shtrëngimit.
Kredenciali afatgjatë — certifikatë dhe çelës privat, ose një çelës statik WireGuard — vërteton atë shkëmbim. Ai nënshkruan ose përzihet në transkript, kështu që një i huaj nuk mund ta përfundojë shtrëngimin në vend të palës. Pas kësaj, kredenciali nuk kryen punë për paketë. Po të bënte, çdo paketë do të kërkonte një operacion me çelës privat dhe një tunel i zënë do të kufizohej nga operacioni më i ngadaltë në stivë.
Pasojnë dy efekte anësore. Së pari, çelësat e sesionit janë të rinj çdo herë, kështu që një sulmues që më vonë vjedh çelësin afatgjatë nuk mund të deshifrojë sesione të regjistruara më parë, nëse marrëveshja ishte efemere. Së dyti, një çelës sesioni i rrjedhur komprometon një sesion, jo identitetin.
Pse vëllimet e mëdha të dhënash përdorin çelësa simetrikë
Shifrat simetrike e përballojnë mirë vëllimin: AES-GCM ose ChaCha20-Poly1305 përpunojnë çdo paketë me një çelës që ndodhet tashmë në memorie, vërtetojnë kokën dhe rrisin një numërues. Pala marrëse kontrollon nonce-in dhe etiketën e vërtetimit dhe hedh çdo gjë që dështon ose përsëritet. Kjo është mjaft e lirë për të punuar me shpejtësi linje në harduer të zakonshëm, dhe i njëjti konstruksion jep konfidencialitet dhe integritet në një kalim.
Konstruksioni është gjithashtu vendi ku jetojnë shumica e gabimeve të implementimit. Një nonce i përsëritur në GCM thyen konfidencialitetin dhe autenticitetin menjëherë, prandaj protokollet nxjerrin çelësa për drejtim dhe mbajnë një numërues ose epokë të qartë. Nëse lexoni një kapje paketash dhe gjatësia e tekstit të kriptuar përputhet me tekstin e qartë plus një shtesë fikse, punon shtresa simetrike, jo një operacion me çelës publik për paketë.
Jetëgjatësia, rinovimi i çelësave dhe fshehtësia përpara
Çelësat e sesionit janë menduar të skadojnë. TLS 1.3 lejon një mesazh KeyUpdate të rrotullojë çelësat e trafikut; WireGuard rinovon një sesion pas një kohe ose numri mesazhesh të konfiguruar dhe e mban të vjetrin për pak kohë për paketat në rrugë. OpenVPN rinegocion çelësat e kanalit të vet të dhënave sipas një plani, ndërsa reneg-sec kontrollon intervalin.
Asnjë nga këto rrotullime nuk është e njëjta gjë me rinovimin e një certifikate. Një certifikatë mund të jetë e vlefshme një vit ndërsa çelësat e sesionit ndryshojnë çdo pak minuta, dhe certifikata mund të zëvendësohet pa prekur çelësat e tunelit që punon. Kur planifikoni skadimin, pyesni cilin objekt po rrotulloni; përgjigjja vendos nëse klientët rilidhen ose thjesht rinovojnë çelësat.
Leximi i konfigurimeve dhe diagnostikës pa përzier objekte
Në praktikë zgjidhni një protokoll të plotë dhe primitivët që ai mbështet, nuk montoni një tuajin. Çelësi --tls-crypt i OpenVPN mbron kanalin e kontrollit; kanali i të dhënave përdor shifra simetrike të negociuara. Zërat PrivateKey dhe PublicKey të WireGuard janë material identiteti, ndërsa çelësat e transportit nxirren brenda. Leximi i atyre fushave si i njëjti lloj sekreti çon në gabime si ngjitja e një çelësi publik atje ku duhet të jetë një privat.
Mbaje materialin publik të ndarë nga ai privat. Një certifikatë, një çelës publik WireGuard dhe një gjurmë gishti janë të sigurta për t'u ndarë në një tiketë. Një çelës privat, një çelës i ndarë paraprakisht dhe një çelës sesioni i eksportuar nuk janë. Kur krahasoni forcën, krahasoni brenda një lloji: një identifikues i kurbës eliptike, një madhësi e modulit RSA dhe një madhësi e çelësit AES matin gjëra të ndryshme nën supozime të ndryshme. Specifikimi i TLS 1.3 është një referencë e dobishme për mënyrën se si përputhen dy shtresat, edhe kur tuneli juaj nuk është TLS.