Protokola dokuments ir līgums starp implementācijām, un rūpīga lasīšana pasaka, ko apmainīs divas atbilstošas puses un kādas īpašības dizaineri bija iecerējuši nodrošināt. Tas nepasaka, kura binārā datne darbojas serverī, kuram pievienojaties, kā šis serveris tika konfigurēts vai kas vēlāk notiek ar jūsu konta ierakstu. Tie ir trīs dažādi pierādījumu veidi, un specifikācijas uzskatīšana par visiem trim ir veids, kā protokola nosaukums sāk darīt darbu, ko tas nevar paveikt. Šo trīs šķiršana ir viss vingrinājums.

Dokuments ir argumenta sākums, nevis tā secinājums.

Ko dokuments patiešām nosaka

WireGuard gadījumā protokola apraksts definē Noise IK rokasspiedienu, fiksētu primitīvu kopu, ziņojumu izkārtojumus un transporta ietvaru, kas pēc tam pārnēsā paketes. IKEv2 gadījumā salīdzināmais artefakts ir RFC 7296, kas nosaka apmaiņas, lietderīgās slodzes un priekšlikumu pārrunas. Abos gadījumos tvērums ir precīzs: ziņojumi, stāvokļa mašīna un pieņēmumi, saskaņā ar kuriem drošības mērķi ir spēkā.

Neobligātie režīmi sarežģī lasīšanu. Īpašība, kas attiecas uz vienu rokasspiedienu, var neattiekties uz izvietojumu ar citu autentifikācijas kārtību vai rezerves konfigurāciju.

Kur beidzas garantijas

Formālā analīze atbild uz jautājumu par modeli. WireGuard verifikācijas darbs izmanto simbolisku modeli Tamarin pierādītājā, kas var parādīt, ka dizains iztur noteiktus uzbrukumus saskaņā ar saviem pieņēmumiem; tas neparāda, ka piegādātajā lietotāja telpas implementācijā nav atmiņas drošības kļūdas. Tieši šajā plaisā starp modeli un mašīnu dzīvo reāli incidenti. Lasīt pierādījumu kā implementācijas sertifikātu ir kategorijas kļūda.

Uz priekšu vērstā slepenība ilustrē to pašu robežu. Īpašība ir atkarīga no tā, ka atslēgas tiek iznīcinātas tā, kā protokols to paredz, un tā ir implementācijas un tās vides īpašība, nevis ziņojuma formāta. Dizains, kas nosaka dzēšanu, nevar to panākt platformā, kas atmiņu pārnes uz disku.

Slāņotās atkarības plaisu paplašina vēl vairāk: TLS bibliotēka aiz TLS balstīta tuneļa, kodola saskarne, ko izmanto lietotāja telpas tunelis, un nejaušo skaitļu ģenerators visi atrodas ārpus protokola teksta.

Sekojiet baitiem līdz pašam būvējumam

Pārejiet no dokumenta pie artefaktiem, identificējot versijas un pēc tam salīdzinot tās ar to, kas patiešām apkalpo satiksmi. Produkts, kas nosauc protokolu, var pievienot nodrošināšanas, telemetrijas un pārvaldības komponentus, kurus specifikācija nekad neapraksta.

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

Reproducējami būvējumi un publicētās kontrolsummas ļauj saistīt avota koku ar izplatītu bināro datni. Bez šīs saites publicētais avots pierāda tikai to, ka pārbaude ir iespējama, nevis ka darbojošā datne tam atbilst.

Konfigurācija pieder tam pašam solim. Šifrēšanas komplekti, atļautās puses un maršrutēšanas iestatījumi ir izvietošanas izvēles, un atbilstošs būvējums, kas konfigurēts nevīžīgi, joprojām rada vāju tuneli.

Turiet darbības prakses atsevišķi

Konta ieraksti, maksājumu dati un atbalsta iesniegumi ir operatora lēmumi, kurus neierobežo neviens protokola teksts. Audita ziņojums aptver nosauktus komponentus noteiktā tvērumā, un privātuma politika apraksta nodomus un praksi; neviens neaizstāj otru, un neviens nav kriptogrāfisks apgalvojums.

Precīzais secinājums ir kumulatīvs: specifikācija izskaidro dizainu, būvējums un konfigurācija izskaidro tuneli, un operatora dokumentētā prakse izskaidro visu, ko tunelis nekad neredz. Sakiet, ko no tā pārbaudījāt, un apgalvojums paliek patiess.

Saistītie raksti