Dokument protokola je ugovor između implementacija, i pažljivo čitanje vam kaže šta će dva usklađena partnera razmijeniti i koja su svojstva dizajneri namjeravali da važe. On ne kaže koji binarni fajl radi na serveru na koji se povezujete, kako je taj server konfigurisan ni šta se poslije dešava s vašim zapisom računa. To su tri različite vrste dokaza, a tretiranje specifikacije kao sva tri je način na koji ime protokola počinje raditi posao koji ne može. Razdvajanje tih triju je cijela vježba.

Dokument je početak argumenta, ne njegov zaključak.

Šta dokument zapravo specificira

Za WireGuard, opis protokola definiše Noise IK rukovanje, fiksni skup primitiva, izglede poruka i transportno uokvirivanje koje poslije nosi pakete. Za IKEv2 uporedivi dokument je RFC 7296, koji specificira razmjene, korisna opterećenja i pregovaranje predloga. U oba slučaja obim je precizan: poruke, mašina stanja i pretpostavke pod kojima sigurnosni ciljevi važe.

Opcioni režimi komplikuju čitanje. Svojstvo koje važi za jedno rukovanje možda se ne odnosi na postavljanje s drugačijim aranžmanom autentifikacije ili rezervnom konfiguracijom.

Gdje garancije prestaju

Formalna analiza odgovara na pitanje o modelu. WireGuardov rad na verifikaciji koristi simbolički model u Tamarin dokazivaču, koji može pokazati da se dizajn odupire određenim napadima pod svojim pretpostavkama; ne pokazuje da isporučena implementacija u korisničkom prostoru nema grešku sigurnosti memorije. Taj jaz između modela i mašine mjesto je gdje žive stvarni incidenti. Čitati dokaz kao certifikat implementacije kategorička je greška.

Tajnost unaprijed ilustruje istu granicu. Svojstvo zavisi od toga da se ključevi unište kako protokol predviđa, a to je svojstvo implementacije i njenog okruženja, a ne formata poruke. Dizajn koji propisuje brisanje ne može ga nametnuti na platformi koja prenosi memoriju na disk.

Slojevite zavisnosti dodatno šire jaz: TLS biblioteka iza TLS tunela, kernel interfejs koji koristi tunel u korisničkom prostoru i generator slučajnih brojeva svi stoje izvan teksta protokola.

Pratite bajtove do builda

Pređite s dokumenta na artefakte tako što ćete identifikovati verzije, a zatim ih uporediti s onim što stvarno poslužuje saobraćaj. Proizvod koji navodi protokol može dodati komponente za provizioniranje, telemetriju i upravljanje koje specifikacija nikada ne opisuje.

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

Reproducibilni buildovi i objavljene kontrolne sume omogućavaju povezivanje izvornog stabla s distribuiranim binarnim fajlom. Bez te veze, objavljeni izvor dokazuje samo da je pregled moguć, a ne da fajl koji se izvršava odgovara njemu.

Konfiguracija pripada istom koraku. Skupovi šifri, dozvoljeni partneri i postavke rutiranja su izbori postavljanja, a usklađeni build konfigurisan nemarno i dalje daje slab tunel.

Držite operativne prakse odvojeno

Zapisi računa, podaci o plaćanju i zahtjevi podrške su odluke operatera koje nijedan tekst protokola ne ograničava. Revizorski izvještaj pokriva imenovane komponente u okviru navedenog obima, a politika privatnosti opisuje namjere i prakse; nijedno ne zamjenjuje drugo i nijedno nije kriptografska izjava.

Precizan zaključak je kumulativan: specifikacija objašnjava dizajn, build i konfiguracija objašnjavaju tunel, a dokumentovane prakse operatera objašnjavaju sve što tunel nikada ne vidi. Recite šta ste od toga provjerili i tvrdnja ostaje tačna.

Povezani članci