What keybase is and is NOT and why I’m interested in it

By Greg Turnquist

Greg L. Turnquist worked on the Spring team for over thirteen years and is a senior staff technical content engineer at Cockroach Labs. He was the lead for Spring Data JPA and Spring Web Services. He wrote Packt's best-selling title, Learning Spring Boot 2.0 2nd Edition, and its 3rd Edition follow-up along many others.

October 10, 2014

keybase_mariaI recently got my mitts on a kaybase invitation and signed up. I took the time to review what keybase did and did NOT do. In the end, I found it quite intriguing!

What is keybase?

Keybase is run by a couple of guys that apparently got going perhaps six months ago (maybe longer). With the site, you can register multiple pieces of information, one of them being a GPG public key. But it doesn’t start there. After all, there are already dozens of key servers around the world. Instead, what keybase does is provide some convenient tools to use your local GPG keychain and create some other documents that can all be linked via your keybase profile.

Have a twitter account? You can write a digitally signed tweet and link to that tweet to your keybase profile.

Have github? create a gist containing some digitally signed information and details and then link that gist to your keybase profile.

Have a website? Perhaps three? Create a digitally signed page and stage it on the website’s server. No server access? Create a DNS TXT entry with the same effect.

This lets you link various social identities that you own (and that other people you know believe to be you) into a single profile under keybase. Then, someone, at any time, can “verify” your keybase identity. At that point, keybase will fetch all these documents that YOU created, that YOU signed, and that are staged on YOUR social media locations. It will check the signatures against YOUR key, and verify they are all intact. If so, the person doing the lookup can decide if they really trust it’s YOU.

What keybase is NOT

I’ve seen critical articles that heavily emphasize the advice about “never invent cryptopgraphy on your own”. Guess what, neither is keybase. To use keybase, you need to have gpg on your system. Keybase just provides a convenient way to look up a new type of “directory”. The ironic thing is, you aren’t signing all these different proofs of your identify on keybase’s servers. You are instead signing them on spaces that YOU own.

The question also comes up, “how can you build a secure system off stuff that is hackable?” The fundamental concept is that you are building a profile across MANY systems. If this was only using twitter to carry the proof, then that would be weak. But to crack my keybase profile, someone has to hack my twitter account, my github account, and all of my websites while ALSO staging a new public key in order to sign new versions of these proofs. The more nodes you can distribute to, the better you can plant your flag of identity.

Keybase also doesn’t replace the value of putting your public key on standard key servers. I already had a public key. Keybase made it easy to re-use it and not roll another one just for them.

Keybase vs. face-to-face key signing parties

Ever done a key signing party? It’s where you meet someone face-to-face, and then do something like show each other your driver licenses. Everyone brings a copy of digital fingerprints of their public key, and upon confirming everyone has the fingerprint for YOUR public key, you then go home and sign their public key.

This is the cornerstone of the web of trust, and it has major issues. The reach enough people to make this practical is a logistical nightmare. I have only attended two key signing parties EVER. And that was years ago. In fact, due to the somewhat recent Heartbleed leak, I threw out those keys and generated a new set. I tried to find a couple of the people I knew from back then, but failed at that.

If you work for a company that uses GPG for all mail traffic (which I’ve interacted with before), you suddenly hit a taxing burden of meeting everyone face-to-face. So they create trustees that sign keys. Essentially, you meet this person face-to-face and you sign keys. Then you TRUST THEM such that anything they sign you trust as well. So in exchange for convenience, you have to elevate some people to higher level of trust. Does this sound risky in the world of paranoia? Ten years ago, no. In light of Snowden and the NSA? Perhaps.

When I met several people for a key signing party, it was the first time. I didn’t KNOW these people. I was trusting a driver’s license for which I had no ability to validate. And yet. critics of Keybase tell me this is the proper way to go.

Contrast that with people I have watched commit code to github for four years. I have chatted with them through various online channels and seen them talk about their commits in blog entries, tweets, HipChat discussions, and emails. I have also watched certain people tweet for several years. All of this chatter weaves together a narrative for people I have seen face-to-face once, or perhaps twice EVER. When one of those people publishes a tweet and a github gist that is cryptographically signed by the SAME KEY, I know it’s them.

Why are public social media good for bulding keybase?

For all you crypto-fanatics, you have ever read “Applied Cryptography”? For those that are not familiar, the first 30 pages or so is algorithm after algorithm about how to execute various protocols in a secure fashion. I admit I’m no expert here, but it’s very compelling to read.

Several of these protocols discuss the value of having monotonic counters that are published publicly. Signing these counter values strengthens the message for certain protocols because someone cannot simply forge a counter that the public has already seen (or not seen). It’s the cryptographic equivalent of taking a picture while holding a public newspaper. Everyone can see the newspaper, buy the same copy, and verify the date of the picture.

Well, people that chatter over twitter and commit over github, while also blogging on their site, are, in essence, generating a public newspaper of their own. If someone were to hack my twitter account in order to subvert my keybase identify, I could A) spot malicious tweets that weren’t my own and B) tip me off to immediately delete my keybase gist and my DNS proofs. At that point, anyone that uses keybase would suddenly see the essence of a revoked identify.

What you should NEVER do with Keybase

Keybase provides a handy webpage to lookup people you “track”, craft a message, and encrypt/sign it. (And please sign & encrypt, not just encrypt!) Then you can email that message my pasting it into your email tool.

But they also offer a feature to decrypt on their website. This requires that you stage you private key on their site.

NEVER NEVER NEVER NEVER give your private key to ANYONE, no matter how convenient. Laws are very loose on data that lives on other people’s machines and what companies can be forced to turn over with a court order (especially when they are arrested for domestic violence).

Keybase may say they will keep your key triple-encrypted or whatever. But essentially, you have sort of jettisoned the point of having a public/private key pair if you let someone else hold the private key.

I’m not here to defend all aspects of keybase because A) I’m not a cryptographic expert, B) just getting started with keybase, and C) have a real job to work on. But I’m hoping that people won’t throw keybase to the curb because it’s “not gpg” or “reinventing security on your own”. Things are more detailed than that. So let’s see how this develops.


Submit a Comment

Your email address will not be published. Required fields are marked *