In protokoldokumint is in kontrakt tusken ymplemintaasjes, en naukseizjen lêze fertelt jo wat twa oerienkommende pearen útwikselje en hokker eigenskippen de ûntwerpers bedoelden te garandearjen. It fertelt jo net hokker binêr bestân op de tsjinner draait wêr’t jo mei ferbine, hoe’t dy tsjinner konfigurearre is of wat der letter mei jo accountrecord bart. Dat binne trije ferskillende soarten bewiis, en de spesifikaasje as alle trije behannelje is de manier wêrop in protokolnamm begjint wurk te dwaan dat it net dwaan kin. De trije apart hâlde is de hiele oefening.

It dokumint is it begjin fan in argumint, net de konklúzje derfan.

Wat it dokumint eins spesifisearret

Foar WireGuard definiearret de protokolbeskriuwing in Noise IK-hânskodding, in fêste set primitive, berjochtútlizzens en de transportomlisting dy’t letter pakketten draacht. Foar IKEv2 is it ferlykbere artefakt RFC 7296, dat útwikselingen, payloads en de ûnderhanneling fan foarstellen spesifisearret. Yn beide gefallen is it berik presys: de berjochten, de steatmasjine en de oannames wêrefter’t de feiligensdoelen jilde.

Opsjonele modi meitsje it lêzen yngewikkelder. In eigenskip dy’t foar ien hânskodding jildt, jildt miskien net foar in útrôljen mei in oare autentikaasjeregeling of in fallback-konfiguraasje.

Wêr’t de garânsjes ophâlde

In formele analyze beantwurdet in fraach oer in model. It ferifikaasjewurk fan WireGuard brûkt in symbolysk model yn de Tamarin-bewierder, dat sjen litte kin dat it ûntwerp him tsjin bepaalde oanfallen fersettet ûnder syn oannames; it lit net sjen dat in levere ymplemintaasje yn ’e brûkersromte gjin memory-feilichheidsfout hat. Yn dy kleau tusken model en masjine libje echte foarfallen. In bewiis lêze as in ymplemintaasjesertifikaat is in kategoryflater.

Foarútgeande geheimhâlding yllustrearret deselde grins. De eigenskip hinget derfan ôf dat kaaiïen ferneatige wurde sa’t it protokol bedoelt, en dat is in eigenskip fan ’e ymplemintaasje en har omjouwing, net fan it berjochtfacet. In ûntwerp dat wiskjen foarskriuwt, kin dat net ôftwinge op in platfoarm dat ûnthâld nei skiif skriuwt.

Laachde ôfhinklikheden ferbreedzje de kleau fierder: de TLS-bibleteek efter in TLS-basearre tunnel, de kernelinterface dy’t in brûkersromte-tunnel brûkt, en de tafalfrijgetalgenerator steane allegear bûten de protokoltekst.

Folgje de bytes oant yn ’e build

Gean fan dokumint nei artefakten troch ferzjes te identifisearjen en se dan te ferlykjen mei wat eins ferkear betsjinnet. In produkt dat in protokol neamt, kin komponinten foar provisioning, telemetry en behear tafoegje dy’t de spesifikaasje nea beskriuwt.

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

Werprodusearbere builds en publisearre kontrôlesommen meitsje it mooglik in boarstbeam oan in distribuearre binêr bestân te keppeljen. Sûnder dy keppeling bewiist publisearre boarne allinnich dat ynspeksje mooglik is, net dat it draaiende bestân dermei oerienkomt.

Konfiguraasje heart by deselde stap. Sifersuites, tastiene pearen en routingynstellings binne útrôlkarren, en in oerienkommende build dy’t slordich konfigurearre is, jout noch altyd in swakke tunnel.

Hâld operasjonele praktiken apart

Accountrecords, betellingsgegevens en stipefersiken binne besluten fan ’e operator dy’t gjin protokoltekst beheint. In auditrapport beslacht neamde komponinten binnen in ferklearre berik, en in privacybelied beskriuwt bedoelingen en praktiken; net ien ferfangt de oare, en net ien is in kryptografyske ferklearring.

De krekte konklúzje is kumulatyt: de spesifikaasje ferklearret it ûntwerp, de build en konfiguraasje ferklearje de tunnel, en de dokumintearre praktiken fan ’e operator ferklearje alles wat de tunnel nea sjocht. Sis hokker fan dizze jo ferifisearre hawwe, en de bewearing bliuwt wier.

Relatearre artikelen