Since at least 2013 I’ve been repeating something I’ve come to call “sneak’s law” (Stigler’s law of eponymy notwithstanding):
Users can not and will not securely manage* key material.
* == { generate, store, backup, transmit, authenticate }
Even users that can, such as you and I, don’t do such things: when was the last time you verified someone’s “safety number” (key fingerprint) on Signal? When was the last time you verified a PGP fingerprint that wasn’t at a signing party, or actually used the web-of-trust?
…and you’re the minority, the tiny fraction that knows that you should be authenticating keys. The vast majority don’t even know that they should. It just ain’t gonna happen.
Today I came across and old blog post from Ted Dziuba advocating for doing this very thing (avoiding the authentication of keys in the service of getting work done). Here’s a textbook example of someone who knows very well why it’s important deprioritizing key authentication in service of practicality.
Pretty much everyone carries around an HSM now. You can’t trust users to store keys long-term, but you can trust that if you give them a client certificate, they will have it for as long as they have their phone (that specific phone, that is), and they probably won’t be able to figure out how to get it out of their phone. If they have an iPhone, malware authors probably won’t be able to figure out how to get it out of their phone either.
There still need to be other backup authentication mechanisms for when they drop their phone in the toilet or out of a taxi (because not everyone is like you and I and has 3 phones), but this is at least a starting point for the day to day elimination of passwords and stupid abominations like JWT.
Jeffrey Paul is a hacker and security researcher living in Berlin and the founder of EEQJ, a consulting and research organization.