New keys for old locks

For a number of reasons, none of them particularly dramatic or interesting, I have recently set up a new OpenPGP key, and I’ll be transitioning away from my old one, which I used to ‘sign’ this blog post (along with the new one. Some people reading this will have no idea what I’m on about. Others will, and yet wonder why I’m bothering with this at all. This post is mostly aimed at the latter group. If you want to know more about key-based, end-to-end encrypted communications, check out any number of explainers online. There’s literally no reason to write another one of these.

Tl;dr: Just get the new PGP key

For some, generating a new pgp key and all the mundane tasks around that and verifying it and disseminating it to contacts is a bit like re-arranging the deck chairs on the Titanic. Premature death notices of PGP are only surpassed by the ones about email. The use cases for both are shrinking, but the use cases still exist, non the less, so I persist. 

A lot of people are giving up on PGP for good reason. It’s cumbersome, accident prone, rife with compatibility issues, lacks forward security, and most people don’t do it right. BUT if you want to send a securely private email, or simply create any private string of text for someone and make sure only they’re going to be able to open it regardless of where you put it, then PGP is still the thing. If you want to quickly secure files that you can then store absolutely anywhere without worrying about people getting into the content, then PGP is still the thing. If you need to encrypt things offline, and distrust online services for something, PGP is the thing.

I prefer to use encrypted apps like Signal, Wire, Matrix or Briar for quick text exchanges and ongoing collaboration. They’re easier, have better design and user experience and a lot of them have emojis, now. A number of them include other features or nice byproduct positives. Wire allows you to be pseudonymous or at least not tie your account to your mobile number. Briar re-enforces good verifcation process through its user experience in a friendly way. Matrix focuses on a decentralised structure, meaning you can use it on all sorts devices and clients. Signal features strong encryption and a number of useful features like vanishing messages. But none of these are very good for long-form prose, handling files of any medium to large size, or coping with multiple encrypted file exchanges.

I still love PGP encryption though, and the main reason is the process. I like that it’s manual, visible, and focused on deliberate decisions. I also like that I can encrypt a thing and put it anywhere and not have to trust those storage places. With most apps, you’re locked into what they can and can’t do: This file size is too big, that text is too long, this person’s mobile isn’t compatible, you need to give someone your mobile number for it to work.

Apps are sort of like ready-made meals you can pop in the microwave. Which is fine, and useful: Do the thing and be done with the thing. PGP, in contrast, is an ingredient that can be mixed in with any number of recipes…

I can use my encryption key to secure a document that only your encryption key can open and fling it to you via OnionShare and there will be no real chance of it being intercepted, opened by others, or that there will be any history on the internet that it happened.

I can use my key to encrypt a trove of files I want to offload from my computer while I cross a border, throw them on nearly any cloud (though one with 2-factor authentication is preferred) and retrieve them on the other side without worrying about whether anyone could see what’s inside.

I can send an employer, an editor or a colleague sensitive or highly classified content via Google Drive, OneDrive, some AWS server, or to any email address that will be verifiably from me, and protected in such a way, that no one will have altered it in transit.

PGP doesn’t hide meta data, but I can change that information manually to not reveal what’s in the file and sort that out. I can then send you the link in some disposable Signal message.

I like that there’s a fingerprint that calls out for a manual, in-person (or at least a video call) process to verify someone’s identity. PGP doesn’t care that you somehow ended up with someone’s mobile number in your contacts. PGP also won’t stop you from encrypting to absolute strangers without having any idea of who they are at all, but you’ve got to manually note that you know them or not. You’re aware of a lot more. Like shifting in a car, you know what gear you’re in.

And yet I still prefer driving automatic transmission. Weird.

So, there’s no particular reason I’m migrating to a new key except that you should do it every once in a while. the retiring keys have seen three computers, untold numbers of trip-specific Chromebooks and a few USBs, and powerwashed or wiped as those devices may have been, there comes a time for a PGP key to be cycled out of duty.

The old key was generate on 7th of August, 2015, and will continue to be valid until the 1st of November, 2018, but if you send me encrypted emails, I’d prefer all the future correspondence to come to the new key, which I created on the 7th of August 2018 (yesterday) and currently have the expiration date set to the 31st of October, 2019. I chose Halloween for a bit of whimsy, but I’ll probably kick the expiration date further down the road as that one gets closer.

I would also like this new key to be re-integrated into the web of trust, but really, key signing has fallen by the wayside. If we meet and we both have out pgp keys, we can authenticate them and sign them. But the world is moving away from that model, which is what makes some encrypted apps more risky, in my mind.

WhatsApp promises instantaneous encryption with everyone who manages to get your mobile number, and vice versa. You don’t have to have ever met them or know if they’re really who they say they are, and suddenly from a very narrow perspective, you’re in a fairly secure communication channel with them.

With all this heavy lifting being done by the Apps for people, it’s no wonder they may forget to check things. After all, there’s an avatar, a mobile number, and all the trappings of authenticity designed very nicely.  This is what makes apps like WhatsApp an ideal attack method to send malware to a targets mobile phone, which is what happened when the Israel-based NSO’s Pagasus spyware was shipped to Saudi Arabian human rights activists. Yes, this can happen in PGP land as well. But when you’re looking at plain text and email addresses without all the personalised accoutrement that social apps flog, the warning signs can stand out a little more. I think this is why I’m a fan of Briar, even though I don’t know too many people using it. You can only add contacts in person, authenticating one another through QR codes on your mobiles. This will limit it’s up-take, but it enforces a legitimate authentication regime.

But, key migration is a real hassle. You want some time of overlap when your retiring key is still active and your new key is also up and running to give people time to migrate over. Unless you’re old key’s been compromised and needs to be switched off ASAP, I say give a couple of months of overlap. You need to update every page on the internet where you’ve posted it: websites, key servers, social networks you might have flogged it on, and just updating your other contacts who use your old key takes time. There’s no central, nice change of address postal service out there for PGP key migration, and key servers are a mess.

As of this writing, I presently don’t have a account. I may set one up again, and think it’s an interesting concept with some neat features. It allows you to authenticate your identity on various platforms with your pgp key, which then makes it easier for people to encrypt messages to you from anywhere without needing to configure email clients. They can literally pgp message you from Twitter or Facebook or from the Keybase App. It also helps verify that things like your Github page or Twitter account are really yours. But is has no reasonable key migration process baked in, and you literally blow everything up to start over with a new key. I’m not a real Keybase power user, so this was more trouble than it was worth for me, but who knows, I may return to that one. I’m still creeped out by their (optional) private key handling. I never used it, but It always bugged me that it was there, and still seems like bad form to even ask people to surface private keys like that.

One neat project for teams using PGP internally is GPG Sync, which turns the encryption key obsessive in your workplace  into a sort of internal key server for everyone involved, and automates the Circle of Trust stuff, though they do become the single point failure if their system gets hacked by someone with intentions of making rogue pgp keys. 

The old key was: 84C17726 
DD4C 8294 923F 4FDB 64E1 E69B FF45 A527 84C1 7726

And the new key is: 7DD135D2
76E2 C6E4 412A 3518 C744 286C A316 82EF 7DD1 35D2

The retiring key will expire on 1 November, 2018. The new one is presently set for 31, October, 2019.

If you’re interested in creating or messing about with PGP (or GPG, because that makes it more confusing) encryption, then check these out:

But this post isn’t really a how-to guide, or even meant to be that helpful from a technical standpoint. For Mac, I suggest GPGtools which is really well designed. On Windows, GPG4Win is a great way to get in. If you want a visual manager in Linux, then Enigmail is good (though it also works on those  other systems, as well) and if you’re on a Chromebook, then there’s the somewhat limited but pretty user friendly Mailvelope. I try out a lot of different methods, but before you ask, “what about…” note that I didn’t mention them already.

If you’ve already got this all set up, to fetch my full key from a public key server, you can simply run the following command in your terminal:

gpg --keyserver --recv-keys A31682EF7DD135D2

If you already know my old key, you can now verify that the new key is signed by the old one:

gpg --check-sigs '76E2 C6E4 412A 3518 C744  286C A316 82EF 7DD1 35D2'

If you don’t already know my old key, or you just want to be double extra paranoid, you can check the fingerprint against the one above:

gpg --fingerprint '76E2 C6E4 412A 3518 C744  286C A316 82EF 7DD1 35D2'

If you are satisfied that you’ve got the right key, and the UIDs match what you expect, I’d appreciate it if you would sign my key. You can do that by issuing the following command:

 gpg --sign-key '<your fingerprint>'

NOTE: if you have previously signed my key but did a local-only signature (lsign), you will not want to issue the following, instead you will want to use –lsign-key, and not send the signatures to the keyserver

Only sign my key if you’ve checked that you’ve trusted the old key I’ve used to sign the new one, or if we’re together in person. Otherwise, you may be signing something you’ll wish you hadn’t. All of this is horribly long, and tedious. And yet I still enjoy it. It’s a weird, trainspotting tendency, maybe. But when you encrypt things manually, you choose. I like that.

The above post was loosely based on this template.

Retiring key’s signature (84C17726)



New key’s signature (7DD135D2)