It’s now common knowledge that we’re being watched online, by a thick mix of nation-states, private companies, and criminals. They sometimes do worse than watch. What do we do? Should we care?

It’s not clear what the probability of having your password leaked in a breach / having your email read / having your laptop being remotely wiped (unless you pay the creator Bitcoin) is. But something like this will probably happen to you in your lifetime, so I would take 10 mins to mitigate them now.

There is no absolute security; it’s always partial and relative to a goal. This guide is aimed at “not losing control of your accounts, not being surveilled by companies or criminals, not having your online banking subverted, not getting infected by ransomware or whatever”. It’s strictly for people with average risks: not that much money, not much tech cred, not much sensitive information to protect.

"Wait, isn't that your own computer -"


On a lighter note, security is an amazing way to learn about how the internet actually works. It’s a lot easier to remember the dozens of abstract systems involved when you can think, smugly, “And I’ve plugged that gap with this mitigation, and that one, and that one…

Most of this article assumes you’re using Firefox, because Chrome is itself an attack. That is, it protects you very well against everyone except Google. 2 It’s not a big deal compared to the other parts of this list, you’ll just need to find alternatives to the add-ons I recommend.




First: password hygiene

Attack: password cracking

If people hack a website you’re registered on, they could easily get the encrypted ‘hash’ of your password even if the site owners do everything right. These can eventually be brute-force decoded, and then they have your password. To prevent this common occurrence, we need our passwords to be very long (16 characters +) and have no English words. You also want a different password for each site, so that one brute-force doesn’t open up all of your accounts at once. So, easy!: We want passwords that are too hard to remember, and we need to never reuse any of them.

Mitigation: A ‘password manager’, for instance the free, open-source, cross-platform KeePassX. Keep the database file on several devices, and on a thumb drive, and an offsite. Can put it in the cloud if you think you’re likely to lose those. LastPass and 1Password seem fine, maybe a bit slicker and more friendly, but they cost.

You can also sign up to the security researcher Troy Hunt’s notification tool: whenever a big leak becomes publicly known, he’ll scan it for you and email you if you’re in it.


Attack: password phishing

People can create convincing clones of websites just so you give them your password freely. (This isn’t just about human inattention: attackers can register urls which look exactly like the real one).

Mitigation: Password manager / no password reuse.

Real mitigation: Two-factor authentication (2FA) everywhere you can, e.g. via a Universal device like Yubikey. If the site doesn’t ask you for the access code from your phone when you sign in, you immediately change your password (from the top search result for that site).

(Sadly, SMS confirmation is relatively easy to subvert, so you should use a smartphone. An open-source 2FA app, Authenticator, is coming along though.)

Cognitive burden: once you have the Master passphrase memorised (not hard, give it a couple days): much less than remembering 40 different passwords.


In early 2019, there was splashy media coverage of a vulnerability in all the big password managers. It’s true that decoded passwords you’ve used during a session can persist in your RAM; however, it’s of little importance, since if an attacker is in a position to read arbitrary things off your RAM, you are already as screwed as you can be. (KeePass was the least vulnerable manager, incidentally.)




Then: Browser

Attacks: IP tracking, unencrypted traffic, ISP logs, public wifi spoofing, geo-locking, national bans

In many jurisdictions (e.g. UK) your internet provider is legally required to record some info about your browsing. In others (US) they do it apparently for kicks. They also implement court orders banning particular sites. Some content is only licenced for computers in particular locations. And using public wi-fi (airports, coffee shops) is also extremely insecure without extra encryption.

Partial mitigation for all these: a VPN. This is highly imperfect but not as useless as this guy thinks. They at least have some incentive not to log you: no one will use a VPN which is known to log. I use PrivateInternetAccess; you can check the technical and legal specs of dozens of VPNs here. $30 a year. Do not use free ones.

The other problem a VPN solves, and solves optimally, is internet requests sent by non-browser apps on your machine. If you use e.g. Linux’s built-in VPN client, everything goes through it.

You should not consider this strong privacy, cover for anything illegal. It’s just the minimum required to do it in the first place nowadays.

(NB: Modern browsers have a useful thing called WebRTC. It leaks your IP though, so if you really want to hide that you’ll need to go into about:config and set media.peerconnection.enabled to false. uBlock seems to fix this too.)


Attack: Man-in-the-Middle

Even when the URL is real, vulnerabilities in the original internet protocol mean people can sometimes insert themselves inbetween your data and the receiving site. This is lethal (think online shopping, online banking). This add-on prevents this where it can.

(Previously I recommended HTTPS Everywhere, but that depends on a big central database and sends all your requests there, which - though they’re lovely people doing this for excellent reasons - is somewhat counter to the spirit of the thing.)


Attack: Tracking and fingerprinting

There are many, many ways to identify someone on the internet, from obvious ones like IP to desperately cunning ones like making your graphics card identify itself or spotting you based on the way you type. Here are some reputable add-ons for Firefox that kill most of this:

  • NoScript. Disables all Javascript by default; this stops 90% of attacks and trackers. It is the most important, but also the most costly in time by far. It remembers which sites you let through though, so after about two weeks this burden becomes negligible. NoScript has a bunch of other cool protections too, vs XSS, clickjacking…
  • Privacy Badger. Watches for processes sending information about you. Trying to fix sites’ incentives by not blocking sites whose content actually obeys your Do No Track settings. Seems to cover the use case for both Disconnect and Ghostery.
  • DuckDuckGo. The zero-tracking search engine. Not as good as Google, but it includes a built-in “use Google safely” command.
  • Cookie Autodelete. Deletes cookies (files placed on your computer to identify you) when the tab is closed. Good compromise. 3
  • Facebook Container. Facebook follows you around the internet to a surprising degree - e.g. any time you see a “Login via Facebook” button or a social-media bar with Share buttons, FB polls its cookies to tie you to that site. They sell this to advertisers, which explains the eerie echo effect of your searches. This official Mozilla extension puts the FB cookies in a “container”, an impenetrable box, stopping the passive tracking (they’ll still get you if you click the buttons).

I imagine everyone who will already has, but: consider quitting Facebook or neutering it. You can download all your data from them here, with like a week of waiting.


Attack: Ads

This one is arguable: the current web economy couldn’t exist without ads. My response is to precommit to using any micropayment solution that people can get to work. Also to actually buy things from creators I like. In the meantime no-one gets to spam me with gigabytes of ugly unwanted content and follow me around.

But besides being ugly, besides following you without your consent, they take your time. Two-thirds of all script execution time is due to third-party scripts, mostly ads and trackers. My own network analytics say that 15% of all my requests are to ad servers. This is hours of your life per year. 1

Everyone knows this solution, but a better solution takes a bit of work:

The best thing to do against ads, at present, is a Pi-hole, a tiny DNS server in your house. This stops ads at the source, for every device in your house at once. You can get a Raspberry Pi for $30, and it takes about 30 mins to set up as a Pi-hole.

Another benefit of doing this at the router level is that it gives you a nice (rudimentary) network dashboard:


Because the internet is a Red Queen hellscape, we should expect this to gradually stop working over the next few years. Ads can avoid a DNS block in a variety of ways, up to and including them implementing their own custom domain-over-HTTPS protocol. La lotta continua.


Attack: email surveillance

Not a lot you can do, short of undertaking the 100-hour hell of runnning your own mail server. Try a Swiss company, e.g. Protonmail (they have no public data-sharing agreement with the Five Eyes and constitutional protections for foreigners).

Important caveat: you really need to backup your Protonmail password well: If you lose it and reset, you lose your email history. This is the harsh nature of strong security.

Because of the encryption we use to protect your data, resetting your Login password in ProtonMail is different from other, less secure email services. Your password is used to decrypt your emails, and we do not have access to it. Therefore, if you forget your password, you will lose the ability to read your existing emails.

PS: Hotmail and Outlook have been a dumpster fire for many years.


Attack: deanonymisation

No whois entry on your sites. People will try and charge you $10 for this but it is mandated by GDPR so shop around.


Attack: tracking over CDNs

A new clever attack: identifying you by your repeat requests to a public Content Delivery Network. This add-on DecentralEyes foils this by keeping a copy of commonly-used files in your cache.




Total annual cost: $45
($40 VPN, $2 usb drive for your password DB + maybe $4 electricity for the Pi-hole.)


Daily time cost: Net time saving?
You’ll take a minute a day adding new sites to your NoScript list. And Captchas pop up more often without cookies. But the Pi-hole speeds up your internet by ~10% by not loading ads. And once you get the KeePass keyboard shortcuts in your muscle memory it is faster than typing. So net gain.



Add-on risk

Whenever you install a browser add-on, you’re allowing unknown code to execute on your machine, behind NoScript. Processes are “sandboxed” in modern browsers - that is, browser malware is unlikely to break into your main OS account - but this is still a risk.

Worst is when someone replaces an honest add-on with a malwared version. This is not hypothetical: for example, part of the Python central package repository was subverted in 2017. And it can take months for someone to notice this.

However, you can be very confident in EFF and Mozilla products - HTTPS Everywhere, Privacy Badger, Containers - and relatively confident in popular open-source add-ons like NoScript, Cookie-Autodelete, uBlock, especially if you built from source.

Still, lean toward avoiding others.




More things you could do:

  • Get Linux (99%+ of malware doesn’t work on it, and there’s strong prevention of state backdoors and ‘security through obscurity’ zero-days).
  • Turn off these Firefox configs.
  • “Hacker tape” (putting a removable cover over your webcam) is a successful meme. Good for it! But an even more significant risk is the built-in mic: your unguarded speech is a much more high-res thing to use against you. (Imagine your employer hearing you complain about them to your partner.) One solution is leaving a 3.5mm jack plugged-in, with the wire trimmed off (and the wires taped-up separately to prevent a short circuit!) - but this is still software-mediated rather than hardware, and so could conceivably be bypassed.
  • Add an additional keyfile for Keepass, on a USB. This is too far for me. You’d want it attached to your body.
  • Tor. Slow!
  • CanvasBlocker: people can get a wee bit of identifying info from spying on your GPU and screen specs.
  • Airgapping one of your computers.
  • ClearURLs (truncate the identifying info from the end of your links).
  • CSS Exfil Protection (yet another graphical fingerprinting technique).
  • Consider not using Chinese hardware.
  • Consider not using American hardware.
  • Consider not using Kaspersky (sad - seems to have been involuntary aid to Putin’s people).
  • Two-factor authenticated bank.
  • RandomUserAgent: changes the device and browser you’re reporting, at random. Sometimes breaks things.
  • Store a PGP key somewhere public (e.g. Keybase): makes it possible to authenticate yourself without identifying documents. (Softening the blow of identity theft, preventing chronic lulz).
  • Faraday wallet for phone and contactless card. Obviously this prevents all incoming calls too.
  • Life / work separation. Never shop at work, never work on your home computers. This makes two of you, with two different attacks (and sets of attacks) needed.
  • Phone: The iPhone’s encryption has been defended in court against heavy pressure, but also subverted by commercial tools. The Librem 5 will be better on many axes - hardware control, OS security, supply chain ethics - but is unlikely to do better in crypto.
  • Against reward hacking (that is, being distracted with push notifications and infinite feeds): Just don’t have a smartphone, or keep it in your bag and use a dumbphone for interpersonal alerts. Also ImpulseBlocker.




Here’s a good tool for seeing if this does the trick.

Note that you’re not going to stop any nation-states except via perfect paranoia, the kind which makes the above look sloppy and carefree. Luckily, that effort is not worthwhile for almost anyone.



  1. Fermi estimate: 10,000 requests per person per day (like 300 actual page visits).

    say 0.1 sec delay from ad loading and tracker execution, per request

    ~= 1000 secs ~= 17 mins per day.

    15% blocked by the normal Pihole blacklist. Rest blocked by NoScript.

  2. Supposedly Firefox is also significantly faster than Chrome in Private mode, but given the disparity in the two teams' funding I doubt this kind of advantage will last.
  3. Using a VPN and blocking cookies entirely makes Captchas unbearable - think 10 rounds of extremely-slowly-loading grids, blocked audio renditions, etc. I have a separate browser with cookies enabled which I only use to solve Captchas. Sad!

Comments

Post a comment (with Markdown):





Enable submit button