Ką VPN protokolo specifikacija įrodo, o ko ne
Specifikacija nustato pranešimų formatus, algoritmus ir grėsmės prielaidas. Ji negali laiduoti už jūsų įdiegtą build’ą ar operatoriaus elgesį su jūsų paskyra.
Protokolo dokumentas yra sutartis tarp implementacijų, ir atidus skaitymas pasako, ką keisis du atitinkantys partneriai ir kokias savybes dizaineriai ketino užtikrinti. Jis nepasako, kuri binari programa veikia serveryje, prie kurio jungiatės, kaip tas serveris sukonfigūruotas ar kas vėliau nutinka jūsų paskyros įrašui. Tai trys skirtingos įrodymų rūšys, o specifikacijos traktavimas kaip visų trijų yra būdas, kuriuo protokolo pavadinimas pradeda daryti darbą, kurio negali atlikti. Šių trijų atskyrimas ir yra visas pratimas.
Dokumentas yra argumento pradžia, o ne jo išvada.
Ką dokumentas iš tikrųjų nustato
WireGuard atveju protokolo aprašymas apibrėžia Noise IK rankos paspaudimą, fiksuotą primityvų rinkinį, pranešimų išdėstymus ir transporto rėminimą, kuris vėliau neša paketus. IKEv2 atveju lygiavertis artefaktas yra RFC 7296, nustatantis mainus, naudingąsias apkrovas ir pasiūlymų derinimą. Abiem atvejais apimtis tiksli: pranešimai, būsenos mašina ir prielaidos, kuriomis galioja saugumo tikslai.
Pasirinktini režimai apsunkina skaitymą. Savybė, galiojanti vienam rankos paspaudimui, gali negalioti diegimui su kitokia autentifikavimo tvarka ar atsargine konfigūracija.
Kur garantijos baigiasi
Formalioji analizė atsako į klausimą apie modelį. WireGuard verifikavimo darbas naudoja simbolinį modelį Tamarin įrodymo įrankyje, kuris gali parodyti, kad dizainas atlaiko tam tikrus išpuolius pagal savo prielaidas; jis neparodo, kad išleistoje vartotojo erdvės implementacijoje nėra atminties saugumo klaidos. Būtent šiame atotrūkyje tarp modelio ir mašinos gyvena tikri incidentai. Skaityti įrodymą kaip implementacijos sertifikatą yra kategorijos klaida.
Tiesioginė paslaptis iliustruoja tą pačią ribą. Savybė priklauso nuo to, kad raktai būtų sunaikinti taip, kaip protokolas numato, ir tai yra implementacijos bei jos aplinkos savybė, o ne pranešimo formato. Dizainas, numatantis ištrynimą, negali jo primesti platformoje, kuri atmintį perkelia į diską.
Sluoksniuotos priklausomybės dar labiau praplečia atotrūkį: TLS biblioteka už TLS pagrįsto tunelio, branduolio sąsaja, kurią naudoja vartotojo erdvės tunelis, ir atsitiktinių skaičių generatorius visi yra už protokolo teksto.
Sekite baitus į patį build’ą
Pereikite nuo dokumento prie artefaktų identifikuodami versijas, o paskui palygindami jas su tuo, kas iš tikrųjų aptarnauja srautą. Produktas, kuris įvardija protokolą, gali pridėti paruošimo, telemetrijos ir valdymo komponentų, kurių specifikacija niekada neaprašo.
openvpn --version | head -3 wg --version dpkg -l | grep -E 'openvpn|wireguard|libssl' ss -lunp | grep -E '1194|51820' sha256sum ./wireguard-tools_1.0.20210914_amd64.deb
Atkuriami build’ai ir paskelbtos kontrolinės sumos leidžia susieti šaltinio medį su platinama binaria programa. Be šios sąsajos paskelbtas šaltinis įrodo tik tai, kad patikra įmanoma, o ne kad vykdomas failas jam atitinka.
Konfigūracija priklauso tam pačiam žingsniui. Šifravimo rinkiniai, leidžiami partneriai ir maršrutizavimo nustatymai yra diegimo pasirinkimai, o atitinkantis build’as, sukonfigūruotas neatsargiai, vis tiek sukuria silpną tunelį.
Laikykite operacines praktikas atskirai
Paskyrų įrašai, mokėjimo duomenys ir pagalbos prašymai yra operatoriaus sprendimai, kurių neapriboja joks protokolo tekstas. Audito ataskaita apima įvardintus komponentus nurodytoje apimtyje, o privatumo politika aprašo ketinimus ir praktikas; nė vienas nepakeičia kito, ir nė vienas nėra kriptografinis teiginys.
Tiksli išvada yra kumuliacinė: specifikacija paaiškina dizainą, build’as ir konfigūracija paaiškina tunelį, o dokumentuotos operatoriaus praktikos paaiškina viską, ko tunelis niekada nemato. Pasakykite, ką iš to patikrinote, ir teiginys lieka teisingas.