11 User Authentication

This chapter covers:

  • User authentication based on passwords.
  • User authentication based on symmetric and asymmetric keys.
  • User-aided authentication and how humans can help secure connections between devices.

In the introduction of this book, I boiled cryptography down to two concepts: confidentiality and authentication. In real-world applications, confidentiality is (usually) the least of your problems, and authentication is where most of the complexity arises. I know I’ve already talked a lot about authentication throughout this book, but it can be a confusing concept as it is used with different meanings in cryptography. For this reason, this chapter starts with an introduction of what authentication really is about.

As usual with cryptography, no protocol is a panacea. For this reason, the rest of the chapter will teach you about a number of authentication protocols that are being used in a multitude of real-world applications. So let’s get started!

11.1  A recap on authentication

By now, you have heard of authentication many times, so let’s recap. You’ve seen:

  1. authentication in cryptographic primitives like message authentication codes (covered in chapter 3) and authenticated encryption (covered in chapter 4)
  2. authentication in cryptographic protocols like TLS (covered in chapter 9) and Signal (covered in chapter 10) where one or both sides of the connection can be authenticated.

11.2  User authentication, or the quest to get rid of passwords

11.2.1  One password to rule them all, single sign-on (SSO) and password managers

11.2.2  Don’t want to see their passwords? Use an asymmetric password-authenticated key exchange

11.2.3  One-time passwords aren’t really passwords, going passwordless with symmetric keys

11.2.4  Replacing Passwords With Asymmetric Keys

11.3  User-aided authentication, pairing devices using some human help

11.3.1  Pre-Shared Keys

11.3.2  Symmetric Password-Authenticated Key Exchanges with CPace

11.3.3  Was my key exchange man-in-the-middled? Just check a short authenticated string (SAS)

11.4  Summary