… that you can take without being labeled ‘crackpot’.

This aims to document everything I use to maintain a degree of privacy in my digital life, along with a few comments. It is targeted at intermediate Linux users who can get everything setup without any hand holding. I had wanted to write tutorials on what follows, but that would make the post unbearably long. Instead, I shall try to link to pages that are good starting points.

I intend to constantly update this, so it might be a good page to bookmark.

Goals

Achieve as much privacy as possible, without sacrificing(too much) convenience. The threshold varies from person to person. Personally, I’m not going to give up on GMail and do something crazy like run my own private email server, but I do bother encrypting my chats. The balance I have struck may seem excessive to some, and most deficient to others. Use this document as a reference to find your sweet spot.

Understand that privacy / security is not binary. A lot of people who dismiss efforts to make your digital life more private view it that way. The point is not to be completely immune to the NSA, your friendly neighborhood ad company, or whoever else is spying on you. Your CPU has complete control over your PC, and maybe the NSA can factor a certain prime that allows them to decrypt a large portion of encrypted internet traffic. We’re way past the point of being able to completely secure ourselves. The point is to: Make it harder for them to spy on you. Limit the number of entities spying on you at any given point.



Desktop

Operating System

The obvious choice is Linux. Here’s a list of distributions you should try out if you don’t already use it, in decreasing order of n00b friendliness. I personally use Arch Linux.

You could also choose a flavor of BSD, and most of what follows would apply to you.

Firejail

Most applications on your system often have access to your entire file system. That includes ~/.ssh . Let that sink in for a minute. Proprietary code that you run on your system could be uploading your ssh keys, your browser profile, and your unencrypted chat history to who knows where. There is also precedent for the free and open source Firefox being exploited to steal sensitive data.

To mitigate this, I lock applications down with Firejail.

Firejail is a SUID program that reduces the risk of security breaches by restricting the running environment of untrusted applications using Linux namespaces and seccomp-bpf . It allows a process and all its descendants to have their own private view of the globally shared kernel resources, such as the network stack, process table, mount table.

What he said.

Here’s what I’ve got sandboxed on my PC:

Firefox

Dropbox. This doesn’t need to access anything but ~/Dropbox , and ~/.dropbox-dist . There’s some compulsive update behavior, where it repeatedly downloads an update, but is unable to actually update itself in this profile. I haven’t figured out a solution to it yet.

, and . There’s some compulsive update behavior, where it repeatedly downloads an update, but is unable to actually update itself in this profile. I haven’t figured out a solution to it yet. Gajim - my primary XMPP client.

Chromium

SpiderOakONE - a backup program.

qBittorrent

LibreOffice

qBittorrent

Enable Anonymous Mode.

Set a strong password for the Web UI, if enabled.

Firefox

The declining market share of this browser compels me to include a ‘Why Use Firefox’ section before we go any further.

Performance is good enough, on both Deskop & Android. Those of you who were driven into the comforting, yet evil embrace of Google because Firefox felt slow, do give it another try now with Electrolysis enabled. Feels like butter.

Mozilla is slowly replacing the rendering engine with Servo - a lightning fast engine that leverages your GPU for performance.

Because Mozilla is committed to the open web.

Because later, you might not get a choice.

Use the following addons:

Also, follow this excellent guide to tweaking Firefox settings for maximum privacy. I don’t personally have all of this disabled, notably WebGL.

Disable WebRTC by setting media.peerconnection.enabled to false. Don’t do it if you use communication apps that use WebRTC.

File Sharing / Backup

EncFs

EncFs transparently encrypts a folder on your system. You get a folder with encrypted data that you can back up on Dropbox, which you can mount over FUSE and access files as you would normally.

The killer feature you should look at is reverse mounting, ie, EncFs can mount a regular unencrypted directory on your system as an encrypted mount, which you can subsequently backup using your favorite backup program.

Consider using AES-CBC mode, and also obfuscate file names.

Dropbox

I don’t leave it running 24x7, but manually do so when I need to sync something. It’s heavily sandboxed using Firejail .

SpiderOakONE

My one and only gripe with this program is that it isn’t open source, which negates every claim of “zero knowledge” and “privacy” that they’ve made since its conception. Fortunately, the three directories that I do need constantly backed up in the cloud are actually EncFs mounts. I’ve got a cron job to run SpiderOakONE --batchmode every three hours.

file.io

file.io deletes your file after it is downloaded once, eliminating the possibility that you’ll leave something lying around on a remote server. I’ve got a small shell script that uploads to file.io which I use all the time. Consider encrypting manually with openssl before you upload here.

Also Check Out

RClone. This is good for two things: Keeping a directory in sync with cloud services that do not have FOSS clients, such as Dropbox. Encrypting that sync.

Borg Backup - deduplicating backup that also supports encryption.

Syncthing - Decentralized, P2P, completely encrypted, and open source. Best alternative to Dropbox, provided you can talk your friends into installing it.

My list of ephemeral file sharing sites.

Android

Here’s the thing about Android - if you really care about privacy, don’t run it. It’s probably logging everything from your keystrokes to contacts. If you aren’t that hardcore, then there are steps you can take to limit the amount of data Google gets.

IM

Most of my conversation happens with a tiny group(< 5) of friends. I’ve therefore moved them to public XMPP servers, and we now use open source clients with end to end encryption to chat. Outside this group, I use whatever the other person is using. I might do a future post detailing my setup.

Clients

Gajim on the desktop.

Conversations on the phone.

Encryption

I use the OMEMO protocol, that supports group chats, file transfers, and offline messaging. If you’re still on OTR, you need to upgrade.

Here’s the Gajim OMEMO Plugin.

Conversations supports it out of the box.

I’ve heard the Swift XMPP Client plans on supporting it in the near future.

This may be your best bet if you want OMEMO on iOS.

Other Apps

If you can’t coax your friends to run XMPP, try getting them on one of the following apps.

Signal

Threema

Wire

Tox - a decentralized secure messenger, and arguably better from a privacy standpoint than the aforementioned apps. Not as straightforward to use for non-tech people, though. (via u/otakugrey)

Email

I’m dependent on GMail’s web UI + keyboard shortcuts too much to move away from it. Maybe someday.

Miscellaneous

Use DuckDuckGo as your search engine. You need to be more specific with your searches, but it’s worth it. Their bang syntax will save you a lot of time.

Consider enabling Do Not Track. As a few people have rightly pointed out, DNT is next to useless - very few websites respect it. Nevertheless, doesn’t hurt to turn it on.

Use OpenNIC DNS servers instead of Google DNS.

Purchase WHOIS protection for your domain names(thanks rowty1).

Use KeePass for password management.

Contributing

Since this outlines my personal privacy setup, I won’t be accepting any direct modifications. If, however, I end up using something you suggest, I’ll be sure to put it in here. I’ll give credit where credit is due, of course.

Hit up @prajjwalsin on Twitter for any feedback.