/ chat

How to run your own private chat system

Listening to the amazingly ignorant comments of Amber Rudd convinced me that it's about time I wrote a blog post about running your own chat system.

Tapping phones and steaming open letters. The Gestapo and Stasi did all of that "legally", and a lot of people went to an early grave as a consequence of government thinking it knew what was best. Do we really have to learn that lesson the hard way again in this century? Is she endorsing such things on the off-chance of finding people she doesn't like? It certainly appears so.

WhatsApp has its own security problems which I've already covered in a previous post. The long and short of it is that WhatsApp can't be trusted either, since it enables silent encryption key changes by default and being closed source its security properties are unknown or unverifiable.

Suppose you want to chat with family and friends without the government always tapping your conversations. There should always be speakeasies or in more modern terminology "safe spaces" in which you can exchange opinions without fear of government retribution or of losing your job. Here's how to do that on a Beaglebone Black. You can also use a range of other hardware if you prefer.

To do this you'll need a Beaglebone Black (ordinary version, not the wireless one), an ethernet cable, a microSD card and preferably a 5V power supply for the Beaglebone

On a Debian based system first set up the image builder for Freedombone.

sudo su
apt-get update
apt-get install git
git clone https://github.com/bashrc/freedombone
cd freedombone
make install
freedombone-image --setup debian

Now you can build a disk image:

freedombone-image -t beaglebone --onion yes

That will take a while to build and eventually it will generate an img file. Plug in the microSD card (you may need an adaptor to do that with a laptop or desktop machine) and then dd the image to it:

sudo dd if=[img] of=/dev/sdX

Where sdX is the path for the microSD drive. When that's done remove the microSD card and insert it into the Beaglebone. Connect the Beaglebone to your internet router with the ethernet cable and connect the power.

Now back on your laptop search for the Beaglebone on your local network. It should appear after running the command:

avahi-browse -at

Then you can log in:

ssh fbone@freedombone.local -p 2222

And use the default password 'freedombone'. A new random password will then be assigned. Make sure to write this down somewhere. After that the installation will complete by calculating encryption keys, which takes about half an hour. You can then log back in again with:

ssh yourusername@freedombone.local -p 2222

Using the username you set during the install. Using cursor keys, space bar to select and Enter to confirm go to Administrator controls then Add/Remove Apps. You may need to enter the password which you earlier wrote down.

Using cursor keys go down to the bottom of the list and with space bar select xmpp then press Enter. The XMPP server will then install. It may take a while.

When that's done select About this system and take a note of the onion address for the xmpp domain.

Select Manage users and add as many users as you might need. Since XMPP is a federated system other users don't necessarily need to be registered on your Beaglebone. They only need to ensure that they have mod_onions enabled on their XMPP server or have followed the same procedure as described above.

Now on an Android phone install F-droid, Orbot and the Conversations app. In the app on the menu select Settings then Expert Settings then Connect via Tor.

When setting up the account use yourusername@youraddress.onion and set the server address to the onion address for the xmpp domain.

And now you can chat with others, maybe in a family group, without the modern equivalent of the Gestapo constantly eavesdropping. For additional end-to-end security make sure you press the lock icon and select OMEMO as the encryption protocol. Amber Rudd will not be at all pleased, but if you're in the same universe as I am then that's a win.

Happy chatting!