Vad en VPN-protokollspecifikation bevisar och vad den inte bevisar
En specifikation fastställer meddelandeformat, algoritmer och hotantaganden. Den kan inte gå i god för bygget du installerade eller för hur operatören hanterar ditt konto.
Ett protokolldokument är ett avtal mellan implementationer, och noggrann läsning berättar vad två konforma parter utbyter och vilka egenskaper konstruktörerna avsåg att garantera. Det berättar inte vilken binärfil som körs på servern du ansluter till, hur den servern konfigurerades eller vad som senare händer med din kontopost. Det är tre olika slags bevis, och att behandla specifikationen som alla tre är sättet på vilket ett protokollnamn börjar utföra arbete det inte kan. Att hålla de tre åtskilda är hela övningen.
Dokumentet är början på ett argument, inte dess slutsats.
Vad dokumentet faktiskt specificerar
För WireGuard definierar protokollbeskrivningen ett Noise IK-handskak, en fast uppsättning primitiver, meddelandelayouter och den transportinframning som sedan bär paket. För IKEv2 är den jämförbara artefakten RFC 7296, som specificerar utbyten, nyttolaster och förhandlingen av förslag. I båda fallen är omfattningen exakt: meddelandena, tillståndsmaskinen och de antaganden under vilka säkerhetsmålen gäller.
Valfria lägen komplicerar läsningen. En egenskap som gäller för ett handskak kanske inte gäller för en utrullning med ett annat autentiseringsarrangemang eller en reservkonfiguration.
Där garantierna upphör
En formell analys besvarar en fråga om en modell. WireGuards verifieringsarbete använder en symbolisk modell i Tamarin-bevisaren, som kan visa att konstruktionen motstår vissa attacker givet sina antaganden; det visar inte att en levererad implementering i användarutrymmet inte har en minnessäkerhetsbugg. Det är i denna klyfta mellan modell och maskin verkliga incidenter lever. Att läsa ett bevis som ett implementeringscertifikat är ett kategorifel.
Forward secrecy illustrerar samma gräns. Egenskapen beror på att nycklar förstörs som protokollet avser, och det är en egenskap hos implementationen och dess miljö, inte hos meddelandeformatet. En design som föreskriver radering kan inte genomdriva det på en plattform som sidar minne till disk.
Skiktade beroenden vidgar klyftan ytterligare: TLS-biblioteket bakom en TLS-baserad tunnel, kärngränssnittet som en tunnel i användarutrymmet använder och slumptalsgeneratorn står alla utanför protokolltexten.
Följ byten in i bygget
Rör dig från dokument till artefakter genom att identifiera versioner och sedan jämföra dem med det som faktiskt betjänar trafik. En produkt som namnger ett protokoll kan lägga till komponenter för etablering, telemetri och hantering som specifikationen aldrig 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
Reproducerbara byggen och publicerade kontrollsummor gör det möjligt att koppla ett källkodsträd till en distribuerad binärfil. Utan den kopplingen bevisar publicerad källkod bara att inspektion är möjlig, inte att filen som körs motsvarar den.
Konfiguration hör till samma steg. Chiffersviter, tillåtna parter och routinginställningar är utrullningsval, och ett konformt bygge som konfigurerats slarvigt ger fortfarande en svag tunnel.
Håll driftspraxis åtskild
Kontoposter, betalningsdata och supportärenden är operatörsbeslut som ingen protokolltext begränsar. En revisionsrapport täcker namngivna komponenter inom ett angivet omfång, och en integritetspolicy beskriver avsikter och praxis; ingen av dem ersätter den andra, och ingen av dem är ett kryptografiskt uttalande.
Den exakta slutsatsen är kumulativ: specifikationen förklarar designen, bygget och konfigurationen förklarar tunneln, och operatörens dokumenterade praxis förklarar allt tunneln aldrig ser. Säg vad av detta du verifierade, och påståendet förblir sant.