Een technische beschrijving van Psiphon
3-12-2014 - 3 min leestijd
Bijgewerkt: 4-6-2021
Hier is een update om twee recente vragen te beantwoorden: eenvoudig gezegd, wat is Psiphon en hoe verschilt het van een VPN-dienst; en, wat is er veranderd sinds het technische ontwerpdocument voor het laatst is bijgewerkt.
Psiphon 3 is een centraal beheerd, geografisch divers netwerk van duizenden proxyservers. Het grootste deel van onze infrastructuur wordt gehost bij cloudproviders. Psiphon 3 is een "one hop"-architectuur met veilige verbindingsversleuteling tussen clients en servers. We bieden clients voor de populairste platforms: Windows, Android en iOS (in alfa).
Psiphon is open source. Onze dienst biedt een sterk privacybeleid; er zijn geen gebruikersaccounts en netwerkadressen van gebruikers worden niet vastgelegd.
Psiphon verschilt op een paar belangrijke punten van standaard VPN-diensten:
- We passen strategieën toe om subsets van servers te distribueren naar gebruikers, met als doel elke gebruiker een handvol servers te bieden die ze kunnen bereiken, zonder het hele netwerk aan één gebruiker te onthullen. Om dit doel te bereiken, is de omvang van ons netwerk -- en in het bijzonder de diversiteit van onze netwerkadressen -- niet louter een functie van onze verkeersbelasting.
- We gebruiken protocolversluiering om DPI-blokkades te omzeilen.
Psiphons technische ontwerpdocument is verouderd en wat volgt is een zeer kort overzicht van de belangrijkste technische wijzigingen die we hebben doorgevoerd sinds het project in 2011 werd gelanceerd.
- We hebben het versluierde SSH-protocol toegevoegd om DPI-fingerprinting tegen te gaan. Dit volledig willekeurig ogende protocol wordt ingezet met een unieke versluieringssleutel per Psiphon-server.
- We hebben een optioneel HTTP-voorvoegsel toegevoegd aan ons protocol om op DPI gebaseerde whitelisting van HTTP-verkeer tegen te gaan. Dit eenvoudige voorvoegsel is voldoende voor op regex gebaseerde DPI (nDPI en l7-filter) om Psiphon-verkeer te classificeren als HTTP; en het was voldoende om een daadwerkelijke tegenstander te omzeilen op het moment dat we het invoerden.
- We hebben externe serverlijsten toegevoegd om de concepten van ingebedde en discoveryservers aan te vullen. Waar discovery alleen plaatsvindt wanneer er verbinding is met een bestaande server, kunnen externe serverlijsten zelfs worden gedownload wanneer alle servers zijn geblokkeerd. Externe serverlijsten worden gedistribueerd via S3 en benaderd via https://s3.amazonaws.com zonder een herkenbare bucketnaam in de URL. Op deze manier is het moeilijk voor een tegenstander om onze externe serverlijsten te blokkeren zonder heel S3 te blokkeren of HTTPS-verkeersanalyse te implementeren.
- E-mail is nu een belangrijk mechanisme voor de verspreiding van clients. We hebben een autoresponder die links en bijlagen terugstuurt naar aangepaste sponsor-/kanaalspecifieke Psiphon-clients, afhankelijk van het e-mailadres waarnaar gebruikers mailen.
- We hebben in 2012 een Android-client uitgebracht. De eerste versie bevatte een ingebedde browser gebaseerd op Androids WebView. In 2012/2013 hebben we ondersteuning toegevoegd voor tunneling van het hele apparaat, waarmee alle Android-apps door Psiphon worden getunneld. We hebben een iptables-modus voor het hele apparaat (voor gerootte Android 2.2+-apparaten); en een modus voor het hele apparaat die Androids VpnService met tun2socks gebruikt (voor elk Android 4+-apparaat). Aanvullende functies die zijn toegevoegd, omvatten selectie van de uitgaande regio en proxy-chaining.
- We hebben nu een iOS-client in de alfafase. Deze app heeft een ingebedde browser.
- Ons in-app-feedbackmechanisme stuurt ons berichten en optionele diagnostische gegevens van gebruikers. Dit systeem heeft ons geholpen bij het oplossen van veel platformproblemen en blokkades.
- Wijzigingen in discovery-algoritmen: onze discovery-algoritmen evolueren als onderdeel van een continu proces om ons netwerk te optimaliseren. Belangrijke wijzigingen zijn onder meer het delen van discoveryservers over verspreidingskanalen; en het toevoegen van het tijdstip van de dag als dimensie.
- Optimalisaties van verbindingsalgoritmen: onze clients zetten bij het verbinden nu gelijktijdig verbindingen op met meerdere servers tegelijk en behouden de "beste" verbinding. Dit helpt bij loadbalancing en vermindert de wachttijd voor gebruikers, omdat individuele geblokkeerde servers de verbindingssequentie niet vertragen.
- De automatische upgradefunctie van clients is verbeterd door gebruik te maken van incrementele downloads en van out-of-band-downloadsites (geauthenticeerd met digitale handtekeningen). Deze wijzigingen maakten het waarschijnlijker dat een nieuwe client kan worden verspreid in tijden van blokkades.