Hva en VPN-protokollspesifikasjon beviser og ikke beviser
En spesifikasjon fastsetter meldingsformater, algoritmer og trusselantakelser. Den kan ikke garantere for bygget du installerte eller for operatørens håndtering av kontoen din.
Et protokolldokument er en kontrakt mellom implementasjoner, og nøye lesing forteller deg hva to konforme parter vil utveksle og hvilke egenskaper designerne mente skulle holde. Det forteller deg ikke hvilken binærfil som kjører på serveren du kobler til, hvordan den serveren ble konfigurert eller hva som senere skjer med kontooppføringen din. Dette er tre forskjellige typer bevis, og å behandle spesifikasjonen som alle tre er måten et protokollnavn begynner å gjøre arbeid det ikke kan. Å holde de tre fra hverandre er hele øvelsen.
Dokumentet er begynnelsen på et argument, ikke konklusjonen.
Hva dokumentet faktisk spesifiserer
For WireGuard definerer protokollbeskrivelsen et Noise IK-håndtrykk, et fast sett primitiver, meldingslayouter og transportinnrammingen som deretter bærer pakker. For IKEv2 er det sammenlignbare artefaktet RFC 7296, som spesifiserer utvekslinger, nyttelaster og forhandlingen av forslag. I begge tilfeller er omfanget presist: meldingene, tilstandsmaskinen og antakelsene som sikkerhetsmålene gjelder under.
Valgfrie moduser kompliserer lesingen. En egenskap som gjelder for ett håndtrykk, gjelder kanskje ikke for en utrulling med et annet autentiseringsarrangement eller en reservekonfigurasjon.
Hvor garantiene stopper
En formell analyse svarer på et spørsmål om en modell. WireGuards verifiseringsarbeid bruker en symbolsk modell i Tamarin-beviseren, som kan vise at designet motstår visse angrep gitt antakelsene; det viser ikke at en utlevert brukerromsimplementasjon ikke har en minnesikkerhetsfeil. Det er i dette gapet mellom modell og maskin virkelige hendelser lever. Å lese et bevis som et implementasjonssertifikat er en kategorifeil.
Forward secrecy illustrerer den samme grensen. Egenskapen avhenger av at nøkler ødelegges slik protokollen har tenkt, og det er en egenskap ved implementasjonen og miljøet dens, ikke ved meldingsformatet. Et design som foreskriver sletting, kan ikke håndheve det på en plattform som sider minne til disk.
Lagdelte avhengigheter utvider gapet ytterligere: TLS-biblioteket bak en TLS-basert tunnel, kjernegrensesnittet en brukerromstunnel bruker, og tilfeldig tall-generatoren ligger alle utenfor protokollteksten.
Følg bytene inn i bygget
Beveg deg fra dokument til artefakter ved å identifisere versjoner og deretter sammenligne dem med det som faktisk betjener trafikk. Et produkt som navngir en protokoll, kan legge til komponenter for klargjøring, telemetri og administrasjon som spesifikasjonen aldri beskriver.
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
Reproduserbare bygg og publiserte kontrollsummer gjør det mulig å koble et kildetre til en distribuert binærfil. Uten den koblingen beviser publisert kildekode bare at inspeksjon er mulig, ikke at filen som kjører samsvarer med den.
Konfigurasjon hører til samme trinn. Chiffersuiter, tillatte parter og rutinginnstillinger er utrullingsvalg, og et konformt bygg som er konfigurert slurvete gir fortsatt en svak tunnel.
Hold driftspraksis adskilt
Kontooppføringer, betalingsdata og støtteinnsendinger er operatørbeslutninger som ingen protokolltekst begrenser. En revisjonsrapport dekker navngitte komponenter innenfor et angitt omfang, og en personvernerklæring beskriver hensikter og praksis; ingen av dem erstatter den andre, og ingen av dem er en kryptografisk uttalelse.
Den presise konklusjonen er kumulativ: spesifikasjonen forklarer designet, bygget og konfigurasjonen forklarer tunnelen, og operatørens dokumenterte praksis forklarer alt tunnelen aldri ser. Si hva av dette du verifiserte, og påstanden forblir sann.