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