All Projects → Psiphon-Labs → Psiphon Tunnel Core

Psiphon-Labs / Psiphon Tunnel Core

Licence: gpl-3.0
Psiphon is an Internet censorship circumvention system.

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Psiphon Tunnel Core

SpoofDPI
A simple and fast anti-censorship tool written in Go
Stars: ✭ 170 (-71.28%)
Mutual labels:  censorship-circumvention
ArchLinuxTutorial
✨Arch Linux安装使用教程 每日实时更新! | 包含ArchLinux从安装到日常使用、娱乐、编程、媒体制作的各个方面,让Arch成为你的常用系统吧! | 提供在线网页文档 ✨
Stars: ✭ 513 (-13.34%)
Mutual labels:  censorship-circumvention
Substratumnode
WE ARE THE FOUNDATION OF THE DECENTRALIZED WEB.
Stars: ✭ 359 (-39.36%)
Mutual labels:  censorship-circumvention
gotapdance
Moved to https://github.com/refraction-networking/gotapdance
Stars: ✭ 29 (-95.1%)
Mutual labels:  censorship-circumvention
activist
activist.js is a drop-in library for resilience to network interference
Stars: ✭ 26 (-95.61%)
Mutual labels:  censorship-circumvention
Gfwlist
The one and only one gfwlist here
Stars: ✭ 19,033 (+3115.03%)
Mutual labels:  censorship-circumvention
superhighway84
USENET-inspired, uncensorable, decentralized internet discussion system running on IPFS & OrbitDB
Stars: ✭ 437 (-26.18%)
Mutual labels:  censorship-circumvention
Wireguard Manager
Self-hosted Wireguard Installer / Manager for CentOS, Debian, Ubuntu, Arch, Fedora, Redhat, Raspbian
Stars: ✭ 478 (-19.26%)
Mutual labels:  censorship-circumvention
alice
An hackathon project made for RSF/RWB by AnDaolVras' Devs (Coworking Space in #Brest , Western France)
Stars: ✭ 13 (-97.8%)
Mutual labels:  censorship-circumvention
Torwall
Tallow - Transparent Tor for Windows
Stars: ✭ 346 (-41.55%)
Mutual labels:  censorship-circumvention
lantern-binaries
This are the latest installers for the Lantern censorship circumvention tool
Stars: ✭ 17 (-97.13%)
Mutual labels:  censorship-circumvention
TeleChatRelay
Relay between Telegram and WeChat
Stars: ✭ 17 (-97.13%)
Mutual labels:  censorship-circumvention
Reqrypt
A censorship circumvention tool
Stars: ✭ 337 (-43.07%)
Mutual labels:  censorship-circumvention
bebasdns
Membantumu berselancar dengan aman dan tidak terbatas!.
Stars: ✭ 56 (-90.54%)
Mutual labels:  censorship-circumvention
Bebasid
bebasid dapat membantu membuka halaman situs web yang diblokir oleh pemerintah Indonesia dengan memanfaatkan hosts file.
Stars: ✭ 372 (-37.16%)
Mutual labels:  censorship-circumvention
ShunEncode
🐶巷议,通过简单混淆来规避敏感词程序的审查
Stars: ✭ 14 (-97.64%)
Mutual labels:  censorship-circumvention
Bbs
Forum for discussing Internet censorship circumvention
Stars: ✭ 299 (-49.49%)
Mutual labels:  censorship-circumvention
Awesome Anti Censorship
curated list of open-source anti-censorship tools
Stars: ✭ 521 (-11.99%)
Mutual labels:  censorship-circumvention
Goodbyedpi
GoodbyeDPI—Passive Deep Packet Inspection blocker and Active DPI circumvention utility (for Windows)
Stars: ✭ 4,936 (+733.78%)
Mutual labels:  censorship-circumvention
China Dictatorship
Chinese "Communist" "Dictatorship" "facts". 中国《共产主义》《独裁统治》的《事实》。Home to the mega-FAQ, news compilation, restaurant and music recommendations. 常见问答集,新闻集和饭店和音乐建议。Heil Xi 卐. 习万岁。
Stars: ✭ 337 (-43.07%)
Mutual labels:  censorship-circumvention

Build Status Coverage Status

Psiphon Tunnel Core README

Overview

Psiphon is an Internet censorship circumvention system.

The tunnel core project includes a tunneling client and server, which together implement key aspects of evading blocking and relaying client traffic through Psiphon and beyond censorship.

All Psiphon open source projects, including the complete open source code for Android, iOS, and Windows clients may be found at www.github.com/Psiphon-Inc/psiphon.

For more information about Psiphon Inc., please visit our web site at www.psiphon.ca.

psiphon-tunnel-core
  └── ClientLibrary  General client libraries
  └── ConsoleClient  CLI client program
  └── MobileLibrary  Android/iOS client libraries
  └── Server         Server program
  └── psiphon        Client code package
    └── common\...   Common code packages
    └── server       Server code package

Technical Summary

Psiphon tunnels Internet traffic through a network of proxy servers with the goal of circumventing Internet censorship.

Users run a client program which connects to a proxy server and routes client host Internet traffic through a tunnel established to the proxy. Traffic egresses from the proxy, which is located beyond the entity censoring the user's Internet.

Traffic Routing

Psiphon has multiple routing modes:

  • Port forward mode: the client runs localhost SOCKS and HTTPS proxies and the client host or individual apps are configured to use these local proxies; each connection to a local proxy is related through the tunnel to the server.
  • Packet tunnel mode: the client relays IP packets between a host "tun" device and the server.

Traffic Security

At the core of all tunnels is an SSH connection which protects the confidentiality and integrity of client traffic between the client host and the proxy server. Clients authenticate the SSH server using pre-shared public keys, ensuring clients connect only to authentic Psiphon servers.

Server Entries

Server connection information, including SSH public keys, addresses, and obfuscation parameters are distributed to clients in the form of a list of "server entries". Each server entry fully describes one Psiphon server.

Clients binaries may be built with embedded server lists. Clients may also "discover" new server entries when they successfully connect to a server.

Psiphon also uses out-of-band server list delivery mechanisms, including fetching server lists from drops which are configured in the clients. All out-of-band mechanisms perform additional server list verification using public keys configured in the clients.

All delivery mechanisms use partitioning to prevent trivial enumeration of all server entries.

Some out-of-band server server lists, called "obfuscated server lists", are encrypted and only clients that have been granted sufficient required keys can access the included servers.

Traffic Obfuscation

The core SSH protocol is wrapped in optional obfuscation layers which transform traffic in order to evade blocking of Psiphon servers. Mitigated attacks include endpoint blocking, keyword-based blocking, DPI-based blocking, and more.

Obfuscation techniques include:

  • Making traffic on the wire look fully random.
  • Making traffic on the wire look like popular implementations of popular protocols.
  • Performing traffic shaping to obscure the size and timing properties of encapsulated traffic.
  • Connecting to proxy servers indirectly, via intermediaries.

Circumvention Optimizations

To minimize connection time, Psiphon makes multiple concurrent connection attempts to different servers using different obfuscation techniques. This process generally selects the fastest working obfuscation technique and server. This process is how Psiphon load balances clients across its network of servers without using a centralized load balancing mechanism.

A successful connection may be subject to further quality tests before selection. The Psiphon client remembers which servers and which obfuscation techniques and parameters are successful and prioritizes using the same on subsequent connections.

Psiphon uses a mechanism called "tactics" to remotely deliver targeted, optimized configuration and obfuscation parameters to clients.

Running Psiphon

Get the programs

Official binaries are avaiable at:

For these instructions, use:

Generate configuration data

Run the "generate" mode of psiphond to generate configs, setting the IP address as appropriate; this is the address the client will use to connect to the server.

$ ./psiphond -ipaddress 127.0.0.1 -protocol OSSH:9999 -protocol generate

$ ls
psiphond
psiphond.config
psiphond-osl.config
psiphond-tactics.config
psiphond-traffic-rules.config
server-entry.dat

Create a client config file, copying the contents of server-entry.dat to the TargetServerEntry field.

$ cat server-entry.dat 
3132372e302e302e31202020207b22746167223a22222c2269[...]

$ cat client.config
{
    "LocalHttpProxyPort" : 8080,
    "LocalSocksProxyPort" : 1080,

    "PropagationChannelId" : "24BCA4EE20BEB92C",
    "SponsorId" : "721AE60D76700F5A",

    "TargetServerEntry" : "3132372e302e302e31202020207b22746167223a22222c2269[...]"
}

Run psiphond

$ ./psiphond run
{"localAddress":"127.0.0.1:9999","msg":"listening","tunnelProtocol":"OSSH",[...]}
{"localAddress":"127.0.0.1:9999","msg":"running","tunnelProtocol":"OSSH",[...]}
[...]

Run the console client

$ ./ConsoleClient -config ./client.config
{"data":{"port":1080},"noticeType":"ListeningSocksProxyPort",[...]}
{"data":{"port":8080},"noticeType":"ListeningHttpProxyPort",[...]}
[...]
{"data":{"count":1},"noticeType":"Tunnels",[...]}

Tunnel traffic through Psiphon

Use the local SOCKS proxy (port 1080) or HTTP proxy (port 8080) to tunnel traffic.

Acknowledgements

Psiphon Tunnel Core uses:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].