Lewati ke isi

A censorship circumvention tool to evade detection by authoritarian state adversaries

Cloak adalah transportasi pluggable yang meningkatkan alat proxy tradisional seperti OpenVPN untuk menghindari sensor canggih dan diskriminasi data.

Cloak bukanlah program proxy yang berdiri sendiri. Sebaliknya, ini bekerja dengan menyamarkan lalu lintas yang diproksikan sebagai aktivitas penjelajahan web biasa. Berbeda dengan alat tradisional yang memiliki sidik jari lalu lintas yang sangat menonjol dan dapat diblokir dengan aturan pemfilteran sederhana, sangat sulit untuk menargetkan Cloak secara tepat dengan sedikit positif palsu. Hal ini meningkatkan kerusakan tambahan pada tindakan penyensoran karena upaya untuk memblokir Cloak juga dapat merusak layanan yang diandalkan oleh negara sensor.

Bagi pengamat pihak ketiga mana pun, host yang menjalankan server Cloak tidak dapat dibedakan dari server web yang tidak bersalah. Baik saat secara pasif mengamati arus lalu lintas ke dan dari server, serta secara aktif menyelidiki perilaku server Cloak. Ini dicapai melalui penggunaan serangkaian teknik steganografi kriptografi.

Cloak dapat digunakan bersamaan dengan program proxy apa pun yang mengarahkan lalu lintas melalui TCP atau UDP, seperti Shadowsocks, OpenVPN, dan Tor. Beberapa server proxy dapat dijalankan pada host server yang sama dan server Cloak akan bertindak sebagai proxy terbalik, menjembatani klien dengan ujung proxy yang diinginkan.

Menyelimuti lalu lintas multipleks melalui beberapa koneksi TCP yang mendasarinya yang mengurangi pemblokiran head-of-line dan menghilangkan overhead jabat tangan TCP. Ini juga membuat pola lalu lintas lebih mirip dengan situs web sebenarnya.

Cloak menyediakan dukungan multi-pengguna, memungkinkan banyak klien untuk terhubung ke server proxy pada port yang sama (443 secara default). Ini juga menyediakan fitur manajemen lalu lintas seperti kredit penggunaan dan kontrol bandwidth. Ini memungkinkan server proxy untuk melayani banyak pengguna bahkan jika perangkat lunak proxy yang mendasarinya tidak dirancang untuk banyak pengguna

Cloak juga mendukung tunneling melalui server perantara CDN seperti Amazon Cloudfront. Layanan semacam itu digunakan secara luas, upaya untuk mengganggu lalu lintas ke layanan tersebut dapat menyebabkan kerusakan jaminan yang sangat tinggi untuk sensor.

Setup

Server

Instal setidaknya satu server proxy yang mendasarinya (mis. OpenVPN, Shadowsocks). Unduh rilis terbaru dan bangun repo ini.

wget https://github.com/cbeuw/Cloak/releases/download/v2.7.0/ck-server-linux-arm64-v2.7.0 mv ck-server-linux-arm64-v2.7.0 ck-server chmod +x ck-server

Run ck-server -key. The public should be given to users, the private key should be kept secret.

ck-server -key

output

pub priv

(Skip if you only want to add unrestricted users) Run ck-server -uid. The new UID will be used as AdminUID.

ck-server -uid

output

Copy example_config/ckserver.json into a desired location. Change PrivateKey to the private key you just obtained; change AdminUID to the UID you just obtained.

example ckserver.json

{ "ProxyBook": { "shadowsocks": [ "tcp", "127.0.0.1:8388" ], "openvpn": [ "udp", "127.0.0.1:8389" ], "tor": [ "tcp", "127.0.0.1:9001" ] }, "BindAddr": [ ":443", ":80" ], "BypassUID": [ "exampleuid==" ], "RedirAddr": "cloudflare.com", "PrivateKey": "uIxwZTQR/0Ed2zsPaHaDcfur0DkWV2SIN/D+7Pn0W3Y=", "AdminUID": "exampleuid==", "DatabasePath": "userinfo.db" }

Configure your underlying proxy server so that they all listen on localhost. Edit ProxyBook in the configuration file accordingly

sudo su

Configure the proxy program. Run sudo ck-server -c <path to ckserver.json>. ck-server needs root privilege because it binds to a low numbered port (443). Alternatively you can follow https://superuser.com/a/892391 to avoid granting ck-server root privilege unnecessarily

client download

Android client is available here: https://github.com/cbeuw/Cloak-android

Install the underlying proxy client corresponding to what the server has. Download the latest release or clone and build this repo.

windows

https://github.com/cbeuw/Cloak/releases/download/v2.7.0/ck-client-windows-amd64-v2.7.0.exe

Obtain the public key and your UID from the administrator of your server

Copy example_config/ckclient.json into a location of your choice. Enter the UID and PublicKey you have obtained.

example clientconfig

{ "Transport": "direct", "ProxyMethod": "shadowsocks", "EncryptionMethod": "aes-256-gcm", "UID": "exampleuid==", "PublicKey": "exampepublikkey=", "ServerName": "www.bing.com", "NumConn": 4, "BrowserSig": "chrome", "StreamTimeout": 300 }

Set ProxyMethod to match exactly the corresponding entry in ProxyBook on the server end Configure the proxy program. Run ck-client -c <path to ckclient.json> -s <ip of your server>

.\ck-client-windows-amd64-v2.7.0.exe -c ckclient.json -s 103.76.129.90

example custom port not 90/443

.\ck-client-windows-amd64-v2.7.0.exe -c ckclient.json -p 33433 -s 103.76.129.90

configure shadowshock as below

example plain shadowshock tcp anywhere easy detected

example shadowshock + cloak tcp/tls obfs looks like https connection

example img direct access to ip