README
¶
CENO
Censorship, no thank you!
CENO is innovative censorship circumvention technology based on a p2p distributed caching network.
The goal of CENO is to make access to restricted content in areas facing censorship easy and more reliable. CENO exfiltrates document requests out of a censored area using an anonymous transport layer. It then uses networks such as Freenet to store encrypted documents in such a way that they can be easily retrieved securely by individuals in the censored area.
Disclaimer
Please understand that CENO is a work in progress. Its developers at eQualit.ie are working hard to ensure that CENO will be able to provide a secure means of circumventing censorship and maintain the user's security. However, it is very possible that bugs exist that might potentially leak information about users. At present, it will be apparent to your Internet Service Provider that you are using the Freenet anonymization network. Before you use CENO, you are encouraged to think carefully about the risks that you face.
Running CENO
New users are advised to use the CENOBox, an all-in-one bundle that includes a preconfigured version of all the client-side components. You can download the latest release for your operating system from here. We currently distribute CENOBox for Linux and Mac OS X.
CENOBox in Linux and Mac OS X
cd ~
curl -0 -J -L "https://raw.githubusercontent.com/equalitie/ceno/master/ceno-box/installCENO.sh" -o "installCENO.sh"
sh installCENO.sh
CENOBox will open a new Chrome or Firefox window. Remember that you are protected by CENO only when you are using that browser window to visit websites, and only when CENO Router plugin status is active.
Once you have installed CENOBox in your system, you can re-open a protected browser window by navigating to the CENOBox directory and using the CENO.sh script
cd ~/CENOBox
./CENO.sh
CENO will identify your system's language and show you messages in it, given that a translation exists.
In order to explicitly set a language, you can set the CENOLANG environment variable.
For example, if you want to use CENO in French, this is the way to execute the CENO.sh script:
CENOLANG=fr-fr ./CENO.sh
Manually building CENO
What follows are instructions for manually building CENO from source. The first thing you will need to get started with this is the git Version Control System software.
Assuming you are using the command-line git, you can obtain a copy or clone of the CENO source
by running the following command
git clone https://github.com/equalitie/ceno
Building the client-side components
The client-side components include everything a user needs to use CENO to circumvent censorship. The components here provide user interface elements and utilities as well as a disitribution of Freenet that will allow access to securely stored content.
The components include
- Firefox and Chrome browser extensions
- A benign proxy server
- A Freenet plugin
Prerequisites
- Either the Mozilla Firefox or Google Chrome (or Chromium) web browser
- The Google Golang compiler and toolset
- Node.js and NPM (For packaging the Firefox extension)
- Apache Ant (for building the Freenet plugins)
Web Browser
To use CENO as it was intended, you will need to be using either
Golang
First, you must have the most recent version of Google's Golang compiler installed. See the official site for instructions.
You will then have to set environment variables that will specify where Go binaries can
be found and where the Go installation is located. Assuming you installed Go to /usr/local/go,
run
export GOPATH=$HOME/go
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
Node.js and NPM
You can download Node.js and NPM together directly from the official site.
Building the client
If you have already configured the client or would like to stick with the default configuration, you can run the client by executing the following commands into your operating system's terminal program.
# <path-to-ceno> must be replaced with the path to where you cloned CENO
cd <path-to-ceno>/ceno-client/
./build.sh
CENOLANG=<language> ./client
Where language is one of the supported languages (a <language code>.json file in
ceno-client/translations). E.g. en-us or fr-fr.
Packaging the browser extensions
Once packaged, either browser extension can be installed by opening it in its respective browser.
Firefox extension
Mozilla Firefox extensions using the addon SDK as CENO does can be easily built using Mozilla's new jpm tool. You can install it easily with NPM and then package the Firefox extension into an xpi file
npm install -g jpm
cd <path-to-ceno>/ceno-firefox/
jpm xpi
Chrome extension
Complete instructions for all packaging tasks are available in the Chrome developer documentation
The five steps relevant to us are as follows:
- Bring up the Extensions management page by going to this URL:
chrome://extensions - Ensure that the "Developer mode" checkbox in the top right-hand corner is checked.
- Click the
Pack extensionbutton. A dialog appears. - In the
Extension root directoryfield, specify<path-to-ceno>/ceno/ceno-chrome. Ignore the second field. - Click
Package. The packager creates two files: a .crx file, which is the actual extension that can be installed, and a .pem file, which contains the private key.
CENO Freenet plugin
Detailed instructions for building the client can be found here.
Download the following dependencies:
- fred and build it following the official instructions
- freenet-ext or build them from the source code
- JUnit4
Then you can use ant to generate the CENO.jar plugin.
cd ceno-freenet
ant dist
You may have to modify the ceno-freenet/build.xml file in order to match the location
of the dependencies at your local setup.
The distributable jar files are located under ceno-freenet/dist.
Installing the CENO.jar client plugin in your Freenet node requires that you
configure the WebOfTrust and Freemail official plugins. In order to
do that follow the steps in this README.
Building the bridge components
The bridge components are meant to be run on a server for the benefit of users of the CENO network.
The bridge components include
We strongly recommend you carefully read the CENO Bridge Installation Instructions, in order to ensure your own safety and the anonymity of your Bridge's users.
Prerequisites
- Node.js and NPM (For packaging the Firefox extension)
Node.js and NPM
You can download Node.js and NPM together directly from the official site.
Running the bundle server
The bundle server can be run with the following commands
cd <path-to-ceno>/ceno-bridge
npm install
CENOLANG=<language> npm start
where <language> is to be replaced with a language identifier such as en or fr.
CENOBRidge Freenet plugin
CENOBridge plugin is built the same way as the CENO client plugin (instructions here).
CENOBridge plugin can be loaded to your Freenet node like any other plugin, by navigating to your node's plugins page (http://127.0.0.1:8888/plugins) and using its path in the "Add an Unofficial Plugin" subsection. You will have to configure the WebOfTrust and Freemail plugins. In order to do that, follow the instructions here.