Android-VPN kontra app-løyve: kva åtvaringa tyder
Android-dialogen for VPN-samtykke gjev ein pakkeposisjon, ikkje tilgang til e-posten, bileta eller kontaktane dine. Her ligg den grensa eigentleg.
To Android-dialogar blir heile tida blanda saman: VPN-samtykke-førespurnaden og løyva ein app ber om for dataa dine. Den fyrste overlet ein nettverksposisjon, staden der pakkar kan lesast og skrivast om. Den andre overlet lagra innhald som Android vaktar app for app. Behandlar du dei som éin ting, overdriv du anten kva ein tunnel kan sjå, eller undervurderer grovt kva ein hardnakka app vil be om neste gong.
Kva samtykkedialogen faktisk overlet
Ein app som implementerer VpnService og erklærer BIND_VPN_SERVICE, ber systemet om å bli VPN-en til eininga. Etter godkjenning lagar rammeverket eit tun-grensesnitt og gjev appen ein filskildrar for det. Alt appen gjer etterpå, går gjennom den filskildraren: han les IP-pakkar ut, avgjer kva som skal skje med dei og skriv pakkar inn att.
Omfanget av grensesnittet er uttrykkeleg. Ruter avgjer kva mål som blir fanga, og addAllowedApplication eller addDisallowedApplication avgjer kva appar som matar det. Ein VPN per app som listar to appar, ser ikkje resten av eininga.
Det er ei løyve på pakkenivå, ikkje på datanivå. Tenesta ser byta ein app leverer til nettverksstakken, adresserte til eit mål. Ho får ikkje tilgang til den private lagringa til appen som sender, databasefilene hans eller det dekrypterte minnet hans. Filer ein app har lagra i sin eigen sandkasse, er nøyaktig like vanskelege å lese som før.
Der pakkevisninga stoppar
TLS gjer framleis jobben sin inne i tunnelen, fordi handtrykket går mellom appen og tenaren, ikkje mellom appen og VPN-en. VPN-en sender vidare kryptert tekst som han ikkje kan dekryptere utan øktnøklane. Difor avdekkjer ein tunnel åleine ikkje innhaldet i ei HTTPS-side eller ei verna e-postøkt.
Metadataa rundt den krypterte teksten er ei anna historie, og det er her dei fleste sjølvsikre påstandane fell saman. Mål-IP, port, pakkestorleikar og tidsbruk er alt synleg, i tillegg til tenarnamnet i TLS ClientHello, som vanlegvis blir sendt i klartekst sjølv under TLS 1.3. Encrypted Client Hello endrar dette, men det er ikkje universelt. Vanleg DNS lekk namn like lett når spørjande går ut ukrypterte.
Eldre eller feilkonfigurerte protokollar overlet meir. Vanleg HTTP, IMAP utan TLS og ei rekkje spel- og IoT-protokollar legg nyttelasta si open for alt som har tun-filskildraren.
Løyva som aldri følgjer med
Å godkjenne ein VPN godkjenner ikkje kontaktar, SMS, bilete eller mediebiblioteket. Det er separate køyretidsløyve, kvart med sin eigen dialog og sin eigen attkallingsveg på innstillingssida til appen. Ein VPN-klient som vil ha anropsloggen din, må be om han som kvar annan app, og du kan nekte og behalde tunnelen.
Installasjon av sertifikat er den du bør fylgje med på, fordi han ser ut som ein del av VPN-oppsettet og ikkje er det. Å installere ein brukar-CA i legitimasjonslageret endrar kva sertifikat Android godtek, og sidan Android 7.0 ignorerer ein app som rettar seg mot API 24 eller nyare, brukartilførte CA-ar med mindre nettverkssikkerheitskonfigurasjonen vel dei med eit brukartillitsanker. Ein klient som insisterer på ein CA, kan drive lovleg verksemdsavlytting, eller han kan be om noko VPN-dialogen aldri nemnde.
Tilgjengelegheitstilgang ligg endå lenger ute. Ei teneste med tilgjengelegheit slått på kan lese skjerminnhaldet i andre appar, noko ingen posisjon på pakkenivå gjev.
Lokalt filter eller ekstern gateway
Den same API-en dekkjer to produkt som fortener ulike nivå av tillit. Ein brannmur eller annonseblokkar på eininga tek tun-filskildraren og svarar trafikken lokalt, utan å nokon gong sende han til ein tenar han sjølv driftar. Ein ekte tunnel sender desse pakkane vidare til ein gateway ein annan stad, og den operatøren ser dei same metadataa frå den andre enden og avgjer samstundes kva som kjem tilbake.
Ein praktisk måte å skilje dei på er å sjekke den offentlege adressa di med VPN-en på og av, og sjå om varslet nemner eit eksternt endepunkt. Viss adressa aldri endrar seg, går trafikken truleg i ring på sjølve eininga.
Båe tilfella er framleis ein pakkeposisjon. Skilnaden er kven annan som står ved utgangen.
Kontroller kva du godkjende
Opne Innstillingar, så Nettverk og internett, så VPN, og les oppføringa i staden for ikonet i statuslinja. Alltid på VPN og Blokker tilkoplingar utan VPN er einingsinnstillingar som held grensesnittet levande og kuttar lekkasjar; dei utvidar ingenting. Frå same skjermen kan du gløyme profilen og kalle attende løyvet.
Gå så gjennom dei andre løyva. Appinformasjon viser kva køyretidsløyve klienten har, og tryggingsinnstillingane viser om eit brukarsertifikat vart installert samstundes. Båe kan fjernast uavhengig.
Spørsmålet som er verdt å svare på, er smalt: kva pakkar kjem inn i denne tenesta, kvar går dei, og kva held implementasjonen på. Alt anna i dialogen er støy. VpnService-referansen er den autoritative lista over kva grensesnittet legg open.