That makes it a lot quicker. We don't have to go digging for our devices. It's just done. It still requires the other device, still requires an authenticator app or text message and maybe a phone signal for that kind of thing. But it's a better experience now that we've added this autocompletion.
On the security side of things, we haven't changed that, it overcomes the password problem, it's less vulnerable to phishing, especially if we use the Web OTP API that is targeting it specifically to the domain you should be logging into. It doesn't fix the SMS system, though.
Then we move to security keys. You probably have a security key, especially if you have a work one, particularly if you're dealing with your work stuff, security keys are wonderful, and we can use them in the browser using the Web Authentication API. Of course Web Authentication is really just a credential management API, it's navigator credentials, it's the same thing, like I said, I love it.
In this particular case, Web Authentication API allows us to use the browser to create and store a public and private key pair, we then share the public key back to the site that you're trying to log into or register with, and that, the site can then use the public key to verify things signed using the private key. This is how we create it, we use navigator credentials create, and in this case, the server sends a challenge, a set of random bytes which we go and create, which we send in to the creation, we also have to say which domain we're on, this ties the public and private key pair to that domain specifically so it is not possible to fish a security key using real authentication. Then we put some user details and some algorithms that we can use, and this is going to set up a whole set of cryptography stuff, it's going to sign that challenge and return us both a signed challenge and the public key, which we can share back to the server, the server can then use the public key to verify the challenge and assign this key to this user.
Then when we go back to log in, as our second factor in this case, we can use navigator potentials, get with the public key, send in another challenge, and then in this case it's just going to return the signed challenge, we don't need to return the key again, it just returns a challenge that you can send back to the server, decrypt and verify using the public key, and you're through. This is really cool, because now we have this authenticator key that's acting as our two-factor authentication, it's plugged into our machine and we can, and it's just a touch normally to interact with it, so we're back to two steps, but it doesn't need an authenticator key.
This is not great for consumer kind of stuff, because we cannot expect every consumer to own a private, to own a security key. And it's tied to the key itself, so if you are logging into another device, you need to move the key to that device or register multiple keys. So, a bit of an upfront issue there, but on the security side of things, we're now in the world of public and private key cryptography. If that public key is given away in some kind of breach of the service, there's not a problem, it's a public key. All it can be used for is verifying something from the private key, so we can't leak this and it can't be phished either. As we said, we've tied the key to the domain. This isn't great. This is great. Wonderful. We have this. The only difficulty here is needing the keys themselves.
So, that's where we're getting to in this world where we're trying to remove passwords entirely. And finally, we are at that point. This has been a lot of work. I think between browsers and organizations that work on this security stuff.
Comments