VPN-markør på enheden eller udgangsadresse: hvad beviser hvad?
Et netværksmærke læst på enheden og en adresse, som en server ser, er forskellige beviser. Afgør, hvilket dit spørgsmål har brug for.
Telefonens app og fjernserveren begynder med forskellige fakta, og ingen af dem kan låne den andens. Appen kan spørge styresystemet om det netværk, den bruger, mens serveren kun ved, hvad der ankommer over forbindelsen. Kører du dit eget endepunkt, omskrives det andet, og det første forbliver urørt. Hvilket af dem der besvarer dit spørgsmål, afhænger af selve spørgsmålet.
To observationspunkter, to slags beviser
Lokale beviser beskriver enheden. De dækker det interface, der bærer trafikken, den transport, platformen rapporterer, og hvad den kaldende app må spørge om. Fjernbeviser beskriver forbindelsen: kildeadresse, protokol, timing og alt, hvad appen vælger at sende. Intet observationspunkt er en overmængde af det andet.
At blande de to giver påstande, der lyder præcise og ikke kan kontrolleres. Et mærke beviser noget om et netværksobjekt på enheden, ikke om hvordan en fjertjeneste klassificerer anmodningen.
Før du diskuterer registrering, så skriv ned, hvilket punkt spørgsmålet angår. Er spørgsmålet, om en bestemt app kan se, at en tunnel er aktiv, eller om en tjeneste kan udlede, hvor anmodningen kom fra? Det er separate undersøgelser, og et svar på det ene siger intet om det andet.
Hvad et lokalt platforminterface kan rapportere
Android tilbyder et bestemt mærke. Objektet NetworkCapabilities kan rapportere TRANSPORT_VPN, og hasTransport tester, om den transport er til stede på objektet. Appen henter objektet fra connectivity-tjenesten og læser det, underlagt tilladelse til netværkstilstand.
Resultatet er lokal platforminformation, ikke et opslag i en udbyders adresseområder. Det beskriver det netværk, den kaldende app bruger.
To grænser betyder noget. En split-tunnel-regel, der udelukker en app, kan give et andet svar på samme telefon, end en kollega ser, fordi appen kan være bundet et andet sted. Mærket findes også, fordi styresystemet modellerer VPN-interfaces, ikke fordi en bestemt app indsamler det. Om en app læser feltet, videresender det eller ignorerer det, er en egenskab ved den app. Dens manifest og dokumentation er de eneste pålidelige kilder til det spørgsmål.
adb shell dumpsys connectivity | grep -i -m5 vpn
Hvad en fjertjeneste kan se
En server ser forbindelsens kildeadresse, transporten og timingen, og den kan berige adressen med register- eller routingdata. Den kan også modtage alt, hvad appen sender, inklusive placering, når appen anmoder om det, og brugeren accepterer. De kanaler er adskilte, og kun én ligner et adresseopslag.
En adresse registreret hos en hostingudbyder antyder en tunnel, mens en registreret på et bolignet antyder en hjemmeforbindelse. Begge er statistiske hints, ikke fakta om enheden.
En boligadresse placerer ikke personen på den adresse, og en hostingadresse navngiver ikke operatøren eller landet. En tjeneste, der behandler udledningen som sikkerhed, vil nogle gange tage fejl uden at kunne opdage det. Hvis kravet er pålidelighed frem for en heuristik, kan adressedata ikke levere det, og et design, der siger det, er mere ærligt end et, der skjuler gættet.
| Bevis | Hvad det besvarer | Hvad det ikke kan vise |
|---|---|---|
| Lokalt transportmærke | Om dette netværksobjekt er en VPN | Hvem der driver udgangen, eller hvor enheden er |
| Fjern kildeadresse | Hvilken adresse der nåede tjenesten | Om enheden også bærer en tunnel |
| Applikationsdata | Hvad appen valgte at sende | Alt, hvad appen ikke sendte |
Hvorfor en selvhostet udgang kun ændrer den ene side
At køre dit eget endepunkt ændrer den kildeadresse, en fjertjeneste ser, hvilket kan flytte den uden for de områder, tjenesten forbinder med kommercielle udbydere. Det ændrer intet i den lokale netværksmodel, fordi tunnelen forbliver en tunnel, og styresystemet rapporterer den stadig.
Den ene side af beviserne flytter sig; den anden står fast. Kløften mellem dem er, hvor forventningerne brister.
En browser er et tredje tilfælde med sine egne interfaces og begrænsninger. Webindhold kan ikke læse et nativt kapacitetsobjekt, og at behandle en mobil OS-funktion som tilgængelig for en webside er en kategorifejl. Hvis spørgsmålet handler om et websted, så undersøg, hvad et websted faktisk kan få, i stedet for at translitterere en platform-API.
Afgør ud fra det spørgsmål, du stiller
Hvis spørgsmålet er, om en bestemt app kan observere tunnelens tilstand, er platforminterfacet det rigtige sted at kigge, og svaret ligger i den apps kode og tilladelser. Hvis spørgsmålet er, hvad en tjeneste kan udlede, er forbindelsesmetadata beviset. Et juridisk eller kontraktligt spørgsmål afgøres af ingen af dem.
Navngiv spørgsmålet i én sætning, før du indsamler noget. Den sætning afgør, hvilket observationspunkt der betyder noget, og holder undersøgelsen fra at drive over i en anden diskussion.
Mærk hver observation med dens kilde, når du rapporterer den, fordi en umærket påstand ikke kan gennemgås. Et lokalt mærke og en adresseudledning er begge nyttige, og ingen af dem er afgørende, og derfor er det en fejl at smelte dem sammen til én dom.
Når en tjeneste afviser en autoriseret forbindelse, så brug dens understøttede gennemgangsvej i stedet for at ændre en lokal indstilling for at skjule et signal. At fjerne én observation beviser aldrig, at de andre forsvandt.