Podcast
Root Causes 231: What Is FIDO?
Hosted by
Jason Soroko
Fellow
Original broadcast date
July 6, 2022
Recent announcements about consumer passwordless authentication build on standards like FIDO and WebAuthn. In this episode we explain device-centric authentication, the FIDO Alliance, and how it all works.
Podcast transcript
Lightly edited for flow and brevity.
TCTim CallanIn a recent episode we talked about Apple’s newly announced passkey initiative which makes it possible for people, using their own devices, to log into their consumer facing websites and their supporting consumer facing website in a truly passwordless manner, using PKI as the background technology that makes that happen. We alluded to similar initiatives from Microsoft and probably others, we dropped the term WebAuthn, and so what we want to do is we wanted to back up today and talk about these initiatives, talk about FIDO and WebAuthn and what they mean and how they work.
Let’s also tease out what the FIDO2 project is, and I’d like to introduce that by talking about a number of the standards that have fallen out of that – and by falling out I mean have been produced and have been used based on the work that the FIDO Alliance has done. So FIDO is an open industry association. I believe it was created in 2013. So it’s nearly ten years old, Tim. It’s been around a while, and you may have heard of standards such as UAF or Universal Authentication Framework; a U2F, Universal Second Factor; CTAP, Client To Authentication Protocol; and then more recently we’ve heard about WebAuthn also known as the W3C, Web Authentication Protocol.
What’s interesting is that the FIDO2 project was really about saying okay, we’ve got an evolution of these standards through time. These things all kind of build on top of one another, I am definitely not going to go through the whole history of how these things, how these LEGO blocks all kind of connected together, but all those different acronyms I just rhymed off kind of led to this ecosystem now of allowing for device centric authentication using at the heart of it, public key cryptography.
TCTim CallanFIDO, it’s spelled F-I-D-O, by the way, in case you don’t know. It’s all caps. That’s an acronym. What’s that stand for, Jay.
TCTim Callanfidoalliance.org is the website there, but, go on.
With these announcements recently, Tim, I think we really are getting there. I think in the enterprise world, a lot of the centralized PKI technologies and other authenticators that are out there are – they’re good, and those are really good, and they absolutely have their purposes in controlled environments, but now we’re talking about authenticating for the general public. Authenticating where you don’t necessarily have control or know who your client is going to be in five minutes.
TCTim CallanYou have kind of a two-critical masses problem. Which is, if I have the consumer device, I’ve got to rely on the fact there’s enough support on the other side that it’s worth my while to build this capability in, and if I’m running a consumer facing service, I have to rely on the fact that there’s enough device support, that it’s worth my while to build this capability in.
TCTim CallanI mean, the user experience is great. With the big players coming now, like, all you need is Apple. Apple deciding to do this will put plenty of consumer facing services over the top, where they’ll say, that’s a significant enough percentage of my site visitors that I need to support this. Then if Microsoft is doing the same thing, between the two of them, the coverage you have is vast. If Android comes along, it’s even vaster.
What you first have to have is a user-controlled cryptographic authenticator. We are talking about Smartphone, hardware token, TPM, something containing a TPM, an embedded secure enclave, USB tokens, smart cards, NFC, Smartphones. A modern laptop which probably has a TPM if it’s running Windows, etc., etc. There’s a lot of places to put your secrets, and this is the point. This is the point. And by the way, there is a certification program. If you want to be labeled as FIDO compliant, there is a certification program out there. If you wanted to become a, say, a USB hardware token authenticator vendor, you could go off and build your design and get that certified by FIDO, and then you could say you’re a FIDO complaint authenticator. So that’s interesting. So that is the authenticator. That’s – I like to call it the thing that’s holding the keys, and isn’t it neat, Tim, that the form factors - FIDO choose to have a very vast array of form factors. That’s the one thing about FIDO that I give them a lot of credit for is they were essentially authenticator form factor agnostic, for a lack of a better term. I like that. I really like that because at that heart of it, really is about the cryptographic key pair and what’s that doing for you as a strong authenticator. Who cares where you put it, as long as it complies to, is this thing safe. Is it holding it? Is it holding the keys in a safe manner? And there’s a certain bar that you can’t go below if you want to call yourself FIDO compliant, which is a good thing.
There’s the authenticator, the thing holding the keys. And then there is the WebAuthn relying party. That’s also known as the FIDO2 Server, and so, that server which is sitting out and basically being used by – that is the thing that is being used by the web app developer. The web app developer now will utilize, the actual user agent, which would be a browser alongside a WebAuthn client. Now a WebAuthn client really is just a blob of JavaScript code that is implementing the WebAuthn API. The reason why I’m making this distinction between the browser and the client, which is essentially the code, is that you can actually have on your machine more than one WebAuthn client, Tim. In other words, it’s very important to note, using our typical parlance, you can have more than one identity. In other words, you can register your device to many different websites, not just one. Therefore, there is a separation of the browser, which might be going to all of these websites and the actual client which is registered against specific websites.
TCTim CallanSo just so I understand, are we saying that I can have more than one user on the same home computer and they’re actually going to be able to say who they are when they go into their social media site?
There’s something interesting to note here, and this has to do with the history, and that’s why I brought up the history a little bit. Because of the evolution, there’s a lot of backwards compatibility because of some of the older protocols that were used, and so, there are at least a couple of combinations of authenticator protocols. In other words, the original CTAP, used along side UTF for applications that are UTF compliant which is the older protocol, as well as CTAP2, which is a new version of that. WebAuthn can utilize either one of those, but the user experience will be a little bit different. So, that’s something to note, is when you’re using a FIDO authenticator, it really kind of depends a lot on when the web developer built the application, what standards that they chose to be compliant with and your user experience will be, probably not a ton different, but a little different depending on what the developer has chosen.
TCTim CallanLike I might need to add some extra information when I’m joining a site. I don’t want to say logging in, but if I’m using the older version, then if I’m using the newer version, something along those lines?
TCTim CallanAnd that’s controlled on the site side, on the server side.
TCTim CallanSpeaking of flexibility. I’m just thinking this through. Most of us are accessing the same online properties from multiple different devices. Sometimes I go from my phone, sometimes I go from my computer, etc. If I’m using this passkey initiative from Apple and I’m on IOS, then I’ve got a key pair that’s associated with my phone. If I’m also logging in through my Windows machine, clearly I don’t have that same key pair sitting on my Windows machine. So, FIDO can deal with this scenario as well?
A big part of that is going to be about how do you exchange your public keys. Because that’s what you have to do. In a managed PKI, it’s done for you. Typically, a good PKI will basically have the public keys registered in a directory. All I gotta do is look you up and if I’m already able to authenticate into the system, I can say, I want to send an e-mail to Tim. I want to encrypt data to Tim. I want to - something with Tim that’s encrypted. I can look your public key because it is available as part of the directory. Terrific. Well how does it work when there is no centralization? Well, it’s kind of like an opt-in, Tim. In other words, you have to say, I want to register this device. In other words, my Mac device to a particular web app, and then you might turn around and say what, I’ve also got this Windows laptop that I also want to register as a device into so I can authenticate into this web application as well.
TCTim CallanThen I would just go log in using my traditional login credentials on the new device and then when I was there, if it was a WebAuthn compliant online property, I would have the opportunity to somehow click a button that says register this device. At which point it would do a key exchange, and then it would know that I’m that person. Is that right?
And that, of course, is the secret behind using asymmetric key pairs.
TCTim CallanNobody has, all the benefits come. Nobody is sitting in the middle looking at what you’re doing. Nobody’s logging in pretending to be you. All of those things come along because at that point you’re doing key base encryption. I started all of this with a log in. That still implies a good ole fashion user name password. That still implies if somebody got my username and password, they could take a brand new system that had never been to that site, go to that site and say, I want to register this device.
TCTim CallanWell, but to get in. If I’m understanding correctly, say I go to my favorite site. I’ve never done this before. It’s my first time. I’m going to go use a WebAuthn for the first time. So I log in to Facebook. Let’s say they’re supporting it, and I say, yes, I want to – here’s my user name and password, and I want to register this device. For now on when I’m using that device, I am not going to enter a username and password. It’s going to be PKI-based. But, I can always go from another device. I throw my laptop away, and buy a new laptop. I’ve got to go create a new device, which means there’s a mechanism where I can go in and use my traditional user name and password, at least for the first time entering that site. Which means if my username and password gets stolen by a bad guy, the bad guy can just pretend they’re me, and they got a new laptop.
TCTim CallanIt’s still better. Don’t get me wrong. Because what are we doing today? I’m doing it every single time. And now, if it’s something that I have to do once and then after that one time from here on out, I’m passwordless, your exposure, your risk surface, if you will, is greatly reduced. Vastly reduced. And so, in that regard, it’s certainly an improvement. I don’t mean to imply that it’s not. I’m just trying to think through what about that particular need.
Or not play at all or, you know, what is it giving you. What is it giving you and what is it not giving you?
What you just touched on is what it is not giving you at all. So, anyway, very, very interesting topic. I’m impressed with how FIDO has put together these building blocks. I think the evolution has been good. I think the implementations have been good enough that big players like Microsoft and Apple and others, have now implemented this and it’s gonna - this is going to be finally the way that mass consumption of true passwordless probably will come about. I’m hoping and crossing my fingers. There’s still a place for really tough world gardens and other forms of authentication. Tim, I think that that’s – teasing all that out could be a set of conversations you and I have.
TCTim CallanCool. So, it sounds like this is something we definitely will return to. I think this was a great overview, Jay. Thank you very much. What is FIDO, what is WebAuthn, and an alphabet soup of other standards and, ah, always a pleasure, Jay.