Paklauskite, kokį šifravimą naudoja VPN, ir atsakymas paprastai ateina vienu žodžiu: AES-256, arba ChaCha20, arba galbūt WireGuard. Tas atsakymas įvardija vieną vieno sluoksnio komponentą, o tai, kas iš tikrųjų saugo ryšį, yra algoritmų rinkinys, atliekantis keturis skirtingus vaidmenis. Komponento painiojimas su išdėstymu yra dažniausia šių pokalbių klaida, ir ji sukuria palyginimus, kurių neįmanoma išspręsti.

Keturi darbai viename ryšyje

Masinis šifravimas paverčia atvirą tekstą šifruotu tekstu duomenų kanalui, o jo raktas išvedamas, o ne perduodamas. Vientisumo apsauga nustato pakeitimą, ir tai atskiras darbas, net kai viena konstrukcija daro abu. Raktų nustatymas sukuria bendrą srauto medžiagą, o partnerio autentifikavimas nusprendžia, kas yra kitame gale. Jei trūksta bent vieno, ryšys nėra saugus, kad ir kokia stipri būtų likusi dalis.

Kai kurie projektai sujungia du vaidmenis į vieną. AES-GCM ir ChaCha20-Poly1305 yra autentifikuotos šifravimo konstrukcijos, todėl konfidencialumas ir vientisumas ateina kartu; AES-CBC ne, jam reikia atskiro pranešimo autentifikavimo kodo su savo raktu. Todėl pasiūlymo skaitymas kaip nepriklausomų skaičių maišo neteisingai perskaito tuos, kurie buvo suprojektuoti poromis.

Vaidmenys taip pat yra skirtinguose sluoksniuose, todėl tas pats žodis dviejuose produktuose gali reikšti skirtingus dalykus. Blokų šifras ESP viduje ir blokų šifras TLS viduje yra ta pati primityvė skirtingose derybose su skirtingais reikalavimais. Todėl primityvės citavimas be jos režimo ir sluoksnio gali būti blogiau nei nieko necituoti.

Kodėl šifro pavadinimas beveik nieko nesako

Vieną akimirką paimkite frazę AES-256 rimtai: ji nurodo blokų šifrą ir rakto dydį. Ji nieko nesako apie veikimo režimą, ar užtikrinamas vientisumas, kaip buvo nustatyti raktai arba kaip buvo autentifikuotas partneris. Du produktai gali abu reklamuoti AES-256 ir skirtis visu kitu, įskaitant vieną su neautentifikuotu režimu ir kitą su AEAD režimu bei šiuolaikiniu raktų mainu.

TLS 1.3 įtraukė šį atskyrimą į standartą, o tai naudinga pataisa tiems, kurie mokėsi senesnio žodyno. Jo šifrų rinkiniai įvardija tik AEAD ir maišą, o raktų mainų grupės ir parašo algoritmai deramasi kaip atskiri parametrai. Todėl TLS 1.3 rinkinio pavadinimas nepalyginamas su TLS 1.2 rinkinio pavadinimu lygiomis sąlygomis, nors abu pasirodo tame pačiame konfigūracijos failo lauke. Audito atlikėjas, tiesiogiai lyginantis dvi eilutes, padaro išvadą, kurios protokolas nepalaiko. Perskaitykite ir suderėtą grupę, ir parašo parametrus, kitaip palyginimas nebaigtas.

WireGuard pasirenka priešingą kelią ir beveik visiškai pašalina derybas: protokolas nustato fiksuotą algoritmų rinkinį, todėl dvi implementacijos arba veikia kartu, arba ne. Tai teisėtas dizaino pasirinkimas, ir tai taip pat reiškia, kad klausimas, kokį rinkinį derasi WireGuard, neturi palyginimo verto atsakymo. Jei audituojate, perskaitykite specifikaciją kartą ir tada audituokite raktų tvarkymą aplink ją, o ne derybas.

Sluoksnis nusprendžia žodyną

IPsec diegimas derasi du kartus: IKE pasiūlymas valdymo kanalui ir ESP transformacija duomenims, ir abu gali teisėtai skirtis. Pirmojo skaitymas ir prielaida, kad jis aprašo antrąjį, yra dažnas painiavos šaltinis audito metu, nes konfigūracijos faile minimi abu, o įdomusis yra antrasis.

LayerWhat is negotiated thereWhat it does not cover
IKE proposalAlgorithms and groups for the control channel that builds the tunnelThe algorithms protecting the data itself
ESP transformEncryption and integrity for tunneled packetsPeer identity, which authentication already settled
TLS handshakeAEAD and hash, plus separately negotiated groups and signaturesRouting, authorization or retention policy
WireGuardNothing; the algorithm set is fixed by the protocolEverything above the cryptographic arrangement

Pavadinimas, prieinamas vienoje bibliotekoje, nėra automatiškai įgyvendintas kitam duomenų keliui. Todėl teiginys, kad mūsų produktas palaiko AES-256, yra silpnesnis, nei skamba, ir todėl suderinamumo problema paprastai sprendžiama randant palaikomą sankirtą, o ne įjungiant kiekvieną seną algoritmą abiejose pusėse.

TLS 1.3 specifikacija yra aiškiausias paskelbtas šio atskyrimo pavyzdys, nes ji apibrėžia rinkinį kaip porą ir perkelia likusią dalį į savo derybas. Kai ši forma pažįstama, IPsec pasiūlymas ir vienintelis fiksuotas WireGuard rinkinys skaitomi kaip tos pačios idėjos variantai.

Perskaitykite suderėtą rezultatą ir sustokite

Sukonfigūruotas pasiūlymas nėra įrodymas, ką pasirinko du partneriai. Gyva sesija neša atsakymą, ir bet kuri įprasta implementacija gali jį pranešti nefikuodama paketų.

openssl s_client -connect vpn.example.net:443 -brief
ipsec statusall
wg show

Išvestyje skaitykite pasirinktus algoritmus, o ne pasiūlytą sąrašą. Jei atsakymas silpnesnis, nei politikos buvo numatyta, pataisa priklauso pasiūlymo konfigūracijai vienoje pusėje, o neatitikimas šiuolaikinėse implementacijose paprastai pasirodo kaip nepavykusios derybos, o ne kaip tyliai sumažintas saugumas.

Tada prisiminkite, ko rinkinys neapima. Maršrutai, programų leidimai, registravimas ir saugojimas yra atskiri sprendimai su savo peržiūra, ir suderinamas kriptografinis išdėstymas apie juos nieko nesako. Šifro diskusija verta, bet ji atsako į siauresnį klausimą nei tą, kurį dauguma žmonių iš tikrųjų užduoda.

Laikykite žodyną tikslų, ir argumentas sutrumpės. Rinkinys yra vaidmenų rinkinys sluoksnyje, šifras yra vienas komponentas, o suderėtas rezultatas yra vienintelis dalykas, apibūdinantis ryšį, kurį iš tikrųjų turite. Visa kita palyginime yra puošmena.

Susiję straipsniai